作业帮 > 数学 > 作业

matlab 隐函数的求法

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/05/10 04:03:02
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 隐函数的求法
将方程移项并取平方:    (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内核的版本可能存在问题.
再问: 我用实际参数代入试了一下,好多个解,纠结。。。有没有办法拟合方程来替换?太麻烦了,谢了!
再答: 1、上面说的很清楚,四次方程,对应每一组数据都有四个解,没什么好纠结的。
2、你没给出数据,我都不知道解是实数还是复数,怎么拟合?
再问: 还是excel 好用,通过excel 可以方便的拟合函数,代入matlab即可,就是麻烦点
再答: 各有各的用途。excel对于简单情况易用性不错,但就拟合而言,肯定和matlab没法比。

还有其他问题吗?