小编Max*_*off的帖子

需要帮助解决python中的二阶非线性ODE

我真的不知道从哪里开始这个问题,因为我没有太多经验,但需要使用计算机解决项目的这一部分.

我有一个二阶ODE,它是:

m = 1220

k = 35600

g = 17.5

a = 450000
Run Code Online (Sandbox Code Playgroud)

和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
Run Code Online (Sandbox Code Playgroud)

我需要找到最小的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()
Run Code Online (Sandbox Code Playgroud)

哪个并没有真正产生任何东西.

有什么想法吗?谢谢

python numpy scipy differential-equations

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

differential-equations ×1

numpy ×1

python ×1

scipy ×1