Pythonで二次方程式を解く方法:cmathモジュールの使い方を解説
Pythonで二次方程式を解くには?
Pythonで二次方程式を解くには、標準ライブラリのcmathモジュールを使うのが便利です。二次方程式の解(根)は、判別式の値によっては複素数になることがあるためです。cmathモジュールを使えば、負の数の平方根も問題なく計算でき、複素数の解も正確に求められます。
一般に、ax² + bx + c = 0 という形式の二次方程式の解は、次の解の公式で求められます。
x = (-b ± √(b² - 4ac)) / 2a
ここで、b² - 4ac の部分は判別式(discriminant)と呼ばれ、その値によって解の性質が決まります。
- 判別式 > 0:異なる2つの実数解
- 判別式 = 0:重解(1つの実数解)
- 判別式 < 0:2つの共役な複素数解
コード例
以下は、a = 12、b = 8、c = 1 の二次方程式「12x² + 8x + 1 = 0」を解くPythonコードです。
import cmath
a = 12
b = 8
c = 1
# 判別式を計算
d = (b**2) - (4*a*c)
# 解の公式を使って2つの根を求める
root1 = (-b - cmath.sqrt(d)) / (2 * a)
root2 = (-b + cmath.sqrt(d)) / (2 * a)
print(root1)
print(root2)
実行結果
このプログラムを実行すると、次の出力が得られます。
(-0.5+0j) (-0.16666666666666666+0j)
出力は「実部+虚部j」という複素数形式で表示されています。今回の例では虚部が0のため、実際には x = -0.5 と x ≈ -0.167 という2つの実数解が存在することを意味します。
cmathとmathモジュールの違い
判別式が必ず0以上だと分かっている場合は、通常のmathモジュールのsqrt関数でも十分です。しかし、判別式が負になる可能性がある場合、math.sqrtはValueErrorを発生させてしまいます。一方、cmath.sqrtは負の数に対しても複素数の平方根を返すため、あらゆる二次方程式を汎用的に扱いたい場合はcmathモジュールを選ぶのが最適です。
-
Pythonでディレクトリの名前を変更する方法をわかりやすく解説
Pythonでディレクトリ(フォルダ)の名前を変更するには、主に shutil モジュールと os モジュールの2つの方法があります。どちらも簡単なコードで実現できるため、用途に応じて使い分けるとよいでしょう。 shutil.move() を使う方法 shutil モジュールの move(src, dst) 関数は、指定したパスから別のパスへディレクトリを移動する関数です。移動先(dst)にパスを含めず新しい名前だけを指定すると、実質的に「リネーム」として機能します。 使用例 >>> import shutil >>> shutil.move(my_fold
-
Pythonでファイルを削除する方法をわかりやすく解説
Pythonでファイルを削除する基本の方法 Pythonでは、標準ライブラリのosモジュールを使うことで、単一のファイルや空のフォルダ(ディレクトリ)を簡単に削除できます。外部ライブラリのインストールは不要で、import osと記述するだけですぐに利用できるのが魅力です。 os.remove() でファイルを削除する たとえば、カレントディレクトリにある my_file.txt というファイルを削除したい場合は、次のように記述します。 >>> import os >>> os.remove(my_file.txt) os.remove() の引数には、削