matlab 隐函数的求法原始方程为:a-x-sqrt ( (r-z*cot(c) )^2 - (sqrt(R^2-z^2)-b)^2 )=0 ,除了x,z,其余都是已知参数,其中x为自变量,z为因变量,想求出每个x,对应的一个z值,用matlab solve >> syms a b r R z x;>> solve('a

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 20:52:03
matlab 隐函数的求法原始方程为:a-x-sqrt ( (r-z*cot(c) )^2 - (sqrt(R^2-z^2)-b)^2 )=0 ,除了x,z,其余都是已知参数,其中x为自变量,z为因变量,想求出每个x,对应的一个z值,用matlab solve >> syms a b r R z x;>> solve('a

matlab 隐函数的求法原始方程为:a-x-sqrt ( (r-z*cot(c) )^2 - (sqrt(R^2-z^2)-b)^2 )=0 ,除了x,z,其余都是已知参数,其中x为自变量,z为因变量,想求出每个x,对应的一个z值,用matlab solve >> syms a b r R z x;>> solve('a
matlab 隐函数的求法
原始方程为:a-x-sqrt ( (r-z*cot(c) )^2 - (sqrt(R^2-z^2)-b)^2 )=0 ,除了x,z,其余都是已知参数,其中x为自变量,z为因变量,想求出每个x,对应的一个z值,用matlab solve
>> syms a b r R z x;
>> solve('a-x-sqrt((r-z)^2-(-b+sqrt(R*R-z*z))^2)','z')
点了确定,matlab却一直无结果出来,也没报错,也不能进行计算其他东西.请帮忙看看有没有别的方法求出该函数,

matlab 隐函数的求法原始方程为:a-x-sqrt ( (r-z*cot(c) )^2 - (sqrt(R^2-z^2)-b)^2 )=0 ,除了x,z,其余都是已知参数,其中x为自变量,z为因变量,想求出每个x,对应的一个z值,用matlab solve >> syms a b r R z x;>> solve('a

将方程移项并取平方:

    (r-z)^2-(-b+sqrt(R*R-z*z))^2 = (a-x)^2

移项并展开:

    b^2 + (R^2-z^2) - 2*b*sqrt(R*R-z*z) = (r-z)^2 - (a-x)^2

再移项,取平方:

    (b^2 + (R^2-z^2) - (r-z)^2 + (a-x)^2)^2 = 4*b^2*(R*R-z*z)

 

由此得到的是一个关于z的四次代数方程:

>> collect(sym('(b^2 + (R^2-z^2) - (r-z)^2 + (a-x)^2)^2 - 4*b^2*(R*R-z*z)'),sym('z')) 
ans = 
4*z^4-8*r*z^3+(-4*R^2-4*(a-x)^2+8*r^2)*z^2+4*(b^2+R^2+(a-x)^2-r^2)*r*z+(b^2+R^2+(a-x)^2-r^2)^2-4*R^2*b^2

可以用solve函数求

>> solve('(b^2 + (R^2-z^2) - (r-z)^2 + (a-x)^2)^2 - 4*b^2*(R*R-z*z)','z')

但得到的四个根表达式都非常复杂,以至于在命令窗口中无法完整显示.如果已知参数给出具体值来,表达式可以加以简化(可考虑使用vpa函数).

 

另,对于使用Maple作为符号运算内核的MATLAB版本(2008a或更早),按照楼主的做法可以得到相同的结果(前面那句 syms定义不需要):

>> solve('a-x-sqrt((r-z)^2-(-b+sqrt(R*R-z*z))^2)','z')

但对于MuPad内核的版本可能存在问题.