Quartic Equation Solverの実装は機能しません
質問
Quartic Equation Solverの実装で何が問題になっていますか?
これが私のコードです githubで. 。私はこれに従いました: http://www.1728.com/quartic2.htm
実際、実際の実装は271行目から始まり、そこでモニックポリを作成します。
4つの実際の根を持つ多項式で試してみると、正常に機能します(たとえば、3x^4 + 6x^3-123x^2-126x + 1,080で)、そうでなければ間違った根を与えます。
ありがとう、
ルービック
PS私は関数を呼びました __quartic
まだ開発中です
解決
それがあなたの立方ソルバーに問題がない場合(Phkahlerが提案したように)、私はそれがこれらの行のINT分裂の場合であると賭けています:
f = float(c - (3*b**2 / 8))
g = float(d + (b**3/ 8) - (b*c / 2))
h = e - (3*b**4 / 256) + (b**2 * c / 16) - (b*d / 4)
3.0未満のPythonのバージョンを使用していて、除外を輸入していない場合 __future__
, 、次に、ここで大きな問題を抱えています。たとえば、b = 3の場合、 (3*b**2/8)
正しいフロート分割値3.375ではなく、INT部門ごとに3に等しくなります。おそらくこれを修正する最良の方法は、計算を開始する前にA、B、C、D、Eをフロートに変換することです。 FとGのすべての計算後のフローチへの変換は、この修正を行った後、本当に不要です。
この部門の問題とその歴史の詳細については、以下を参照してください。
http://www.python.org/dev/peps/pep-0238/
http://python-history.blogspot.com/2009/03/problem-with-integer-division.html
他のヒント
あなたの立方体のルートソルバーは機能しますか? Quarticソルバー内で使用するための単一の実際のルートのみを返すように減らす必要があります。 1本と3個の実際のルーツの両方の方程式を含む、最初にCubicソルバーで多くのテストケースを実行します。これが確認された後にのみ、Quarticソルバーをデバッグしようとする必要があります。
おそらく私は助けることができます。私が書いた プログラムと四分位方程式を解くための手順.
私はあなたがJavaScriptでプログラムを書いていないと思います。私は喜んで助けてくれるでしょう(私ができれば)。