matlab求方程数值解,最后得出结果总是有问题,请问有人帮我看一下吗,谢谢了

syms x1 x2 x3 y1 y2 y3 z1 z2 z3s=[2,4,2^0.5;4,2,2^0.5;2,4,2^0.5];[a,b,c,d]=solve('a*x1+b*y1+c*z1=d','a*x2+b*y2+c*z2=d','a*x3+b*y3+c*z3=d','a^2+b^2+c^2=1','a','b','c','d');subs(a,{x1,x2,x3,y1,y2,y3,z1,z2,z3},{s(1,1),s(2,1),s(3,1),s(1,2),s(2,2),s(3,2),s(1,3),s(2,3),s(3,3)})subs(b,{x1,x2,x3,y1,y2,y3,z1,z2,z3},{s(1,1),s(2,1),s(3,1),s(1,2),s(2,2),s(3,2),s(1,3),s(2,3),s(3,3)})subs(c,{x1,x2,x3,y1,y2,y3,z1,z2,z3},{s(1,1),s(2,1),s(3,1),s(1,2),s(2,2),s(3,2),s(1,3),s(2,3),s(3,3)})

由于方程有多个的解,使用subs()无法用s数组值替代 x1、 x2、 x3、 y1、 y2、 y3、 z1、 z2、 z3的值。所以最有效的方法是,直接将s数组值赋值给 x1、 x2、 x3、 y1、 y2、 y3、 z1、 z2、 z3。按这个要求更改,可以得到a、b、c、d的解。

syms a b c d

s=[2,4,2^0.5;4,2,2^0.5;2,4,2^0.5];

x1=s(1,1); x2=s(2,1); x3=s(3,1); y1=s(1,2); y2=s(2,2); y3=s(3,2); z=s(1,3); z2=s(2,3); z3=s(3,3);

[a,b,c,d]=solve(a*x1+b*y1+c*z1==d,a*x2+b*y2+c*z2==d,a*x3+b*y3+c*z3==d,a^2+b^2+c^2==1,'a','b','c','d')

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-02-03

是给出的s值有问题,运算中出现了被0除的错误。

修改s如下,运行未报错:

本回答被提问者采纳
相似回答