Dans le cadre de mon projet de première année en ingénieur civil, il m'est demandé d'utiliser la méthode d'Euler explicite pour résoudre des équations différentielle. J'ai reussi à faire odefun avec les différentes équations mais je ne comprends pas comment utiliser Euler pour les résoudre.
voici odefun
function [dVar] = odefunbon(t,Var) T = Var(1); %la température moyenne de la terre Ca = Var(2); %la quantité de carbone contenue dans l’atmosphère Cs = Var(3); %la quantité de carbone contenue dans le sol et la végétation Wa = Var(4); %la quantité de vapeur d’eau contenue dans l’atmosphère Ws = Var(5);%la quantité d’eau contenue dans le sol %GW xw=[1.00 9.50 18.00]; yw=[0.00 1.00 0.00]; ordrew=length(xw)-1; pw = polyfit(xw,yw,ordrew); GW(Ws)= polyval(pw,Ws); %GT xt=[5 18 25.5 33 40]; yt=[0 0.8 1 0.75 0]; ordret=length(xt)-1; pt = polyfit(xt,yt,ordret); GT(T)=polyval(pt,T); %BILAN DE CARBONE---------------------------------------------------------- m = 0.08; % l’inverse du temps de vie moyen de la végétation e(t)=0; %émissions de CO2 anthropiques Pmax = 200; GC(Cs)=4*Cs*Ca*(1/(Ca+Cs)^2); P=Pmax*GT(T)*GC(Cs)*GW(Ws); %productivité dCs=P-m*Cs; dCa=-P+m*Cs+e(t); %BILAN DE L'ENERGIE-------------------------------------------------------- S = 340;%énergie apportée par le soleil k = 16.9; %la capacité thermique de la planète kw=2257; %la chaleur latente d’évaporation de l’eau Yc = 1-(0.4*Ca)/(750+Ca); Yw = (1.02258+Wa^0.409)/(1+2.258*Wa^0.409); Y = 5.67e-8 * Yc * Yw; %coefficient de proportionnalité Wasat = exp((17.638*T)/(T+243.4)); %quantité de saturation en eau q = Wa/Wasat; %QUANTITE DE NUAGES if q>=0 && q<=0.5 n = 0; end if q>0.5 && q<1 n = (2*q)-1; end if q>=1 n = 1; end %QUANTITE DE TERRE RECOUVERTE PAR DE LA NEIGE if T>15 Fsn=0; end if T>=-15 && T<=15 Fsn = 1-(T+15)/30; end if T<-15 Fsn=1; end Vg=1-Cs/(600+Cs); %végétation p/r au sol aA=0.1; %albedo de l’atmosphère supérieure sans nuage aSurf=( (0.4*Vg + (1-Vg) /10)*(1-Fsn)) + 0.7*Fsn; %albedo de surface a = aA + 0.4*n + aSurf*(0.81-0.56*n); %albedo %BILAN DE L'EAU------------------------------------------------------------ v=0.192; kveg=0.7; ksol=7; Eveg=P*kveg; Esol= (Wasat-Wa)*(Ws/ksol); E=Vg*Esol+Eveg*(1-Vg); %évaporation et l’évapotranspiration des végétaux H=v*n*Wa; %pluie tombée en un an dWa=-H+E; dWs=H-E; %-------------------------------------------------------------------------- dT = (1/k)*(S*(1-a)-Y*T^4-kw*dWs); dVar(1) = dT; dVar(2) = dCa; dVar(3) = dCs; dVar(4) = dWa; dVar(5) = dWs;
voici mon brouillon de euler.
function [G,U] = EulerExplicite(Inter_t,y0,h)
t1= Inter_t(1); t2= Inter_t(2); h=0.5; % ici j'ai donné une valeur a h mais il nous est demander de le definir de manière empirique t0=0; y(i) = x(t1); y(i+1)=x(t2); while i=1:5; %nb de derivés y0 = x0(t0); while F = t1 : h : t2; (dVar)=odefun (t0:y0); y(i+1) = y(i) + h*dVar(i); t(i+1) = t(i)+ h; G(F:i) = y(i+1); U(F) = t(i+1); end end
si quelqu'un s'y connais bien en mathlab merci d'avance
- Edité par AxelMillard 31 mars 2020 à 10:39:09
Euler explicite : Matlab
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.