matlab 解方程问题
a=-5.0000-2.00001.00004.00001.5000-4.80000.20001.30001.00000.6000-2.5000-0.50000.9000...
a =-5.0000 -2.0000 1.0000 4.0000
1.5000 -4.8000 0.2000 1.3000
1.0000 0.6000 -2.5000 -0.5000
0.9000 -3.0000 -1.5000 -7.0000
syms x y z ;
equation1=abs(x*a(1,3))+abs(a(2,3))+a(3,3)+abs(a(4,3))-(a(1,1)+abs(1/x*a(2,1))+abs(1/x*a(3,1))+abs(1/x*a(4,1)));
equation2=abs(a(1,2)*y)+a(2,2)+abs(a(3,2))+abs(a(4,2))- (a(1,1)+abs(1/y*a(2,1))+abs(1/y*a(3,1))+abs(1/y*a(4,1)));
equation3=abs(z*a(1,4))+abs(a(2,4))+abs(a(3,4))+a(4,4)-(a(1,1)+abs(1/z*a(2,1))+abs(1/z*a(3,1))+abs(1/z*a(4,1)));
问题:用
x=solve(eval(equation1));
y=solve(eval(equation2));
z=solve(eval(equation3));
和用
[x y z]=solve(eval(equation1),eval(equation2),eval(equation3))
求解得到的答案不同。 后一个解法中含有新引入的符号变量。 不知为何?求教各位高手,非诚勿扰~~~谢谢 展开
1.5000 -4.8000 0.2000 1.3000
1.0000 0.6000 -2.5000 -0.5000
0.9000 -3.0000 -1.5000 -7.0000
syms x y z ;
equation1=abs(x*a(1,3))+abs(a(2,3))+a(3,3)+abs(a(4,3))-(a(1,1)+abs(1/x*a(2,1))+abs(1/x*a(3,1))+abs(1/x*a(4,1)));
equation2=abs(a(1,2)*y)+a(2,2)+abs(a(3,2))+abs(a(4,2))- (a(1,1)+abs(1/y*a(2,1))+abs(1/y*a(3,1))+abs(1/y*a(4,1)));
equation3=abs(z*a(1,4))+abs(a(2,4))+abs(a(3,4))+a(4,4)-(a(1,1)+abs(1/z*a(2,1))+abs(1/z*a(3,1))+abs(1/z*a(4,1)));
问题:用
x=solve(eval(equation1));
y=solve(eval(equation2));
z=solve(eval(equation3));
和用
[x y z]=solve(eval(equation1),eval(equation2),eval(equation3))
求解得到的答案不同。 后一个解法中含有新引入的符号变量。 不知为何?求教各位高手,非诚勿扰~~~谢谢 展开
1个回答
展开全部
clear
clc
close all
a =[-5.0000 -2.0000 1.0000 4.0000
1.5000 -4.8000 0.2000 1.3000
1.0000 0.6000 -2.5000 -0.5000
0.9000 -3.0000 -1.5000 -7.0000];
syms x y z
equation1=abs(x*a(1,3))+abs(a(2,3))+a(3,3)+abs(a(4,3))-(a(1,1)+abs(1/x*a(2,1))+abs(1/x*a(3,1))+abs(1/x*a(4,1)));
equation2=abs(a(1,2)*y)+a(2,2)+abs(a(3,2))+abs(a(4,2))- (a(1,1)+abs(1/y*a(2,1))+abs(1/y*a(3,1))+abs(1/y*a(4,1)));
equation3=abs(z*a(1,4))+abs(a(2,4))+abs(a(3,4))+a(4,4)-(a(1,1)+abs(1/z*a(2,1))+abs(1/z*a(3,1))+abs(1/z*a(4,1)));
x=solve(eval(equation1));
y=solve(eval(equation2));
z=solve(eval(equation3));
double(x)
double(y)
double(z)
[x0 y0 z0]=solve(equation1,equation2,equation3);
double(x0)
double(y0)
double(z0)
你可以看看结果是不是一样的
clc
close all
a =[-5.0000 -2.0000 1.0000 4.0000
1.5000 -4.8000 0.2000 1.3000
1.0000 0.6000 -2.5000 -0.5000
0.9000 -3.0000 -1.5000 -7.0000];
syms x y z
equation1=abs(x*a(1,3))+abs(a(2,3))+a(3,3)+abs(a(4,3))-(a(1,1)+abs(1/x*a(2,1))+abs(1/x*a(3,1))+abs(1/x*a(4,1)));
equation2=abs(a(1,2)*y)+a(2,2)+abs(a(3,2))+abs(a(4,2))- (a(1,1)+abs(1/y*a(2,1))+abs(1/y*a(3,1))+abs(1/y*a(4,1)));
equation3=abs(z*a(1,4))+abs(a(2,4))+abs(a(3,4))+a(4,4)-(a(1,1)+abs(1/z*a(2,1))+abs(1/z*a(3,1))+abs(1/z*a(4,1)));
x=solve(eval(equation1));
y=solve(eval(equation2));
z=solve(eval(equation3));
double(x)
double(y)
double(z)
[x0 y0 z0]=solve(equation1,equation2,equation3);
double(x0)
double(y0)
double(z0)
你可以看看结果是不是一样的
追问
结果一样的,好像我的问题出在 matlab的版本上,程序在6.5上是可以通过的,但在2010b上就出问题, 老出提示
Error using ==> mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.
换了VPA也不行,可能还是MuPAD的内核不如Maple的内核强大啊
追答
我的7.1版本用 两个都是可以通过的
这个就不知道了,可以肯定的是matlab处理符号计算不如maple好。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询