Professional Documents
Culture Documents
ODE Python
ODE Python
yn+1 = yn + h × f (yn , tn )
In [13]:
import numpy as np
import matplotlib.pylab as pl
h = (b-a)/(n-1)
y = [y0]
t = np.linspace(a,b,n)
return y , t
''' test
y' = y
y(0) =1
'''
f = lambda y, t : y
n = 100
y , t = euler(f , 1 ,0,5,n)
pl.xlim([0,1])
pl.ylim([1,2.8])
pl.show()
h = (b-a)/(n-1)
y = [y0]
t = np.linspace(a,b,n)
for i in range(1,n):
return y , t
f = lambda y, t : y
n = 100
y , t = euler_modif(f , 1 ,0,5,n)
pl.show()
Methode de Heun
k 1 = f (yn , tn )
k 2 = f (yn + h × k 1 , tn + h)
h
yn+1 = yn + × (k 1 + k 2 )
2
In [15]:
h = (b-a)/(n-1)
y = [y0]
t = np.linspace(a,b,n)
for i in range(1,n):
k1 = F(y[i-1] , t[i-1])
k2 = F( y[i-1] + h * k1 , t[i-1] + h)
return y , t
f = lambda y, t : y
n = 200
y , t = heun(f , 1 ,0,5,n)
pl.show()
k 1 = f (yn , tn )
k1 h
k 2 = f (yn + , tn + )
2 2
k2 h
k 3 = f (yn + , tn + )
2 2
k 4 = f (yn + k 3 , tn )
h
yn+1 = yn + × (k 1 + 2(k 2 + k 3 ) + k 4 )
6
In [8]:
h = (b-a)/(n-1)
y = [y0]
t = np.linspace(a,b,n)
for i in range(1,n):
k1 = h * F(y[i-1] , t[i-1])
k4 = h * F( y[i-1] + k3 , t[i-1])
return y , t
f = lambda y, t : y
n = 200
y , t = rangeKutta(f , 1 ,0,5,n)
pl.show()
In [16]:
import scipy
import scipy.integrate
f = lambda y , t : np.sin(t*y)
n = 60
y4 =scipy.integrate.odeint(f , 0.01 , t)
pl.plot( t, y1 , label='euler_modif')
pl.plot( t, y2 , label='HEUN')
pl.plot( t, y4 , label='ODEINT')
pl.legend()
pl.show()
import numpy as np
import scipy
import matplotlib.pylab as pl
yy,t = euler(f,np.array([y0,yp0]),a,b,n )
y2 = scipy.integrate.odeint(f , [0.01,0], t)
pl.legend()
pl.show()