Séance 9 - Exercice 2

Aller en bas

Séance 9 - Exercice 2

Message  nartois le Mar 13 Mai - 11:47

Voilà l'exo 2 de la scéance 9

Code:
clc;
clear;
%choix de N (on va de 0à pi en 100 étapes)
N=100;
%choix de C1 et C2
C1=1;
C2=-1;
%Remplissage du vecteur x
a=0;
b=pi;
h=(b-a)/N;% h est le pas d'intégration
x=0:h:pi;
%remplissage des premières valeurs de u1 et u2 avec les cond à l'origine
u1(1)=1;
u2(1)=C1;
% Euler
for n=1:N
    u1(n+1)=h*u2(n)+u1(n);
    u2(n+1)=u2(n)+h*(-cos(x(n))*u2(n)*u1(n)+sin(x(n)*x(n)));
end
plot (x,u1,'r')
grid on
hold on
T1=u1(N)-2;
%remplissage des premières valeurs de u1 et u2 avec les cond à l'origine
u1(1)=1;
u2(1)=C2;
% Euler
for n=1:N
    u1(n+1)=h*u2(n)+u1(n);
    u2(n+1)=u2(n)+h*(-cos(x(n))*u2(n)*u1(n)+sin(x(n)*x(n)));
end
plot(x,u1,'g')
hold on
T2=u1(N)-2;
%Boucle for de l'étape 3 (on fixe le nbre d'itération)
Amax=100; % Amax délibérément trop grand
for a=1:Amax
    %remplissage des premières valeurs de u1 et u2 avec les cond à l'origine
    Cmoy=C1-((C1-C2)/(T1-T2))*T1;
    u1(1)=1;
    u2(1)=Cmoy;
    % Euler
    for n=1:N
        u1(n+1)=h*u2(n)+u1(n);
        u2(n+1)=u2(n)+h*(-cos(x(n))*u2(n)*u1(n)+sin(x(n)*x(n)));
    end
    T3=u1(N)-2;
    if (T3==0)
        break
    end
    C1=C2;
    C2=Cmoy;
    T1=T2;
    T2=T3;
end
hold on
plot (x,u1,'k')
u1(N)%pour afficher la valeur finale de u1 et vérifier que c'est bien 2


Dernière édition par nartois le Mar 13 Mai - 13:30, édité 1 fois

nartois
Enzyme
Enzyme

Nombre de messages : 14
Date d'inscription : 03/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Séance 9 - Exercice 2

Message  Noémie le Mar 13 Mai - 11:53

cool! Merci beaucoup!!!

Noémie
Enzyme
Enzyme

Nombre de messages : 12
Date d'inscription : 03/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Séance 9 - Exercice 2

Message  Noémie le Mar 13 Mai - 12:02

Enfait j'ai pas l'impression que tu as remplacé y(x) par y'(x)*y(x) pcq sinon dans ton euler tu devrais avoir u2(n+1)=u2(n)+h*(-cos(x(n))*u2(n)*u1(n)+sin(x(n)*x(n))). J'me trompe?

Noémie
Enzyme
Enzyme

Nombre de messages : 12
Date d'inscription : 03/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Séance 9 - Exercice 2

Message  nartois le Mar 13 Mai - 13:29

Juste !

Voilà, j'ai corrigé ce que tu m'as dit et j'ai remplacé la correction que j'avais proposée par une correction unique (plus de while). En fait, le mieux, c'est de limiter la dernière grande boucle for par un par un if - break (en l'occurrence, if (T3-2) = 0 on sort de la boucle et on va pas jusque Amax chosit délibérément trop grand. Si tu regarde dans le workspace tu verras qu'on est sorti de la boucle après seulement 8 itérations).

C'est mieux de limiter le for comme ça que par un Amax choisit au hasard ou par tatonnement...

nartois
Enzyme
Enzyme

Nombre de messages : 14
Date d'inscription : 03/10/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Séance 9 - Exercice 2

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