主题:[讨论]请教:8次多项式方程的求根的问题
haohao517112
[专家分:0] 发布于 2008-07-23 15:47:00
我在做一个8次多项式方程的求根的题目时,出现了很大的问题:
方程为:x^8+a6*x^6+a4*x^4+a2*x^2+a0=0,方程只含有偶次方。
求解的程序为:v=[1,0,a6,0,a4,0,a2,0,a0];
r1=roots(v);
为了更精确一些,我还用了个命令:r=vpa(r1,20),取到了小数点后的20位。
但是当我把这些根代入到原来的八次方程时,方程居然不等于零!而且误差非常大。我把其中的一个根代入后,居然等于三百多,与0的差距也太大了!!
这些根对于我后继的论文程序非常重要,请各位高手赐教!!
回复列表 (共3个回复)
沙发
qibbxxt [专家分:350] 发布于 2008-07-24 17:42:00
你可以用fsolve试一下
板凳
haohao517112 [专家分:0] 发布于 2008-07-25 09:05:00
w=91
R=0.84;
p=7840;
A=6.597344573e-3;
G=76.92e9;
E=200e9;
Iss=1.4844e-6;
k=1/0.84;
Ip=9.5661e-6;
Ims=0.01164;
D=0.45498928086472867591527938654393e-5;
Imp=7.5e-2;
T=0.57658124385444062783643015569641e-9;
L=-350040.6101;
a1=R^2*p*w^2/G;
b1=R^2*G*A/(E*Iss);
b2=(R^2*G*A+G*Ip)/(E*Iss);
b3=R^2*p*w^2/E;
b4=1+(G*Ip/(E*Iss));
b5=G*D/(E*Iss);
c1=1+(E*Iss/(G*Ip));
c2=E*Iss/(G*Ip);
c3=R^2*p*w^2/G;
c4=D/Ip;
d1=R^2*G*D/(E*T);
d2=R^2*G*D/(E*T);
d3=R^2*L/(E*T);
d4=R^2*w^2*p/E;
A6=a1+b1-b2+b3+b4*c1-c2+c3+R*c4*d2+d3+d4;
A4=R*(-b5*d2+b4*c4*d1+b5*c1*d2)+b2*(c2-c3-R*c4*d2-d3-d4)+(b4*c1-c2+c3)*(d3+d4)+b1*(-c2+c3+R*c4*d2+d3+d4)+b3*(-c2+c3+R*c4*d2+d3+d4)+a1*(-b2+b3+b4*c1-c2+c3+R*c4*d2+d3+d4);
A2=(c2-c3)*(R*b5*d1-(b1-b2+b3)*(d3+d4))+a1*(R*(-b5*d1+b4*c4*d1+b5*c1*d2)+b2*(c2-c3-R*c4*d2-d3-d4)+(b4*c1-c2+c3)*(d3+d4)+b3*(-c2+c3+R*c4*d2+d3+d4));
A0=(c2-c3)*a1*(R*b5*d1+(b2-b3)*(d3-d4));
v=[1 0 A6 0 A4 0 A2 0 A0];
r=vpa(roots(v),10)
算出来的根
r =
-35.86461397,35.86461397
.3885780586e-15+1.408053178*i, .3885780586e-15-1.408053178*i
-.4917816418+.5014480776*i, -.4917816418-.5014480776*i
.4917816418+.5014480776*i,
.4917816418-.5014480776*i
验证
w=91
R=0.84;
p=7840;
A=6.597344573e-3;
G=76.92e9;
E=200e9;
Iss=1.4844e-6;
k=1/0.84;
Ip=9.5661e-6;
Ims=0.01164;
D=0.45498928086472867591527938654393e-5;
Imp=7.5e-2;
T=0.57658124385444062783643015569641e-9;
L=-350040.6101;
a1=R^2*p*w^2/G;
b1=R^2*G*A/(E*Iss);
b2=(R^2*G*A+G*Ip)/(E*Iss);
b3=R^2*p*w^2/E;
b4=1+(G*Ip/(E*Iss));
b5=G*D/(E*Iss);
c1=1+(E*Iss/(G*Ip));
c2=E*Iss/(G*Ip);
c3=R^2*p*w^2/G;
c4=D/Ip;
d1=R^2*G*D/(E*T);
d2=R^2*G*D/(E*T);
d3=R^2*L/(E*T);
d4=R^2*w^2*p/E;
A6=a1+b1-b2+b3+b4*c1-c2+c3+R*c4*d2+d3+d4;
A4=R*(-b5*d2+b4*c4*d1+b5*c1*d2)+b2*(c2-c3-R*c4*d2-d3-d4)+(b4*c1-c2+c3)*(d3+d4)+b1*(-c2+c3+R*c4*d2+d3+d4)+b3*(-c2+c3+R*c4*d2+d3+d4)+a1*(-b2+b3+b4*c1-c2+c3+R*c4*d2+d3+d4);
A2=(c2-c3)*(R*b5*d1-(b1-b2+b3)*(d3+d4))+a1*(R*(-b5*d1+b4*c4*d1+b5*c1*d2)+b2*(c2-c3-R*c4*d2-d3-d4)+(b4*c1-c2+c3)*(d3+d4)+b3*(-c2+c3+R*c4*d2+d3+d4));
A0=(c2-c3)*a1*(R*b5*d1+(b2-b3)*(d3-d4));
r=.4917816418+.5014480776*i %就是把上面算的那八个根代入
v=vpa(r^8+A6*r^6+A4*r^4+A2*r^2+A0,10)
结果:r =-35.8646,v =417.8950 (这个误差特别大!)
r =35.8646,v =417.8950
r =.3885780586e-15+1.408053178*i,v =.60879045804540510289e-5-.58305882162547633149e-11*i
r =-0.4918 + 0.5014i,v =-.65965878093265928328e-7-.19795436401182087138e-6*i
r =0.4918 + 0.5014i,v =-.65965878093265928328e-7+.19795436401182087138e-6*i
真的很感谢qibbxxt,你说的那个命令我也试过了,结果还不好。
现在我把多项式的系数发出来,大家看看是不是因为系数的问题,谢谢了!
3 楼
1985625he [专家分:0] 发布于 2008-07-28 20:09:00
做个记号,也关注下
我来回复