- 积分
- 7
- 注册时间
- 2002-9-10
- 仿真币
-
- 最后登录
- 1970-1-1
|
原帖位置:http://www.matlabsky.com/forum-viewthread-tid-3789-extra-%26page%3D1-page-1.html
问题描述:求以下方程的全部解:
f(g)=-140.793343730037-4979547.88364553*g-66100264505.6573*g^2+389972903985224*g^3+862777500000000000*g^4-19782400000000000*g^5-4151633333333.33*g^6+9531285714285.71*g^7-237271071428.571*g^8+3126865079.36508*g^9-25326190.4761905*g^10+126654.545454545*g^11+126654.545454545*g^12+0.448194835664336*g^13;
这是个多项式方程,Forcal对方程形式没有要求,也不认识是不是多项式,但目前只能求得全部实数解。代码:
- f(g)=-140.793343730037-4979547.88364553*g-66100264505.6573*g^2+389972903985224*g^3+862777500000000000*g^4-19782400000000000*g^5-4151633333333.33*g^6+9531285714285.71*g^7-237271071428.571*g^8+3126865079.36508*g^9-25326190.4761905*g^10+126654.545454545*g^11+126654.545454545*g^12+0.448194835664336*g^13;
- fcopt::isolve[HFor("f")];
复制代码
结果(每行前一个数是解,后一个是误差):
-282587.1403741199 0.
-5.695893318432271e-004 8.315907065430656e-009
1.79956672877141e-004 -1.078234176138977e-010
matlab和maple可用多项式解法求得复数域内的全部解。
matlab代码:
- >>expr=sym('-140.793343730037-4979547.88364553*g-66100264505.6573*g^2+389972903985224*g^3+862777500000000000*g^4-19782400000000000*g^5-4151633333333.33*g^6+-9531285714285.71*g^7-237271071428.571*g^8+3126865079.36508*g^9-25326190.4761905*g^10+-126654.545454545*g^11+126654.545454545*g^12+0.448194835664336*g^13');
- >>p=sym2poly(expr);
- >>roots(p)
- ans =
- 1.0e+005 *
- -2.825891403741351
- -0.000425366260653 + 0.000158382367172i
- -0.000425366260653 - 0.000158382367172i
- -0.000087958432851 + 0.000371861708019i
- -0.000087958432851 - 0.000371861708019i
- 0.000165990822566 + 0.000401197797141i
- 0.000165990822566 - 0.000401197797141i
- 0.000288958204839
- 0.000415706942420
- -0.000000005695893
- 0.000000001799567
- -0.000000000311790 + 0.000000000248976i
- -0.000000000311790 - 0.000000000248976i
复制代码
maple结果:
- 0.0001799566729,
- 33.68591029 + 12.38430963 I,
- 18.66814213 + 32.72325227 I,
- -10.53709954 + 43.27123834 I,
- -0.00003117898620 + 0.00002489764282 I,
- -42.31708262 + 9.374009122 I,
- -0.0005695893318, -282587.1404,
- -42.31708262 - 9.374009122 I,
- -0.00003117898620 - 0.00002489764282 I,
- -10.53709954 - 43.27123834 I,
- 18.66814213 - 32.72325227 I,
- 33.68591029 - 12.38430963 I
复制代码
验证了一下matlab和maple的实根,复根没有验证。
-2.825891403741351 误差大,不是正解,与Forcal和maple结果一致
0.000288958204839 误差大,不是正解
0.000415706942420 误差大,不是正解
-0.000000005695893 误差小,是正解,与Forcal和maple结果一致
0.000000001799567 误差小,是正解,与Forcal和maple结果一致
令人费解的是,matlab、maple和Forcal用不同的算法都求得了一个错误的解:-2.825891403741351
我查看了代码,依然没有找到错误,求解释? |
|