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:

Nom : figure_1.png
Affichages : 3633
Taille : 19,1 Ko


Je vous remercie par avance,

INoctal