Programme de résolution d'ODE 1er ordre par Euler explicite

Aller en bas

Programme de résolution d'ODE 1er ordre par Euler explicite

Message  marieVS le Mer 27 Fév - 14:06

Ceci correspond à la séance 4 ex 1 de ce 27/2/08

========= dans le fichier yprime.m ====================
function yp=yprime(x,y)
% fonction definie au TP seance 4 ex 1 ****
%
%
yp = 1- (y/(2+sin(x)));
========= fin du fichier yprime.m ====================

========= dans le fichier seance4_ex1.m ====================
function [x,y]=seance4_ex1(h)

% Seance 4 exercice 1
% methode de Euler explicite pour ODE / probleme de Cauchy
%

% h est le pas d'intégration
%h=0.5; %si je change h ce qui suit change

% on définit x, un vecteur qui ciontient toutes les valeurs sur la plage
% dans la quelle on cherche à résoudre l'équation
x=0:h:20;

% on crée un vecteur y qui contiendra les solutions (la fonction) et qui
% est défini avec une taille semblable au vecteur x, et toutes les valeurs
% sont nulles
y=zeros(size(x));

% on definit la CI condition initiale
y(1)=0;

% on effectue ici le calcul des valeurs de y par la methode Euler explicite

for n = 2 : 20/h % on commence avec un indice = 2 car l'indice en matlab ne peut jamais < 1
y(n)= y(n-1)+ yprime(x(n-1),y(n-1))*h;
end
%plot(x,y,'-*')
========================================

En ligne de commande (command window) on peut par exemple taper

seance4_ex1(0.5)

[x,y] = seance4_ex1(0.5) % pour avoir y et y utilisables

for h = [2 1 0.5 0.1 0.05 0.001]
[x,y] = seance4_ex1(0.5) % pour avoir y et y utilisables
plot(x,y,'*')
hold on
end

marieVS
Enzyme
Enzyme

Nombre de messages : 18
Age : 30
Localisation : woluwé!georges henry
Date d'inscription : 18/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Programme de résolution d'ODE 1er ordre par Euler explicite

Message  Thomas le Mer 27 Fév - 18:15

moi j'avais un truc plus simple il me semble...enfin ptetre que c'est notre assistante qui est plus pragmatique ^^

dans l'editeur:

%Euler explicite


h=0.5 % ou une autre valeur pour le pas d'intégration
N=20/h % en fait c'est b-a/h mais b=20 et a=0
f=inline('1-y/(2+(sin(x)))'); %la fonction donnée
x(1)=0; y(1)=0; %la C.I.
for n=2:N %la boucle pour remplir x(n) et y(n)
y(n)=y(n-1)+h*f(x(n-1),y(n-1));
x(n)=x(n-1)+h;
end
plot (x,y)

voila F5, nommer le bazar et hop ça marche Cool
j'ai fini euler implicite mais ça je peux pas vous le retapper de mémoire, faut juste faire très attention à bien indiquer TOUT ce qui n'est pas un chiffre dans les fonctions autres que f que vous devez faire pour l'algorithme de newton (genre g(h,y,z) même si y et h sont des constantes dans cette partie du calcul)

_________________
whirlwind thru cities
avatar
Thomas
A.D.N.
A.D.N.

Nombre de messages : 356
Age : 34
Localisation : Woluwéééé
Date d'inscription : 22/09/2007

Voir le profil de l'utilisateur http://irbi2.forumpro.fr

Revenir en haut Aller en bas

Re: Programme de résolution d'ODE 1er ordre par Euler explicite

Message  Arnaud Goessens le Sam 10 Mai - 10:57

Pq vous mettez que vos conditions initiales sont y(1)=0 alors que dans l'énoncé c'est y(0)=0 ? (idem pour x ...)
avatar
Arnaud Goessens
Virus
Virus

Nombre de messages : 124
Age : 29
Date d'inscription : 22/09/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Programme de résolution d'ODE 1er ordre par Euler explicite

Message  Nemo le Sam 10 Mai - 11:19

le truc c'est que matlab il aime pas les indice nul, genre x(0), y(0) ca lui plait pas du tout, ca le rend triste et mélancolique et alors il pleure et c'est pas chouette pour lui... du coup on dit pas y(0)=0 mais y(1)=0 comme condition a l'origie, pour pas contrarier ce chèr matlab! donc voila, il faut toujours s'aranger pour que la valeur de l'indice soit plus grande que zéro! c'est pour ca que parfois, quand on utilise (par exemple) y(n-1) dans une formule, il faut commencer la boucle for à n=2 pour ne pas avoir d'indice nul!
j'espere que j'ss +- clair... et bonne continuation!
avatar
Nemo
Mitochondrie
Mitochondrie

Nombre de messages : 60
Age : 30
Date d'inscription : 30/09/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Programme de résolution d'ODE 1er ordre par Euler explicite

Message  Arnaud Goessens le Sam 10 Mai - 11:38

okok merci! (moi perso jprefer utiliser y(n+1) Smile)

Tant que j'y suis, on pourrait m'expliquer


j'ai fini euler implicite mais ça je peux pas vous le retapper de mémoire, faut juste faire très attention à bien indiquer TOUT ce qui n'est pas un chiffre dans les fonctions autres que f que vous devez faire pour l'algorithme de newton

merci!

ps: c'est Euler implicite ou explicite qu'il ne faut pas connaitre?
avatar
Arnaud Goessens
Virus
Virus

Nombre de messages : 124
Age : 29
Date d'inscription : 22/09/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Programme de résolution d'ODE 1er ordre par Euler explicite

Message  Thomas le Sam 10 Mai - 14:25

faut connaître les deux je crois

_________________
whirlwind thru cities
avatar
Thomas
A.D.N.
A.D.N.

Nombre de messages : 356
Age : 34
Localisation : Woluwéééé
Date d'inscription : 22/09/2007

Voir le profil de l'utilisateur http://irbi2.forumpro.fr

Revenir en haut Aller en bas

Re: Programme de résolution d'ODE 1er ordre par Euler explicite

Message  Julien le Dim 11 Mai - 15:24

oué faut connaitre les 2 mais dans la théorie, il est marqué que la méthode Euler implicite est meilleur parce que l'explicite engendre des problème de stabilité dans certains cas

Julien
Enzyme
Enzyme

Nombre de messages : 14
Age : 29
Localisation : Horrues
Date d'inscription : 01/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Programme de résolution d'ODE 1er ordre par Euler explicite

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