Bonjour,
Dans le cadre d'un TP, je dois programmer une procédure permettant de résoudre des équations différentielles avec la méthode RK4.
J'y suis bien arrivé pour une équation du premier ordre mais je bloque quand il s'agit de traiter les équations du second ..
Voici le code que j'ai écrit, (pour l'équation d²x/dt² + x = 0):
(J'ai posé v=dx/dt)
import numpy as np
import matplotlib.pyplot as plt
ti=0
tf=5
h=0.1
t=list(np.arange(ti,tf,h))
n=len(t)
def F1(x,v):
return(v)
def F2(x,v):
return -x
def RK4(F1,F2):
x=1
v=2
X=[x]
for i in range(n-1):
xk1=F1(x,v)
vk1=F2(x,v)
xk2=F1(x,x+h/2*xk1)
vk2=F2(x,v+h/2*vk1)
xk3=F1(x,x+h/2*xk2)
vk3=F2(x,v+h/2*vk2)
xk4=F1(x,x+h*xk3)
vk4=F2(x,v+h*vk3)
x=x+h/6*(xk1+2*xk2+2*xk3+xk4)
v=v+h/6*(vk1+2*vk2+2*vk3+vk4)
X.append(x)
print(X)
plt.plot(t,X)
plt.show()
Le code ne marche pas et voila ce que j'obtient:
Je vous remercie par avance,
INoctal
Partager