Brauche Hilfe bei der Lösung eines zweiter Ordnung nicht-lineare ODE in python

Ich weiß wirklich nicht, wo beginnen mit diesem problem, da hatte ich noch nicht viel Erfahrung mit diesem, aber es ist notwendig, dies zu lösen, Teil des Projektes mit Hilfe eines Computers.

Ich habe einen 2nd order ODE die:

m = 1220

k = 35600

g = 17.5

a = 450000

und b ist zwischen 1000 und 10000 mit Schritten von 500.

x(0)= 0 

x'(0)= 5


m*x''(t) + b*x'(t) + k*x(t)+a*(x(t))^3 = -m*g

Brauche ich das kleinste b derart, dass die Lösung ist nie positiv. Ich weiß, was das Diagramm Aussehen soll, aber ich weiß einfach nicht, wie zu verwenden odeint um eine Lösung der Differentialgleichung.
Dies ist der code den ich bisher:

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

Die nicht wirklich produzieren viel von allem.

Irgendwelche Gedanken? Dank

InformationsquelleAutor Max Rackoff | 2013-11-04
Schreibe einen Kommentar