高度な数式
Scipyを使用して、高度な数式を解くためのサンプルコードを提供します。
以下は、$ y = x^3 + 2x^2 - 5x + 6 $の関数を考え、その解を見つける例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import numpy as np from scipy.optimize import root import matplotlib.pyplot as plt
def equation(x): return x**3 + 2*x**2 - 5*x + 6
initial_guess = 0
solution = root(equation, initial_guess)
print("解:", solution.x)
x_vals = np.linspace(-5, 3, 1000) y_vals = equation(x_vals)
plt.figure(figsize=(8, 6)) plt.plot(x_vals, y_vals, label='y = x^3 + 2x^2 - 5x + 6') plt.scatter(solution.x, equation(solution.x), color='red', label='Solution', s=100) plt.xlabel('x') plt.ylabel('y') plt.title('Graph of the Equation') plt.legend() plt.grid(True) plt.show()
|
このコードは、scipy.optimize.root
を使用して方程式の解を見つけます。
また、解を求める過程をグラフに表しています。
方程式の解は赤い点で示されています。
ソースコード解説
このコードは、Scipyライブラリを使用して非線形方程式を解く手順を示しています。
詳細を以下にまとめます。
ライブラリのインポート
1 2 3
| import numpy as np from scipy.optimize import root import matplotlib.pyplot as plt
|
方程式の定義
1 2
| def equation(x): return x**3 + 2*x**2 - 5*x + 6
|
この関数では、$ y = x^3 + 2x^2 - 5x + 6 $という非線形方程式が定義されています。
初期値の設定
初期推定値を$ (x=0) $に設定しています。
方程式の解を求める
1
| solution = root(equation, initial_guess)
|
scipy.optimize.root
を使用して、指定した方程式の解を計算します。
この場合、equation
関数を与えています。
解の表示
解をコンソールに表示します。
グラフ化
1 2 3 4 5 6 7 8 9 10 11 12
| x_vals = np.linspace(-5, 3, 1000) y_vals = equation(x_vals)
plt.figure(figsize=(8, 6)) plt.plot(x_vals, y_vals, label='y = x^3 + 2x^2 - 5x + 6') plt.scatter(solution.x, equation(solution.x), color='red', label='Solution', s=100) plt.xlabel('x') plt.ylabel('y') plt.title('Graph of the Equation') plt.legend() plt.grid(True) plt.show()
|
指定した範囲の$ (x) 値$に対する方程式の$ (y) 値$を計算し、グラフ上に方程式の曲線を描画します。
また、方程式の解を赤い点で示しています。
このコード全体は、非線形方程式の数値解法とその結果の視覚化を行っています。