matlab中解方程组

问题描述:

matlab中解方程组
syms x y z t
[x,y,z,t]=solve(2*x+3*y-z+t-2,5*x+y+z-t-13,x-y+2*z+2*t-3,3*x+2*y+2*z+9*t+3)
结果:x =
-2
y =
1
z =
2
t =
4
结果是不对的.做了如下调整:
syms x y z t
[t,x,y,z]=solve(2*x+3*y-z+t-2,5*x+y+z-t-13,x-y+2*z+2*t-3,3*x+2*y+2*z+9*t+3)
结果:
t =
-2
x =
1
y =
2
z =
4
这是正确的.
这是为什么?
感谢rocwoods的解答.不过,既然是你说的那样,我想知道,如何确定未知数的位置呢?莫非是按照英文字母的顺序?请rocwoods能再次解答.我已将分数提高到30了.

是这么回事.solve函数求解方程组时,函数输出结果,也就是方程组的未知数是有一定顺序的.你的例子一共有4个未知数,solve求解出来后[x1,x2,x4,x4]存放的分别是t,x,y,z.如果你这么调用[t,x,y,z]=solve(2*x+3*y-z+t-2,5*x+y+z-t-13,x-y+2*z+2*t-3,3*x+2*y+2*z+9*t+3)
,t存放t,x存放x,y存放y,z存放z,当然和实际结果一样.
可是如果这样[x,y,z,t]=solve(2*x+3*y-z+t-2,5*x+y+z-t-13,x-y+2*z+2*t-3,3*x+2*y+2*z+9*t+3),那么x存放的实际就是t了,y存放x等等
楼主说对了,的确是按照英文字母的顺序.以下是MATLAB中的帮助信息:
For a system of equations and an equal number of outputs,the results are sorted alphabetically and assigned to the outputs.
"alphabetically"就是按字母顺序的意思