Python 二次方程式の根ファインダー

Python の判別式を使用して二次方程式を解き、実根と複素根を特定します。

エディターで試してみる

概要

二次方程式の形式は ax² + bx + c = 0 です。これを解くには、二次方程式 `x = (-b ± sqrt(b² - 4ac)) / 2a` が必要です。

「b² - 4ac」という項は判別式と呼ばれます。正の場合、2 つの異なる実根が存在します。ゼロの場合、1 つの実根。負の場合、2 つの複素根。

Python の組み込み `cmath` モジュールは複素数をサポートしているため、判別式が負の場合でも根を見つけることができます。

コードと実行の出力

実数、ゼロ、複素数の判別式を処理できる堅牢なソルバー。

import cmath

def find_roots(a, b, c):
    d = (b**2) - (4*a*c) # discriminant
    
    # Calculate both roots
    sol1 = (-b - cmath.sqrt(d)) / (2*a)
    sol2 = (-b + cmath.sqrt(d)) / (2*a)
    
    return sol1, sol2

# Test equation: x^2 - 5x + 6 = 0
r1, r2 = find_roots(1, -5, 6)
print("Roots of x^2 - 5x + 6 = 0:")
print(f"Root 1: {r1.real:.1f}")
print(f"Root 2: {r2.real:.1f}")
端子出力
Roots of x^2 - 5x + 6 = 0:
Root 1: 2.0
Root 2: 3.0

段階的な実装

  • 物理モデルと軌道追跡システム
  • 幾何学的衝突検出ベクトル
  • 数学的ソルバー

よくある質問

なぜ「math」の代わりに「cmath」を使用するのでしょうか?

標準の「math」モジュールは、負の数の平方根を取得しようとすると、ValueError を発生させます。 `cmath` (複雑な数学) モジュールは虚数根を自動的に処理します。

関連トピック