
应该是bug了。
下面这个方程长得和你给的差不多,却能给出正确的解答(可能是因为它的解是有理数):
下面这个方程和你给的有同样的解,却也能给出正确的解答:
你给的这个方程却偏偏解不出来:
和它长得差不多,解也不是有理数的方程也解不出来:
===============================
Mathematica 能给出正确的解答:
SymPy 也能给出正确的解答:
===============================
详细分析:
在 maxima 中输入
可以给出关于 solve 的帮助,帮助中介绍了 solve 的算法。相关段落如下:
按这里的说法,它实际上是调用了 algsys 函数。于是我试了
果然也是无解。再试试
果然给出了一对有理数解。
于是我再看 algsys 的帮助。里边也介绍了它的算法。于是我决定跟着它所说的算法试一试。
(以下的引文均出自 algsys 的帮助)
第一步是因式分解。这两个方程都没法因式分解,跳过。
第二步用到了结式。这是解高次多项式方程组的标准的方法。于是我试了:
结果很正常。这时就只剩下 y 一个变量了,而且也只有这么一个方程。
然后是第三步(原文比较长,我省去了无关的部分):
这里好长,不过也不是全部都与我们的问题有关。现在我们只剩下 y 一个变量,于是来到了这里所说的 "univariate" 的情形。而且这时的方程()是二次(quadratic)的。它说要调用 solve 函数。于是我试了:
它给出了正确的解!
再来看第四步:
这里没说清楚到底把第三步的答案代入到哪个方程。于是我把 y 的第一个解代入原来的第一个方程试试:
然后回到第一步。
还是没法因式分解。这里调用 factor 函数的结果只是整理了一下而已。
但要注意的是,如果 x 有有理解的话,这里是可以分解因式的!
然后又是第二步:
呃……结式为0(本来也应该为0),没办法继续下去了。
于是就……解不出来了……
但如果是那个方程,由于有有理解,在回到第一步的时候,是可以因式分解出一次的式子,因此就还能解出来。至于这个方程,在回到第一步的时候,虽然也没法因式分解,但本来就有一个一次的式子,因此也能解出来。
于是我猜想,这个bug就出在这里。不过也只是猜想而已,不知道对不对。
