多項式の根を求めた場合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]]]
(注: これは実際にはローラン多項式であり、大きな累乗を掛けるとq
問題は解決します。)
ここの最後の行は、見つかったソリューションが非常に異なることを示すだけです。実際、それは私たちが取り組んでいた問題で計算しようとしていた量です。
NSolve[poly == 0, q]
との出力をよく見るとN[Solve[poly == 0, q]
、NSolve54
が予想される ではなく根しか与えないことがわかります56
。繰り返されるルートなどを見逃しただけではありません。等級の 2 つの最大根がありません (約+/- 1.59
)
これは Mathematica のバグですか?なぜこれが起こっているのか、誰にも説明がありますか?