Van der Pol, Runge Kutta

Van der Pol, Runge Kutta - Algo - Programmation

Marsh Posté le 01-03-2010 à 23:55:16    

Bonjour!
J'aurai besoin d'un peu d'aide pour résoudre numériquement l'oscillateur de Van de Pol.
 
Je ne suis pas persuade d'etre dans la bonne categorie vu que c'est un probleme plus porte sur les methodes numeriques/algorithme que la programmation en elle-meme (destine a un code en fortran), mais je n'ai pas trouve d'autre forum actif pour m'aider, alors je tente ma chance sur hardware  :sol: . En esperant qu'un programmeur aura deja eu a traiter un probleme similaire.
 
Pour rappel,
l'oscillateur de VDP est défini par
x''+x-x'*mhu*(1-x^2) avec x'=dx/dt
 
que l'ont peut ramener a deux équations,
x'=y
y'=-x+mhu(1-x^2)*y
 
J'utilise la méthode des dérivées décentrées (x'=(x(i+1)-x(i)) * dt) pour le résoudre, ce qui donne:
 
x(i+1)=y(i)*dt-x(i)
Y(i+1)= (-X(i)+mhu*(1-(X(i)*X(i)))*Y(i))*dt+Y(i)
 
Mais j'aimerai aussi utiliser Runge-Kutta à l'ordre 2 pour comparer les deux methodes. Mais je ne suis pas sur de son fonctionnement.
est-il correct d'écrire :
 
x(i+1)=x(i)+0.5(k1+k2)*h
avec k1=y(i) et k2=y(i)+h
 
 
y(i+1)=y(i)+0.5(k1+k2)*h
 
avec k1=-x(i)+mhu(1-x(i)^2)*Y(i) et k2=-(x(i)+h)+mhu(1-(x(i)+h)^2)*(Y(i)+k1*h)
 
J'utilise comme définition k1=f(xi,yi) et k2=f(xi+h,yi+k1*h) mais je ne suis pas sur d'appliquer l'algorithme correctement, et lorsque je calcul l'erreur je trouve des valeurs bien trop importante, donc il doit y avoir un probleme, si quelqu'un le voit ...
Mais l'algorythme marche, je converge bien vers la bonne solution.
 
Merci de votre aide.

Reply

Marsh Posté le 01-03-2010 à 23:55:16   

Reply

Marsh Posté le 02-03-2010 à 15:48:19    

A mon avis, c'est plus un pb de math numérique que de programmation :/ Tu trouveras sans doute plus d'infos dans wikipedia ou via google...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed