需要帮助解决数值ODE [Python]

时间:2014-11-25 05:45:45

标签: python numerical ode

我有一个物理问题,从来没有在python上使用odeint或任何数值求解ODE而且有点困惑。我试着看其他例子,但无法理解,我希望得到一些帮助。我的ODE是:

enter image description here

其中α是给定角度,g是常数。

R = SQRT(X ^ 2 + Y ^ 2)

该程序将要求x_0,dx / dt_0和dy / dt_0。

我大多不确定如何在python中解决ODE问题。我已经看到我应该将我的ODE分成dr'/ dt,因为odeint只会执行一阶ODE。有人可以帮助解释如何做到这一点?

我尝试使用另一个例子来尽可能地做,但我被卡住了:

import numpy as np
import matplotlib.pylab as plt
from scipy.integrate import odeint

pi=np.pi
sin=np.sin
cos=np.cos
sqrt=np.sqrt
alpha=pi/4 
g=9.80665
y0=0.0
theta0=0.0

x=[]
y=[]
sina = sin(alpha)**2
second_term = g*sin(alpha)*cos(alpha)

x0 = float(raw_input('What is the initial x in meters?'))
x_vel0 = float(raw_input('What is the initial velocity in the x direction in m/s?'))
y_vel0 = float(raw_input('what is the initial velocity in the y direction in m/s?'))
t_f = float(raw_input('What is the maximum time in seconds?'))

r0 = x0
r = sqrt(float(x)**2 + float(y)**2)

def deriv_z(z,r):
    r, rdot=z
    return [rdot,r*sina-second_term]
zdot0=x_vel0**2+y_vel0**2
z0 = [r0,zdot0]
times = np.linespace(0, t_f, 1000)

z = odeint(deriv_z,z0,times)

0 个答案:

没有答案