Runge-Kutta

Aller en bas

Runge-Kutta

Message  Julie le Dim 11 Mai - 17:05

Quelqu'un pourrait m'expliquer Runge-Kutta ( TP4 exercice 1)

Mirchiii d'avance beaucouuuup ! ! !

Et courage à tous!
avatar
Julie
Enzyme
Enzyme

Nombre de messages : 23
Age : 30
Localisation : Rhôôôde St Genèèèèzzz
Date d'inscription : 24/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Runge-Kutta

Message  Mélody le Dim 11 Mai - 19:07

% HEUN
% y(n+1)=y(n) +0.5*h*(f(x(n),y(n)) + f(x(n+1),y(n+1)))
% or selon Euler explicite, y(n+1)=y(n)+h*f(x(n),y(n))

% énoncé: y'(x)=f(x,y)= 1-y/(2+sin(x))
%on va utiliser k1 et K2 pour que ce soit plus facile:
% k1=f(x(n),y(n))
% k2=f(x(n+1),y(n)+h*k1)
% y(n+1)=y(n)+0.5*h*(k1+k2)

f=inline('1-y/(2+sin(x))');
a=0;b=20;
y(1)=0;
h=0.5;
N=(b-a)/h;
x=a:h:b;
for n=2:N/h
x(n)=x(n-1)+ h;
k1=f(x(n-1),y(n-1));
k2=f(x(n),y(n-1)+h*k1);
y(n)=y(n-1)+0.5*h*(k1+k2);
end
plot(x,y,'g')
grid on; zoom on; hold on;

pour voir comment varie le graphique de la fonction, on change h, on change la couleur dans le plot et F5. on aura plusieurs courbes.

Pour ce qui est de tout rassembler dans une même figure, c'est méga chiant, il faut faire 2 fichiers de type fonction.m et taper un truc dans commandes.

mais mon programme chiant ne marche pas (me suis inspirée des réponses partielles de l'assistant o_O)

??? Error using ==> /
Matrix dimensions must agree

J'espère que tu comprendras avec ces notes...
avatar
Mélody
Mitochondrie
Mitochondrie

Nombre de messages : 52
Age : 29
Date d'inscription : 24/09/2007

Voir le profil de l'utilisateur http://picasaweb.google.com/Full.Bubulles

Revenir en haut Aller en bas

Re: Runge-Kutta

Message  Philippe le Dim 11 Mai - 23:47

Pour faire plusieurs graph avec un pas d'intégration différent, il suffit de définir un vecteur qui contient les pas d'intégration différent:h=[0.1 0.01 0.5 0.005] par exemple.

faire une boucle for qui englobe l'algorithme : for i=1:4 où 4= nombre différents de pas d'intégration.
Ne pas oublier de remplacer h par h(i) dans le programme vu qu'il varie.

Et pour la couleur il faut faire un truc du style: couleur=['r' 'c' 'b' 'v' ] à définir au début du programme. Les différentes lettres sont les couleurs

et mettre plot (x,y,couleur(i)) et c'est dans la poche .... je sais pas si les gens auront compris.
avatar
Philippe
Mitochondrie
Mitochondrie

Nombre de messages : 69
Age : 31
Localisation : Bruxelles
Date d'inscription : 28/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Runge-Kutta

Message  Mélody le Dim 11 Mai - 23:56

genre comme ça? mais j'arrive à un graphique tout bleu et en zoomant j'ai une succession de petits triangles

h=[0.1 0.01 0.5 0.005];
col=['g' 'r' 'b' 'v'];
for i=1:4
f=inline('1-y/(2+sin(x))');
a=0;b=20;
y(1)=0;
h=0.2;
N=(b-a)/h(i);
x=a:h(i):b;
for n=2:N/h(i)
x(n)=x(n-1)+ h(i);
k1=f(x(n-1),y(n-1));
k2=f(x(n),y(n-1)+h(i)*k1);
y(n)=y(n-1)+0.5*h(i)*(k1+k2);
end

end
plot(x,y,col(i))
grid on; zoom on; hold on; Neutral
avatar
Mélody
Mitochondrie
Mitochondrie

Nombre de messages : 52
Age : 29
Date d'inscription : 24/09/2007

Voir le profil de l'utilisateur http://picasaweb.google.com/Full.Bubulles

Revenir en haut Aller en bas

Re: Runge-Kutta

Message  Philippe le Lun 12 Mai - 0:30

heu j'ai remanier le programme parce que y avait des choses bizarre comme par exemple: le plot doit se trouver dans la boucle sinon il ne fait qu'un seul graph.
et donc il va juste faire un graph avec le dernier i qui est =4 et dans col(4)=V et v enfait c est pour faire un graph avec des triangles, c est pas une couleur.

clc; clear


h=[0.1 0.01 0.5 0.005];
col=['g' 'r' 'b' 'v'];

f=inline('1-y/(2+sin(x))');
a=0;b=20;
y(1)=0;
x(1)=0;

for i=1:4

N=(b-a)/h(i);

for n=2:N/h(i)

x(n)=x(n-1)+ h(i);
k1=f(x(n-1),y(n-1));
k2=f(x(n),y(n-1)+h(i)*k1);
y(n)=y(n-1)+0.5*h(i)*(k1+k2);
end

plot(x,y,col(i))
grid on; zoom on; hold on;

end

et la ça marche impec ... mais c'est très lent à exécuter vu que tes pas d intégration sont très petit.
avatar
Philippe
Mitochondrie
Mitochondrie

Nombre de messages : 69
Age : 31
Localisation : Bruxelles
Date d'inscription : 28/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Runge-Kutta

Message  Mélody le Lun 12 Mai - 11:53

merci! Smile
avatar
Mélody
Mitochondrie
Mitochondrie

Nombre de messages : 52
Age : 29
Date d'inscription : 24/09/2007

Voir le profil de l'utilisateur http://picasaweb.google.com/Full.Bubulles

Revenir en haut Aller en bas

Re: Runge-Kutta

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum