1
我試圖求解類似於d2(phi)/dt = -(g/R) *sin(phi)
(這是泰勒的經典力學中的滑板問題)擺類似的微分方程。我是scipy和odeint之類的新手,所以我正在爲此做準備,以便爲將來更復雜的數字解決方案做準備。鐘擺odeint積分
我已經使用here的代碼來嘗試導航編碼,但是我想要的是一條用於phi(t)
的扁平線。我認爲這是因爲我試圖將一個二階微分方程分成兩個一階,其中一個不依賴於另一個(因爲d(phi)/ dt會出現);但我不知道如何去解決它。
任何人都知道它有什麼問題嗎?
# integrate skateboard problem, plot result
from numpy import *
from scipy.integrate import odeint
import matplotlib.pyplot as plt
def skate(y, t, params):
phi, omega = y
g, R = params
derivs = [omega, -(g/R)*np.sin(phi)]
return derivs
# Parameters
g = 9.81
R = 5
params = [g, R]
#Initial values
phi0 = 20
omega0 = 0
y0 = [phi0, omega0]
t = linspace(0, 20, 5000)
solution = odeint(skate, y0, t, args=(params,))
plt.plot(t, solution[:,0])
plt.xlabel('time [s]')
plt.ylabel('angle [rad]')
plt.show()