我有这组简单的方程,显然有一个解。为什么wxMaxima找不到解决方案?
(%i24) kill(all);
(%o0) done
(%i1) eq1:43=%pi/4*d*d*h;
(eq1) 43=(%pi*d^2*h)/4
(%i2) eq2:d1=d0-2*h;
(eq2) d1=d0-2*h
(%i3) eq3:d0=9;
(eq3) d0=9
(%i4) eq4:d=(d0+d1)/2;
(eq4) d=(d1+d0)/2
(%i8) float(solve([eq1,eq2,eq3,eq4],[d,d1,h]));
(%o8) []
这看起来像是解决中的一个错误。我不确定问题是什么,但是
solve
可以仅用方程 eq2
、eq3
和 eq4
找到解决方案:
(%i90) solve([eq2,eq3,eq4],[d,d1,h,d0]);
(%o90) [[d = %r3, d1 = 2 %r3 - 9, h = 9 - %r3, d0 = 9]]
然后将其代入
eq1
:
(%i91) subst(%o90, eq1);
2
%pi (9 - %r3) %r3
(%o91) 43 = ------------------
4
最后,
solve
可以产生这个三次方程的根。真的很乱,看来你想要一个数值解,所以:
(%i93) allroots(float(%o91));
(%o93) [%r3 = 3.027752659221862, %r3 = - 2.209973166894623,
%r3 = 8.18222050767276]
我们可以将这 3 个根代回
%o90
中找到的解,以获得所需的结果:
(%i94) map(lambda([r], subst(r,%o90)), %o93);
(%o94) [[[d = 3.027752659221862, d1 = - 2.944494681556276,
h = 5.972247340778138, d0 = 9]], [[d = - 2.209973166894623,
d1 = - 13.419946333789246, h = 11.209973166894624, d0 = 9]],
[[d = 8.18222050767276, d1 = 7.36444101534552, h = 0.8177794923272401,
d0 = 9]]]
Maxima 应该能够自己解决这个问题,但它不能。最后一个解决方案
[d = 8.18222050767276, d1 = 7.36444101534552, h = 0.8177794923272401, d0 = 9]
是您使用其他软件得到的答案。