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

数学

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

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

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

プログラミングを勉強したい!! データ分析に興味がある!!
そんなあなたへのおすすめ記事
無料体験あり、キャッシュバック有りプログラミングスクールおすすめはこちら

 

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)}] #結果

解は以下の通り。


因数の展開と求解

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

まずは以下の因数から。

p=(x+5)*(x-1) #因数を定義
p

定義した因数を、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

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

プログラミングを勉強したい!! データ分析に興味がある!!
そんなあなたへのおすすめ記事
無料体験あり、キャッシュバック有りプログラミングスクールおすすめはこちら

 

関連記事:

python で重さの単位変換プログラムを書いてみた
重さの単位は世界共通ではありません。 イギリスやアメリカなどでは、私たちが使っているキログラムではなく、ポンドやオンスが重量の単位です。 当然そのままでは都合が悪いので、どちらに単位の変換をしなければなりません。 そこで、...
python を使った整数の因数計算プログラム
整数の因数を計算するプログラムです。 因数ですが、ある数 a を他の整数 b で割り、余りが無ければ a は b の因数ということになります。 まずは簡単に因数を見てみましょう。 因数を割り出すには「is_factor()...

コメント

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