【Python】色んな方程式の解を求めてみよう【プログラミングで数学】

Python
スポンサーリンク

こんにちは、くれあです。

この記事ではPythonで方程式の解を求めるプログラムを紹介します。

どんなプログラムができるか?
  • 2次方程式の解の公式を使って解を求める
  • 数式処理ライブラリ「sympy」を使って3次方程式、連立方程式などの解を求める

是非参考にしてみて下さい!

解の公式を使って2次方程式を解く

2次方程式の解の公式を関数にセッティングし、2解を求めてみます。公式は以下です。

2次方程式 \(ax^2+bx+c=0\ (a\neq0)\) の解は

$$x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$

サンプルプログラム

#2次方程式の解を求める

def solve_f(a, b, c):
    D = (b*b - 4*a*c)**0.5
    x_1 = (-b + D)/(2*a)
    x_2 = (-b - D)/(2*a)
    print('解は {0}, {1}'.format(x_1,x_2))
    
solve_f(1,1,-6)

2次方程式の解を返す、solve_f()関数を作りました。

引数(a,b,c)は2次方程式の係数です。

実行結果

解は 2.0, -3.0

SymPyを使って2次方程式を解く

事前に、開発環境でSymPyをインストールしておきます。

pip install sympy

ターミナルやコマンドプロンプトでコマンドを入れてインストールを実行しましょう。

Pythonの環境構築がない場合、

それを作っておく必要もありますがそこまで面倒ではないのでトライしてみてください!

Python公式でも環境構築についてガイドしてくれています。

Python環境構築ガイド - python.jp
ここでは、Pythonの未経験者の学習用に、Pythonをインストールする方法を、Windows、macOSなど、環境別に解説しています。 当サイトでは、Pythonの質問は受け付けていません。インストールで困ったら、 Python.jp Discordサーバ な

サンプルプログラム

import sympy

x = sympy.Symbol('x')
Sol2=sympy.solve(x**2 - 3 * x + 2)
print(Sol2)

solve関数で解きたい方程式の解を返します。

今回の場合\(x^2-3x+2=0\)の解を出してくれます。

実行結果

[1, 2]

2解が返されます。

SymPyを使って3次方程式を解く

同様に3次方程式もsolve関数の引数に入れることで、解を求めることができます。

サンプルプログラム

import sympy

x = sympy.Symbol('x')
Sol2=sympy.solve(x**3 - 8)
print(Sol2)

今回の場合\(x^3-8=0\)の解を出してくれます。

実行結果

[2, -1 - sqrt(3)*I, -1 + sqrt(3)*I]

√がsqrtだったり、tex形式のような形ですが

\(x^3-8=0\)の解 \(2, -1-\sqrt{3}i, -1+\sqrt{3}i\) が返されます。

SymPyを使って連立方程式を解く

sympyでは連立方程式を解くこともできます。

2つの方程式を定義しsolve関数の引数に入れることで解が返されます。

サンプルプログラム

import sympy

x = sympy.Symbol('x')
y = sympy.Symbol('y')

expr1 = 4 * x + 2 * y - 2
expr2 = 4 * x + 5 * y + 7

print(sympy.solve([expr1, expr2]))

実行結果

{x: 2, y: -3}

まとめ

最初の解の公式を記述したコードは面倒ですが、

SymPyライブラリをインストールすることで簡単に方程式を解くプログラムができました。

掛け算など演算の書き方に慣れると、簡単に今回のプログラムも作れるので

ぜひ方程式を色々カスタマイズしてみて試してみてくださいね!

プログラミングを勉強してみたい!という方は、是非こちらも参考にしてください(^^)

参考にした書籍はこちら
にほんブログ村 IT技術ブログへ
にほんブログ村

コメント

タイトルとURLをコピーしました