matlab 二元复杂 隐函数的求法

原始方程为:a-x-sqrt((r-z*cot(c))^2-(sqrt(R^2-z^2)-b)^2)=0,除了x,z,其余都是已知参数,其中x为自变量,z为因变量,想求出... 原始方程为: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却一直无结果出来,也没报错,也不能进行计算其他东西。。。请帮忙看看有没有别的方法求出该函数,谢了!
展开
 我来答
tianxiawulang
2014-07-20 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2669万
展开全部

将方程移项并取平方:

    (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、你没给出数据,我都不知道解是实数还是复数,怎么拟合?
东莞大凡
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间... 点击进入详情页
本回答由东莞大凡提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式