【发布时间】:2013-11-06 01:26:49
【问题描述】:
我真的不知道从哪里开始解决这个问题,因为我对此没有太多经验,但需要使用计算机解决项目的这一部分。
我有一个二阶 ODE,即:
m = 1220
k = 35600
g = 17.5
a = 450000
b 介于 1000 和 10000 之间,增量为 500。
x(0)= 0
x'(0)= 5
m*x''(t) + b*x'(t) + k*x(t)+a*(x(t))^3 = -m*g
我需要找到最小的 b 使得解永远不会是正数。我知道图表应该是什么样子,但我只是不知道如何使用 odeint 来获得微分方程的解。 这是我到目前为止的代码:
from numpy import *
from matplotlib.pylab import *
from scipy.integrate import odeint
m = 1220.0
k = 35600.0
g = 17.5
a = 450000.0
x0= [0.0,5.0]
b = 1000
tmax = 10
dt = 0.01
def fun(x, t):
return (b*x[1]-k*x[0]-a*(x[0]**3)-m*g)*(1.0/m)
t_rk = arange(0,tmax,dt)
sol = odeint(fun, x0, t_rk)
plot(t_rk,sol)
show()
这并没有真正产生任何东西。
有什么想法吗?谢谢
【问题讨论】:
标签: python numpy scipy differential-equations