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()