尤拉方法解決微分方程初值問題
阿新 • • 發佈:2021-10-01
微分方程初值問題
初值問題\(\begin{cases}y^{\prime}=f(x, y)\\ y(x_{0})=y_{0}\end{cases}\)的解\(y=y(x)\)代表通過點\((x_0, y_0)\)的一條稱為微分方程的積分曲線。積分曲線上的每一個點\((x, y)\)的切線斜率等於函式\(y^{\prime}\)在這點的值.
尤拉方法畫出函式影象
在最一開始的\((x_0, y_0)\)位置開始,每次我們都給\(x\)一個步長\(\Delta x\),如果這個步長比較小我們就可以認為\((x, g(x))\)和\((x+\Delta x, g(x+\Delta x))\)兩點構成的直線的斜率近似為函式在\(x\)
這樣每次都畫出這樣一條“線段”,然後\(x\)跳到\(x+\Delta x\)這個位置,重複上面的過程就可以近似的畫出這條直線的影象。
程式碼實現
import matplotlib.pyplot as plt x, y = 0.0, 1.0 step = 0.1 X, Y = [x], [y] def f(x:float, y:float): return y - 2 * x / y while x < 10.0: k = f(x, y) y = y + k * step x = x + step X.append(x) Y.append(y) print(X, Y, sep='\n') plt.plot(X, Y) plt.show()