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

2025-06-26 22:06:02
推荐回答(2个)
回答1:

由于方程有多个的解,使用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')

回答2:

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

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