人们会期望并希望,如果您要求Mathematica
找到多项式的根,它应该给出相同(近似)的答案,无论您是象征性地执行此操作,然后找到这些确切答案的数值近似值,还是您是否以数字方式执行此操作。这是一个示例,它(在Mathematica 7
OS X 上运行)严重失败:
poly = -112 + 1/q^28 + 1/q^26 - 1/q^24 - 6/q^22 - 14/q^20 - 25/q^18 -
38/q^16 - 52/q^14 - 67/q^12 - 81/q^10 - 93/q^8 - 102/q^6 - 108/
q^4 - 111/q^2 - 111 q^2 - 108 q^4 - 102 q^6 - 93 q^8 - 81 q^10 -
67 q^12 - 52 q^14 - 38 q^16 - 25 q^18 - 14 q^20 - 6 q^22 - q^24 +
q^26 + q^28;
Total[q^4 /. NSolve[poly == 0, q]] - Total[q^4 /. N[Solve[poly == 0, q]]]
(注意:这实际上是一个 Laurent 多项式,如果你乘以一个很大的幂,q
问题就消失了。)
这里的最后一行只是证明找到的解决方案非常不同;事实上,这是我们试图在我们正在研究的问题中计算的数量。
如果您仔细查看 和 的输出NSolve[poly == 0, q]
,N[Solve[poly == 0, q]
您会发现 NSolve 只给出54
根而不是预期的56
. 这并不是说它只是错过了重复的根或任何东西;它缺少两个最大的量级根(大约+/- 1.59
)
这是 Mathematica 中的错误吗?有没有人解释为什么会这样?