tft每日頭條

 > 生活

 > python求微積分

python求微積分

生活 更新时间:2025-01-31 23:52:59

本文簡述用scipy工具包求解微分方程的基本方法。.

導入必要的工具包:

import matplotlib.pyplot as plt import scipy as sp from scipy.integrate import odeint

例1:一階微分方程的解法(如圖1)

物體下落時,空氣摩擦力的方程如下:

python求微積分(python微積分-微分方程及其求解)1

空氣摩擦力表達式的自定義函數:

def dvdt(v, t): return 3*v**2 - 5 v0 = 0

解法如下:

t = np.linspace(0, 1, 100) sol = odeint(dvdt, v0, t) v_sol = sol.T[0] v_sol

v_sol的結果如圖2:

python求微積分(python微積分-微分方程及其求解)2

繪制出微分方程的解集圖,如圖3:

plt.plot(t, v_sol)

python求微積分(python微積分-微分方程及其求解)3

例2:二階微分方程的求解(如圖4)

python求微積分(python微積分-微分方程及其求解)4

圖4中文字及方程的輸入形态,如下:

**二階ODE方程** 鐘擺方程如下: $$\theta'' - \sin(\theta) = 0$$ Scipy隻能用來解一階ODE方程,但是所有的任何二階ODE都可以轉換為兩個一階ODE方程。同理,更高階的ODE方程也可轉換為多個一階ODE方程來解。 設 $\omega = d\theta/dt$,那麼可以推導出以下的ODE方程: $$d \omega / dt = \sin(\theta)$$ $$d \theta / dt = \omega $$ 設 $S = (\theta, \omega)$

例4中表達式的自定義函數及其初始值:

def dSdt(S, t): theta, omega = S return [omega, np.sin(theta)] theta0 = np.pi/4 omega0 = 0 S0 = (theta0, omega0)

求解代碼如下:

t = np.linspace(0, 20, 100) sol = odeint(dSdt, S0, t) theta, omega = sol.T

求解結果如圖5:

plt.plot(t, theta) plt.show()

python求微積分(python微積分-微分方程及其求解)5

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved