非線形方程式
Scipyを使用して、非線形方程式を解く問題を考えてみましょう。
具体的には、以下の非線形方程式を解くことを目指します。
$ x^2 + y^2 = 25 $
$ x^2 - y = 7 $
この方程式を解くために、Scipyのfsolve()
関数を使用します。
以下のコードをご参考ください。
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 31 32 33 34 35 36 37 38 39 40
| import numpy as np import matplotlib.pyplot as plt from scipy.optimize import fsolve
def equations(vars): x, y = vars eq1 = x**2 + y**2 - 25 eq2 = x**2 - y - 7 return [eq1, eq2]
initial_guess = [0, 0]
solution = fsolve(equations, initial_guess) print("Solution: x =", solution[0], ", y =", solution[1])
x_solution, y_solution = solution[0], solution[1]
x = np.linspace(-10, 10, 400) y = np.linspace(-10, 10, 400)
X, Y = np.meshgrid(x, y)
Z1 = X**2 + Y**2 - 25 Z2 = X**2 - Y - 7
fig, ax = plt.subplots() ax.contour(X, Y, Z1, levels=[0], colors='r', label='x^2 + y^2 = 25') ax.contour(X, Y, Z2, levels=[0], colors='b', label='x^2 - y = 7') ax.plot(x_solution, y_solution, 'go', label='Solution') ax.set_xlabel('x') ax.set_ylabel('y') ax.legend() plt.grid(True) plt.show()
|
このコードでは、fsolve()
関数を使用して非線形方程式の解を求め、解をx_solution
とy_solution
に格納します。
次に、グラフの範囲を設定し、np.meshgrid()
関数を使用してグリッドを作成します。
方程式を計算し、contour()
関数を使用して等高線プロットを作成します。
また、解をplot()
関数を使用してプロットし、グラフに表示します。
上記のコードを実行すると、非線形方程式の解を含むグラフが表示されます。
赤い等高線は方程式 $x^2 + y^2 = 25$ を表し、青い等高線は方程式 $x^2 - y = 7$ を表します。
緑の点は、求めた解を示しています。
このように、ScipyとMatplotlibを組み合わせることで、非線形方程式の解を視覚化することができます。
グラフを通じて、方程式の解がどのように見えるかを直感的に理解することができます。