学生向け(WolframAlphaがなかった頃の話です。)
高次方程式を数値的に解く簡単な方法を教えてください
と訊かれました。低級言語で実装すれば数値計算の勉強になります。答えが欲しいだけなら、Mathematicaのような高級言語を使いましょう。次のように、簡単に解けます。
例:
In[3]:= With[{f = Sum[Random[Integer, {0, 9}] x^i, {i, 1, 8}] - 10}, {f, NSolve[f == 0, x] // TableForm}] 3 4 5 6 Out[3]= {-10 + 2 x + 5 x + 4 x + 4 x + 4 x , x -> -1.43626 } x -> -0.586233 - 1.04486 I x -> -0.586233 + 1.04486 I x -> 0.380996 - 1.13446 I x -> 0.380996 + 1.13446 I x -> 0.846732
Mathematicaは高いので、Maximaのようなフリー・ソフトウェアで試すとよいかもしれません。高次方程式は次のように説きます。
allroots(-10+5*x+9*x^2+4*x^3+4*x^4+6*x^5+9*x^6+3*x^8);
もう少しアルゴリズムを楽しみたいのなら、Schemeを使うのはどうでしょうか。Mathematicaのような高級言語とJavaのような低級言語の間に位置するLispの方言です(この文脈では)。Structure and Interpretation of Computer Programsに解説があります(オンライン版・日本語訳)