欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matlab与mathematica对比(solve函数)

程序员文章站 2022-04-01 10:25:16
...

1.问题缘起

今天帮别人算了一个方程组求解,大概是这样的一个式子:matlab与mathematica对比(solve函数),求解k,我分别用matlab与mathematica求解,源代码如下:

##matlab的源代码
syms n Xa Xr k Xf Za Zr Zf L1 L0 k;
ans1 = solve(n^2*(Xa+Xr*k-Xf)^2+n^2*(Za+Zr*k-Zf)^2-(k^2*n^2+2*k*n*(L1-L0)+(L1-L0)^2)==0,k);
ans11=ans1(1,1);
ans12=ans1(2,1);

##mathematica的源代码
Solve[n^2 * (XA + XR * k - XF)^2 + n^2 * (ZA + ZR*k - ZF)^2 - (k^2*n^2 +  2*k*n*(L1 - L0) + (L1 - L0)^2) == 0, k]

结果,两个软件完全给出了不同的答案。

##mathematica的答案

{{k -> (1/(2 (-n^2 + n^2 XR^2 + n^2 ZR^2)))(-2 L0 n + 2 L1 n - 2 n^2 XA XR + 2 n^2 XF XR - 2 n^2 ZA ZR + 2 n^2 ZF ZR - \[Sqrt]((2 L0 n - 2 L1 n + 2 n^2 XA XR - 2 n^2 XF XR + 2 n^2 ZA ZR - 2 n^2 ZF ZR)^2 - 4 (-L0^2 + 2 L0 L1 - L1^2 + n^2 XA^2 - 2 n^2 XA XF + n^2 XF^2 + n^2 ZA^2 - 2 n^2 ZA ZF + n^2 ZF^2) (-n^2 + n^2 XR^2 + n^2 ZR^2)))}, 

{k -> (1/(2 (-n^2 + n^2 XR^2 + n^2 ZR^2)))(-2 L0 n + 2 L1 n - 2 n^2 XA XR + 2 n^2 XF XR - 2 n^2 ZA ZR + 2 n^2 ZF ZR + \[Sqrt]((2 L0 n - 2 L1 n + 2 n^2 XA XR - 2 n^2 XF XR + 2 n^2 ZA ZR - 2 n^2 ZF ZR)^2 - 4 (-L0^2 + 2 L0 L1 - L1^2 + n^2 XA^2 - 2 n^2 XA XF + n^2 XF^2 + n^2 ZA^2 - 2 n^2 ZA ZF + n^2 ZF^2) (-n^2 + n^2 XR^2 + n^2 ZR^2)))}}

##matlab的答案
k = (L1 - L0 + (L0^2*Xr^2 + L0^2*Zr^2 - 2*L0*L1*Xr^2 - 2*L0*L1*Zr^2 + 2*L0*Xa*Xr*n - 2*L0*Xf*Xr*n + 2*L0*Za*Zr*n - 2*L0*Zf*Zr*n + L1^2*Xr^2 + L1^2*Zr^2 - 2*L1*Xa*Xr*n + 2*L1*Xf*Xr*n - 2*L1*Za*Zr*n + 2*L1*Zf*Zr*n - Xa^2*Zr^2*n^2 + Xa^2*n^2 + 2*Xa*Xf*Zr^2*n^2 - 2*Xa*Xf*n^2 + 2*Xa*Xr*Za*Zr*n^2 - 2*Xa*Xr*Zf*Zr*n^2 - Xf^2*Zr^2*n^2 + Xf^2*n^2 - 2*Xf*Xr*Za*Zr*n^2 + 2*Xf*Xr*Zf*Zr*n^2 - Xr^2*Za^2*n^2 + 2*Xr^2*Za*Zf*n^2 - Xr^2*Zf^2*n^2 + Za^2*n^2 - 2*Za*Zf*n^2 + Zf^2*n^2)^(1/2) - Xa*Xr*n + Xf*Xr*n - Za*Zr*n + Zf*Zr*n)/(n*Xr^2 + n*Zr^2 - n)

k=-(L0 - L1 + (L0^2*Xr^2 + L0^2*Zr^2 - 2*L0*L1*Xr^2 - 2*L0*L1*Zr^2 + 2*L0*Xa*Xr*n - 2*L0*Xf*Xr*n + 2*L0*Za*Zr*n - 2*L0*Zf*Zr*n + L1^2*Xr^2 + L1^2*Zr^2 - 2*L1*Xa*Xr*n + 2*L1*Xf*Xr*n - 2*L1*Za*Zr*n + 2*L1*Zf*Zr*n - Xa^2*Zr^2*n^2 + Xa^2*n^2 + 2*Xa*Xf*Zr^2*n^2 - 2*Xa*Xf*n^2 + 2*Xa*Xr*Za*Zr*n^2 - 2*Xa*Xr*Zf*Zr*n^2 - Xf^2*Zr^2*n^2 + Xf^2*n^2 - 2*Xf*Xr*Za*Zr*n^2 + 2*Xf*Xr*Zf*Zr*n^2 - Xr^2*Za^2*n^2 + 2*Xr^2*Za*Zf*n^2 - Xr^2*Zf^2*n^2 + Za^2*n^2 - 2*Za*Zf*n^2 + Zf^2*n^2)^(1/2) + Xa*Xr*n - Xf*Xr*n + Za*Zr*n - Zf*Zr*n)/(n*Xr^2 + n*Zr^2 - n)
 

2.参考链接

http://www.360doc.com/content/18/0729/21/99071_774261031.shtml 

http://muchong.com/t-9473456-1-authorid-3305534

https://zhidao.baidu.com/question/129745738.html

https://www.zhihu.com/question/24067444

3.个人想法

matlab与mathematica对比(solve函数)

其中有个大神很直接指出了这个,但是博主确实不敢托大深入考究,毕竟对这个了解肯定没那么深入。不过看大家都这么说:“matlab对矩阵支持有多好(相对mmtc)对符号解的支持就有多渣(相对mmtc)。

从这个方程求解的结果来看,确实有种这种感觉。

不管怎么样,还是要看处理的问题选择合适的工具。

相关标签: 数学