Salut à tous,
Voilà je dispose de deux bouts de code :
Le fichier question2.m
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function question2(t,ci_init) options=odeset('Events',@equilibrium); [t,y] = ode45(@odefunction,t, ci_init,options) ; plot(t,y(:,1),'r-',t,y(:,2)/1000,'b-.',t,y(:,3)/1000,'g-.',t,y(:,4),'m--',t,y(:,5),'c--') ; legend('T', 'Ca', 'Cs', 'Wa', 'Ws') ; Xlabel('temps (annees)') ; ylabel('T (°C) Ca (Gt) Cs (Gt) Wa (g/cm^2) Ws (g/cm^2)'); title('Etude du cycle carbone-climat') ; grid; end
Le fichier equilibrium.m
Voilà ce que j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 function [lookfor stop direction] = equilibrium(t,x) actualState = odefunction(x); if abs(actualState) <= [0.01 0.01 0.01 0.01 0.01]' lookfor = 0; %Searches for this expression set to 0 stop = 1; %Do not stop when event is located direction = 0; %Either direction accepted disp(['Equilibre atteint pour tous les paramètres après ' num2str(floor(t)) ' années']) else lookfor = 1; stop = 0; %Do not stop when event is located direction = 0; %Either direction accepted end end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 question2([0 200], [15 3000 2000 3 9]) Equilibre atteint pour tous les paramètres après 91 années Equilibre atteint pour tous les paramètres après 89 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années Equilibre atteint pour tous les paramètres après 88 années
Or, j'aimerais que la phrase indiquant que l'équilibre est atteint après x années ne s'affiche qu'une seule fois !
Normalement, dès que le lookfor = 0 le calcul avec ODE45 doit s'arrêter, au début ça marchait, maintenant plus, quelqu'un peut m'aider ???
Partager