Forum des Bioingénieurs de l'ULB
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-45%
Le deal à ne pas rater :
PC Portable LG Gram 17″ Intel Evo Core i7 32 Go /1 To
1099.99 € 1999.99 €
Voir le deal

ode23, 45, 113 ....

3 participants

Aller en bas

ode23, 45, 113 .... Empty ode23, 45, 113 ....

Message par Hecq... Jeu 7 Mai - 21:05

Quel ode devons nous utiliser pour la vérifications des problèmes de Cauchy ? 15s, 23, 23t, 45, 113, 23tb, 15i...
Et comment l'utilise t'on ? Very Happy (avec quad et fzero j'ai aucun problème, mais là je cale sérieusement Sad ).
Un exemple ça serait parfait ^^.
Hecq...
Hecq...
Psychotrope
Psychotrope

Masculin
Nombre de messages : 285
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 31/08/2008

http://www.hecq.de

Revenir en haut Aller en bas

ode23, 45, 113 .... Empty Re: ode23, 45, 113 ....

Message par Claire Jeu 7 Mai - 21:25

Tu utilises ode45 à la fin de ton programme
Tu inscris cela:

[T,Z]=ode45(@fun,[0],[-1]);
plot(T,Z,'r')

T=x
Z=y (si j'ai bien compris)
@fun: cela sert a appeler la fonction que j'ai appelé fun qui va résoudre le problème de cauchy
Donc tu crées un dossier (fun dans ce cas-ci) dans lequel tu écris dedans cela:

function cauchy=fun(x,y)
cauchy=(-5./y.^2+sin(x/5));

La 2eme partie dans la parenthèse c'est "l'évolution" de tes x (donc ton point de départ et d'arrivée, avec le pas, qui est le même que celui que tu as choisi pour représenter le graphe de tes solutions)
La 3eme partie de ta parenthèse c'est ta condition initiale (ici y(0)=-1)

Puis tu représentes le graphe de la solution trouvée par ode45 et tu la compare avec le tien!

voila j'espere que cela sera clair... Very Happy


je te met le programme dans lequel je l'avais appliqué

Code:
clear;clc;clf;
a=0;
b=15;
N=50;
h=(b-a)/N;
x=a:h:b;
y(1)=-1;
f=inline('-5./y.^2+sin(x/5)','y','x');
for n=1:N
k1=f(y(n),x(n));
k2=f(y(n)+h*k1,x(n+1));
y(n+1)=y(n)+h/2*(k1+k2);
end
plot(x,y)
hold on
grid on

[T,Z]=ode45(@fun,[0],[-1]);
plot(T,Z,'r')
Claire
Claire
Mitochondrie
Mitochondrie

Féminin
Nombre de messages : 61
Année d'étude : MA1
Section : Bioingénieur
Option : Environnement
Date d'inscription : 15/09/2008

Revenir en haut Aller en bas

ode23, 45, 113 .... Empty Re: ode23, 45, 113 ....

Message par Hecq... Ven 8 Mai - 15:40

Merci Very Happy
On est obligé de passer par une fonction ?

edit :

non le passage par fonction n'est pas nécessaire, tu peux mettre le nom de la variable d'équation à la place de ton appel à la fonction, chez toi ça donnerait ça:

Code:
[T,Z]=ode45(f,[0:h:15],[-1]);
plot(T,Z,'r')

La différence entre ode23, 45 113 ... est le nombre d'opération que va réaliser la fonction, 113 sera plus précis que 23 (enfin ça c'est en théorie, parce que en pratique je vois pas vraiment de différence)
Hecq...
Hecq...
Psychotrope
Psychotrope

Masculin
Nombre de messages : 285
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 31/08/2008

http://www.hecq.de

Revenir en haut Aller en bas

ode23, 45, 113 .... Empty Re: ode23, 45, 113 ....

Message par Maureen Mar 12 Mai - 10:33

Chez moi, ça fonctionne pas quand je mets simplement [T Z]=ode45(@f,[a:h:b],[0]); (donc je fais appel à la fonction f que j'ai définie au début). Matlab me dit que f est une variable, je comprends pas pq? (c'est comme quand je veux créer un vecteur y, par exemple: j'écris y=f(x); et matlab dit que j'ai pas bien défini le f pour faire ce genre d'opération...).
J'ai mis un de mes codes, peut-etre que qqn saurait m'expliquer ce qui ne va pas dans ce que je fais? merci

Code:
clc;clear;
f=inline('(x.^2+2)*cos(x)','x');
N=500;
a=0;b=pi/2;
h=(b-a)/N;
x=a:h:b;
y(1)=0;
for n=1:N
    y(n+1)=y(n)+h*f(x(n));
end
y(end)
plot(x,y);hold on
[T Z]=ode45(@f,[a:h:b],[0]);
Z(end)
plot(T,Z,'r')

Maureen
Dopamine
Dopamine

Féminin
Nombre de messages : 75
Année d'étude : MA2
Section : Bioingénieur
Date d'inscription : 14/09/2008

Revenir en haut Aller en bas

ode23, 45, 113 .... Empty Re: ode23, 45, 113 ....

Message par Claire Mar 12 Mai - 12:40

Si tu ne fais pas d'appel à une fonction je crois que tu dois enlever le "@" Very Happy
Par contre j'ai essayé de le faire sans appel et cela ne marche pas!!
Hecq???? Help!!! (comprend pas comment tu as fait) : Shocked
Claire
Claire
Mitochondrie
Mitochondrie

Féminin
Nombre de messages : 61
Année d'étude : MA1
Section : Bioingénieur
Option : Environnement
Date d'inscription : 15/09/2008

Revenir en haut Aller en bas

ode23, 45, 113 .... Empty Re: ode23, 45, 113 ....

Message par Hecq... Mar 12 Mai - 14:11

Code:
%% EULER EXPLICITE

clc;clear;clf;

f=inline('(-5/(y*y))+sin(x/5)');

y(1)=-1;
x(1)=0;
h=0.01;
a=0;
b=15;
N=(b-a)/h;
for n=1:N
    x(n+1)=x(n)+h;
    y(n+1)=y(n)+h*f(x(n),y(n));
end
plot (x,y,'r')
grid on
hold on

%% HEUN

for n=1:N
    x(n+1)=x(n)+h;
    for n=1:N
        k1=(-5/(y(n)*y(n)))+sin(x(n)/5);
        k2=(-5/((y(n)+h*k1)^2))+sin(x(n+1)/5);
        y(n+1)=y(n)+h*(k1+k2)/2;
    end
end
plot(x,y,'k')

% Vérification :

[T,Z]=ode45(f,[0:h:15],[-1]);
plot(T,Z,'g')

j'ai ça avec appel de fonction qui marche parfaitement ...

mais pour cette exercice je n'arrive pas à le faire fonctionner Neutral je suis en train de me creuser la tête pale
Hecq...
Hecq...
Psychotrope
Psychotrope

Masculin
Nombre de messages : 285
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 31/08/2008

http://www.hecq.de

Revenir en haut Aller en bas

ode23, 45, 113 .... Empty Re: ode23, 45, 113 ....

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser