大家好,乐天来为大家解答以下的问题,关于matlab solver,matlab solve这个很多人还不知道,现在让我们一起来看看吧!
1、matlab的运行结果是: 0 -8.0000 -8.5000 - 0.8660i -0.0000 + 0.0000i -8.5000 + 0.8660i -0.0000 - 0.0000i上面的结果自身就是不正确的,我分析的原因是:matlab先求出了解析解,接着代入系数值。
2、由于matlab运算精度低,系数又太多,公式极其复杂。
3、从而导致结果失真过于严重mathematica运行结果显示:mathematica先求出解析解,接着精确代入系数值计算,也出现了数量级为-16的误差。
4、有部分失真,但是这个失真很容易发现,而得到修正mathematica执行消去y的运算结果显示原方程组只能由三组解借助mathematica的结果分析。
5、可以得出:matlab的运行结果中,并没有丢失一组解,而是解的失真太为严重达到了0.1,可以用下面的程序执行数值解:function s=sss(p) syms x ya=p(1); b=p(2); c=p(3); d=p(4); e=p(5); f=p(6); g=p(7);a1=simplify(c*x^2+c*x*y+(c*g-c*a-c*b+1)*x-a-e);a2=simplify(d*y^2+d*x*y+(d*g-d*a-d*b+1)*y-b-f); [x0,y0]=solve(a1,a2);s=[x0 y0] 这个程序运行速度快且结果准确。
6、结果为[ 0, 0][ 0, -8][ -13, 0]注:可以看到新的程序输出结果是矩阵形式,而老程序的输出不是,问题很可能和eval的使用有关.。
本文分享完毕,希望对大家有所帮助。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!