matlab 解方程组结果不准

clearallt=200;xt=1;zt=1;a=1;b=1;c=-2;M=5.976*10^27;G=6.67*10^(-11);r=4.2238*10^7;n=sq... clear all
t=200;
xt=1;
zt=1;
a=1;
b=1;
c=-2;
M=5.976*10^27;
G=6.67*10^(-11);
r=4.2238*10^7;
n=sqrt(M*G/r^3)
syms x0 z0 x00 z00
eq1=sqrt((8*a*c/b^2+8*a*(4*z0+2*x00/n)/b+...
3*(4*z0+2*x00/n)*n*t-2*(x0-2*z00/n))^2-...
4*((2*a/b)^2+1)*(((x0-2*z00/n)-1.5*(4*z0+2*x00/n)*n*t)^2+...
4*(4*z0+2*x00/n+c/b)^2-4*a^2));
eq2=xt-(((4*x00)/n+6*z0)*sin(n*t)+(2/n)*z00*cos(n*t)-3*(x00+2*n*z0)*t+(x0-2*z00/(n)));
eq3=zt-((z00/n)*sin(n*t)-((2*x00/n)+3*z0)*cos(n*t)+4*z0+2*x00/n);
eq4=4*z0+2*x00/n-2;
[x0,z0,x00,z00]=solve(eq1,eq2,eq3,eq4,x0,z0,x00,z00);
x0=double(x0)
z0=double(z0)
x00=double(x00)
z00=double(z00)

运行结果:
n =

0.0023

x0 =

1.6206
1.1557

z0 =

-0.0040
0.0005

x00 =

1.3783
0.3856

z00 =

-0.0023
0.0023

我把结果带回后两个方程,怎么哪个都不成立??

>> 4*z0+2*x00/n-2

ans =

1.0e+003 *

1.1966
0.3334

>> 4*z0(1)+2*x00/n(1)-2

ans =

1.0e+003 *

1.1966
0.3333

>> zt-((z00(2)/n)*sin(n*t)-((2*x00(2)/n)+3*z0(2))*cos(n*t)+4*z0(2)+2*x00(2)/n)

ans =

-34.3038
谢谢 化学工程 别人告诉我的 和你说的一样 得调换变量顺序[x0,x00,z0,z00]=solve(eq1,eq2,eq3,eq4,x0,x00,z0,z00)

现在还有一个问题,我现在要用3个方程,解四个变量,想以z0为基,x0、x00、z00都用z0表示,不过现在怎么弄都是用z00表示,还请指教!

clc
clear all
t=600;
xt=2;
zt=2;
a=2;
b=1;
c=-6;%(x,z)=(2,2) k=-1 2x+y-6=0
M=5.976*10^27;
G=6.67*10^(-11);
r=4.2238*10^7;
n=sqrt(M*G/r^3)
syms z0 z00 x0 x00;
eq1=b*((3*n*z0+2*x00)*sin(n*t)+z00*cos(n*t))+a*((4*x00+6*n*z0)*cos(n*t)-...
2*z00*sin(n*t)-3*(x00+2*n*z0));
eq2=xt-(((4*x00)/n+6*z0)*sin(n*t)+(2/n)*z00*cos(n*t)-3*(x00+2*n*z0)*t+(x0-2*z00/(n)));
eq3=zt-((z00/n)*sin(n*t)-((2*x00/n)+3*z0)*cos(n*t)+4*z0+2*x00/n);

[x00,x0,z00,z0]=solve(eq1,eq2,eq3,x00,x0,z00,z0)
展开
 我来答
化学工程
2009-08-13 · TA获得超过8900个赞
知道大有可为答主
回答量:2212
采纳率:80%
帮助的人:3336万
展开全部
solve的输出是有顺序的,按照ascii顺序。

clear all
t=200;
xt=1;
zt=1;
a=1;
b=1;
c=-2;
M=5.976*10^27;
G=6.67*10^(-11);
r=4.2238*10^7;
n=sqrt(M*G/r^3)
syms x0 z0 x00 z00
eq1=sqrt((8*a*c/b^2+8*a*(4*z0+2*x00/n)/b+...
3*(4*z0+2*x00/n)*n*t-2*(x0-2*z00/n))^2-...
4*((2*a/b)^2+1)*(((x0-2*z00/n)-1.5*(4*z0+2*x00/n)*n*t)^2+...
4*(4*z0+2*x00/n+c/b)^2-4*a^2));
eq2=xt-(((4*x00)/n+6*z0)*sin(n*t)+(2/n)*z00*cos(n*t)-3*(x00+2*n*z0)*t+(x0-2*z00/(n)));
eq3=zt-((z00/n)*sin(n*t)-((2*x00/n)+3*z0)*cos(n*t)+4*z0+2*x00/n);
eq4=4*z0+2*x00/n-2;
solve(eq1,eq2,eq3,eq4)%改动部分
[x0,x00,z0,z00]=solve(eq1,eq2,eq3,eq4);%改动部分
x0=double(x0)
z0=double(z0)
x00=double(x00)
z00=double(z00)
test1=subs(eq1)
test2=subs(eq2)
test3=subs(eq3)
test4=subs(eq4)

结果:
n =

0.0023

ans =

x0: [2x1 sym]
x00: [2x1 sym]
z0: [2x1 sym]
z00: [2x1 sym]

x0 =

1.6206
1.1557

z0 =

1.3783
0.3856

x00 =

-0.0040
0.0005

z00 =

-0.0023
0.0023

test1 =

1.0e-006 *

0.1012
0.0000 + 0.1012i

test2 =

1.0e-015 *

-0.2220
0

test3 =

1.0e-015 *

0
-0.1110

test4 =

1.0e-015 *

0.4441
0

补充:
clc
clear all
t=600;
xt=2;
zt=2;
a=2;
b=1;
c=-6;%(x,z)=(2,2) k=-1 2x+y-6=0
M=5.976*10^27;
G=6.67*10^(-11);
r=4.2238*10^7;
n=sqrt(M*G/r^3)
syms z0 z00 x0 x00;
eq1=b*((3*n*z0+2*x00)*sin(n*t)+z00*cos(n*t))+a*((4*x00+6*n*z0)*cos(n*t)-...
2*z00*sin(n*t)-3*(x00+2*n*z0));
eq2=xt-(((4*x00)/n+6*z0)*sin(n*t)+(2/n)*z00*cos(n*t)-3*(x00+2*n*z0)*t+(x0-2*z00/(n)));
eq3=zt-((z00/n)*sin(n*t)-((2*x00/n)+3*z0)*cos(n*t)+4*z0+2*x00/n);

[x0,x00,z00]=solve(eq1,eq2,eq3,'x0,x00,z00')
x0=vpa(x0,6)
x00=vpa(x00,6)
z00=vpa(z00,6)

结果:
x0 =

.165411+.963569*z0

x00 =

-.395818e-2*z0+.479668e-2

z00 =

-.323246e-2-.150346e-2*z0
背锅侠Daddy
2009-08-13 · TA获得超过475个赞
知道小有建树答主
回答量:874
采纳率:0%
帮助的人:407万
展开全部
因为涉及到多位小数或者不能整除的情况导致系统自动有个保留一定位数的情况从而导致结果有偏差
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shy253
2009-08-13 · TA获得超过574个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:271万
展开全部
如果想减少误差的话就提高你数据的精确度试试,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红沙滚滚
2009-08-13 · TA获得超过534个赞
知道答主
回答量:84
采纳率:0%
帮助的人:44.8万
展开全部
计算数目太大,系统省略了小数尾数,这种情况我也碰到过,换个精确点的东西算就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式