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) 展开
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) 展开
4个回答
展开全部
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
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
展开全部
因为涉及到多位小数或者不能整除的情况导致系统自动有个保留一定位数的情况从而导致结果有偏差
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果想减少误差的话就提高你数据的精确度试试,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算数目太大,系统省略了小数尾数,这种情况我也碰到过,换个精确点的东西算就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询