为什么wxMaxima没有解决方案

问题描述 投票:0回答:1

我有这组简单的方程,显然有一个解。为什么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)   []

我最喜欢的方程组求解器 MERCURY 也是如此

solver maxima
1个回答
0
投票

这看起来像是解决中的一个错误。我不确定问题是什么,但是

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]
是您使用其他软件得到的答案。

© www.soinside.com 2019 - 2024. All rights reserved.