Python
数値計算
sympy
科学技術計算
計算物理学

[Pythonによる科学・技術計算] 方程式の解を求める 解析解 sympy

内容

sympyのsolveメソッドを利用して以下の3つの問題を解く。

(1) 二次方程式, $x^2+5x+3=0$, の根を求める。
(2) 三次方程式, $3x^3+3x-5=0$, を解く。虚数解が出る。
(3) 2元連立方程式, $x^2+y^2=4, y = 2x+1$, を解く。


コード(1)

例(1)
from sympy import *
x=Symbol('x')                  # 文字'x'を変数xとして定義

"""
方程式: solve
例: 2 * x **2 +5*x+3=0の根を求める
"""
sol=solve(2 * x **2 +5*x+3, x) # 解をsolに格納
print(sol)

結果: 例題(1)

スクリーンショット 2017-07-18 14.51.46.png


コード(2)

例(2)
from sympy import *
x=Symbol('x')                  # 文字'x'を変数xとして定義

"""
方程式: solve
例: 2 * x **3 +3*x-5=0の根を求める
"""
sol=solve(2 * x **3 +3*x-5, x)
print(sol)

結果: 例題(2)

スクリーンショット 2017-07-18 14.57.38.png


コード(3)

例題(3)
from sympy import *
x=Symbol('x')    # 文字'x'を変数xとして定義
y=Symbol('y')    # 文字'x'を変数xとして定義

"""
方程式: solve
連立方程式 x**2+y**2=4, y=2x+1の解を求める
"""
b= solve ([x*2+y**2-4, y-2*x+1],[x,y])  # 連立方程式を解く
print(b)

結果: 例題(3)

[(1/4 + sqrt(13)/4, -1/2 + sqrt(13)/2), (-sqrt(13)/4 + 1/4, -sqrt(13)/2 - 1/2)]