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 . 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:
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.
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 . 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.