Maxima解不了一个简单方程?

Maxima解不了一个简单方程?

应该是bug了。

下面这个方程长得和你给的差不多,却能给出正确的解答(可能是因为它的解是有理数):

下面这个方程和你给的有同样的解,却也能给出正确的解答:

你给的这个方程却偏偏解不出来:

和它长得差不多,解也不是有理数的方程也解不出来:

===============================

Mathematica 能给出正确的解答:

SymPy 也能给出正确的解答:

===============================

详细分析:

在 maxima 中输入

可以给出关于 solve 的帮助,帮助中介绍了 solve 的算法。相关段落如下:

按这里的说法,它实际上是调用了 algsys 函数。于是我试了

果然也是无解。再试试

果然给出了一对有理数解。

于是我再看 algsys 的帮助。里边也介绍了它的算法。于是我决定跟着它所说的算法试一试。

(以下的引文均出自 algsys 的帮助)

第一步是因式分解。这两个方程都没法因式分解,跳过。

第二步用到了结式。这是解高次多项式方程组的标准的方法。于是我试了:

结果很正常。这时就只剩下 y 一个变量了,而且也只有这么一个方程。

然后是第三步(原文比较长,我省去了无关的部分):

这里好长,不过也不是全部都与我们的问题有关。现在我们只剩下 y 一个变量,于是来到了这里所说的 "univariate" 的情形。而且这时的方程()是二次(quadratic)的。它说要调用 solve 函数。于是我试了:

它给出了正确的解!

再来看第四步:

这里没说清楚到底把第三步的答案代入到哪个方程。于是我把 y 的第一个解代入原来的第一个方程试试:

然后回到第一步。

还是没法因式分解。这里调用 factor 函数的结果只是整理了一下而已。

但要注意的是,如果 x 有有理解的话,这里是可以分解因式的!

然后又是第二步:

呃……结式为0(本来也应该为0),没办法继续下去了。

于是就……解不出来了……

但如果是那个方程,由于有有理解,在回到第一步的时候,是可以因式分解出一次的式子,因此就还能解出来。至于这个方程,在回到第一步的时候,虽然也没法因式分解,但本来就有一个一次的式子,因此也能解出来。

于是我猜想,这个bug就出在这里。不过也只是猜想而已,不知道对不对。