matlab中解方程组

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:20:48
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"就是按字母顺序的意思
欢迎楼主去这里逛逛!牛人很多的。http://bbs.matwav.com/