三次方程式ソルバー

三次方程式 ax³ + bx² + cx + d = 0 を解く
次へ

三次方程式は一般形 ax³ + bx² + cx + d = 0 を持ち、複素数の範囲では常に3つの根を持ちます。4つの係数を入力すると、ソルバーはカルダノの公式を使ってそれらを返します。判別式が非正のときは3つの実根、判別式が正のときは1つの実根と複素共役のペア、判別式がゼロに等しいときは重根の構成になります。

ソルバーが根を見つける仕組み

  1. 1

    係数を入力

    4つの数:a、b、c、d。先頭の係数aは非ゼロでなければなりません。さもないと方程式は三次ではなく二次になります。

  2. 2

    簡約三次式

    ソルバーは方程式を -b/(3a) だけずらして二次の項を消し、`t³ + pt + q = 0` の形を作ります。

  3. 3

    判別式のチェック

    Δ = (q/2)² + (p/3)³ が経路を決めます:Δ > 0 は1つの実根、Δ = 0 は重根、Δ < 0 は三角法で3つの実根を与えます。

  4. 4

    元に戻す

    t空間で見つかった各根を -b/(3a) だけずらしてxを復元します。ソルバーは該当する場合は降順で返します。

判別式のケースとその意味

カルダノの方法は、判別式 Δ = (q/2)² + (p/3)³ の符号に応じて3つの分岐のいずれかを通ります。三次曲線のグラフの幾何学はこれを正確に映し出します。

ケース表

判別式 グラフの形
Δ > 0 実根1つ、複素共役2つ x軸と1回交わる
Δ = 0 実根3つ、少なくとも2つは等しい 重根でx軸に接する
Δ < 0 異なる実根3つ x軸と3回交わる

計算例

x³ − 6x² + 11x − 6 = 0(係数 1, −6, 11, −6)の場合:

  • −b/(3a) = 2 だけずらして簡約形を得る:p = −1、q = 0。
  • Δ = (q/2)² + (p/3)³ = 0 + (−1/3)³ = −1/27 < 0 なので、3つの実根(三角法)の経路をとる。
  • 三角法の公式により、異なる3つの実根 x = 1, 2, 3 が得られる。

数値的な考慮事項

  • 浮動小数点の誤差は、3つの根が近接しているとき(ほぼ三重根のとき)に入り込みます。表示される根は、正確な値と末尾の数桁で異なる場合があります。
  • 非常に小さいaは b/(3a) を大きくし、これが演算を支配して精度を下げます。|a|が約1e-12未満なら、代わりに二次として解いてください。
  • 整数の係数が最もきれいな出力を与えます:有理数の根は、浮動小数点の丸めの範囲で正確な値に表示されます。

関連する方程式

  • 二次ax² + bx + c = 0。二次方程式ソルバーを使ってください、閉形式でより単純です。
  • 四次ax⁴ + bx³ + cx² + dx + e = 0。フェラーリの方法は分解三次に帰着しますが、ここでは扱いません。
  • 簡約三次:b = 0 とすればずらしを省き、x³ + px + q = 0 を直接与えられます。

よくある質問

方程式はもはや三次ではありません。その場合、ソルバーは続行を拒否します、bx² + cx + d = 0 には二次方程式ソルバーに切り替えてください。

その場合、ソルバーは1つの実根を返します。残りの2つの根は、カルダノの公式が閉形式で与える複素共役のペアです。記号的な答えに必要なら、-x1/2 ± (√3/2) × i × 絶対値 として計算してください。

カルダノの方法の数値実装は、浮動小数点の丸めにより1e-15程度の残差を生むことがあります。1e-10未満は実数として扱ってください。このソルバーはΔ < 0 の分岐についてすでにそれらの残差を除外しています。

4つの係数は、根の計算にのみサーバーに送信され、保存されません。ステップごとの表示では、係数がページのリンクにも含まれます。

関連ツール

このツールは他の言語でも利用できます