Pythonで2次方程式と連立方程式を解いてみる。

数学的理論と計算

ではpythonを使って2次方程式を解いてみましょう。

使用する関数は代数演算を行うことができるSymPyから、Symbolクラス、solve()関数を使います。

この記事はこんな人におすすめ。

  • SymPy を使って2次方程式を解く方法を知りたい。
  • 同じく連立方程式を解く方法を知りたい。

プログラミング無料体験はこちら↓↓↓



では  を計算してみましょう。

Sponsored Link

2次方程式の計算

from sympy import Symbol, solve #Symbol, Solve をSymPyからインポート
x=Symbol('x') #記号  を表すシンボルオブジェクト
expr=x**2+10*x+15 #方程式を定義
solve(expr, dict=True) #方程式、そして結果をPythonの辞書リストで受け取る指定
[{x: -5 - sqrt(10)}, {x: -5 + sqrt(10)}] #結果

というわけで、解は以下の通り。


もう一つやってみましょう。

expr=x**2+6*x+4 #方程式を定義
solve(expr, dict=True) #方程式、そして結果をPythonの辞書リストで受け取る指定
[{x: -3 - sqrt(5)}, {x: -3 + sqrt(5)}] #結果

解は以下の通り。


因数の展開と求解

因数を展開し、その解を求めてみましょう。

まずは以下の因数から。

from sympy import Symbol, solve #Symbol, Solve をSymPyからインポート 
x=Symbol('x') #記号  を表すシンボルオブジェクト
p=(x+5)*(x-1) #因数を定義
p
(x + 5)(x - 1)

定義した因数を、expand()関数を使って展開します。

from sympy import expand #expand()関数をインポート 
expand(p) #因数を展開

solve()関数を使って、解を求めます。

solve(p, dict=True) #方程式、そして結果をPythonの辞書リストで受け取る指定
[{x: -5}, {x: 1}]

解は以下の通り。


では、上の解が方程式を満たすか確認します。

soln=solve((p), dict=True) #方程式を定義、そして結果をPythonの辞書リストで受け取る指定
soln = soln[0] #正解であれば0表示
p.subs({x:soln[x]}) #実行
0

0なので、満たすことがわかります。

それではもう一つ。

p2=(x+7)*(x+9) #因数を定義 
p2

expand (p2) #因数を展開

展開された式の解を求めます。

solve(p2, dict=True)
[{x: -9}, {x: -7}]

解は、以下の通り。


soln=solve((p2), dict=True)
soln = soln[0]
p2.subs({x:soln[x]})
0

こちらも、方程式を満たすことがわかりますね。

連立方程式を解く

では次に連立方程式を解いてみましょう。

例はこの式。

基本の記述は同じですが、変数xとyがあるのでSymbol クラスで定義します。

x=Symbol('x')
y=Symbol('y')
expr1=4*x-3*y+9
expr2=3*x-7*y-17
solve((expr1, expr2), dict=True)
[{x: -6, y: -5}]

解が式を満たしているかを確認します。

soln=solve((expr1, expr2), dict=True)
soln=soln[0]
expr1.subs({x:soln[x], y:soln[y]})
0

soln=solve((expr1, expr2), dict=True)
soln=soln[0]
expr2.subs({x:soln[x], y:soln[y]})
0

というわけで、確認できました。

プログラミング無料体験はこちら↓↓↓


関連記事:

404 NOT FOUND | 数学とか統計とか
https://paython-iot.com/2021/04/05/factor/
Sponsored Link

コメント

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