では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
コメント