matlab与mathematica对比(solve函数)
程序员文章站
2022-04-01 10:25:16
...
1.问题缘起
今天帮别人算了一个方程组求解,大概是这样的一个式子:,求解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对矩阵支持有多好(相对mmtc)对符号解的支持就有多渣(相对mmtc)。”
从这个方程求解的结果来看,确实有种这种感觉。
不管怎么样,还是要看处理的问题选择合适的工具。
推荐阅读
-
对Python3中的print函数以及与python2的对比分析
-
php中随机函数mt_rand()与rand()性能对比分析
-
MySQL数据库中函数CONCAT与GROUP_CONCAT对比分析
-
Python学习笔记——主要函数及基本使用(与C的对比)
-
MATLAB与C语言对比实例:随机数生成
-
ES2015箭头函数与普通函数对比理解
-
Matlab处理气象数据(十六)城市与非城市区域的对比
-
C语言工作笔记-对函数指针的进一步认识(与回调函数结合使用,并且对比C++的回调)
-
Pytorch自动求导函数详解流程以及与TensorFlow搭建网络的对比
-
SQLServer与Oracle常用函数实例对比汇总