Cet ouvrage et des milliers d'autres font partie de la bibliothèque YouScribe
Obtenez un accès à la bibliothèque pour les lire en ligne
En savoir plus

Partagez cette publication

Universit´edeNice De´partementdeMathe´matiques NOM : PRENOM :
Date : Groupe :
L3MASS,anne´e2011-2012 . .
Feuille-question du TP 3 LesalgorithmesdEuleretdeRunge-Kuttadu2`emeordre
1 Programmationde l’algorithme d’Euler 0 Onappellealgorithmedere´solutiondunee´quationdi´erentielleordinairey=f(t, y) une fonction (t, y)7→Φ(t, y;hxiroppeaontimaodtieˆrtueenobnn)quiy˜(t+h) de la solution exacteyntaoi´equdelquiv´eriey(t+h) =y. Le nombrehs’appelle lesdpataoi.nitne´rgdepartirid´eeestLenudcondition initiale(t0, y0td)eesitedalusrereis´dcenoti=ti1+h=t0+ihet desyi= Φ(ti1, yii, h), en esp´erantqueyisoit une bonne approximation de la valeur de la solutiony(ti) telle quey(t0) =y0. On est satisfait si, tout chaqueTxrtpou´e,eh:=T /Nla limite, lorsqueNdevient grand (et donc le pas hdveeitnΔecn=adi´erepetit),ly(T)yNrtnectxataeealevreeue´zsrevste,ormaxiroppndteonti dautantplussicetteconvergenceestrapide,cest`adirequilnestpasn´ecessairedechoisirNtrop grandpouratteindreunepre´cisionsouhait´ee.Lalgorithmedeladroitetantentedˆua`Euler(1707-1783) consiste`aposer Φ(t, y, h) =y+hf(t, y).(1) 0 Nousallonslexp´erimentertoutdabordsurle´quationdie´rentielley=ydont voici le codescilab : clear ; xset("window",0) ; function ff=f(y); ff=-y; endfunction; function ff=ff(t,y); ff=f(y); endfunction; Les fonctionsf,ff, etfffsnoisvettronsdersioqe´ertonidnoitautiener´inquleelequ´eedndpe deyet pas det, mais la commandeodeexige une fonction de deux variables (t, yua;q)a`tnfff, elle t retourne le vecteur colonne(1,y) =(1,-y)’lorsquev=(t,y) ;elpeleetrmredemprpe´estnreelcah de directions” function ff=fff(t,v); ff=[1,-v(2)]’; endfunction; xr=0 :0.2 :2;yr=0 :0.4 :4;fchamp(fff,0,xr,yr) ; Saisissezleslignesci-dessuspouravoirunerepr´esentationg´eome´triquedenotree´quationdie´rentielle 0 y=yup,euedalosulitnoerenudrtnese´rp´engioatiqtr´eomlsgisiel-iedencsspoussouposerdisissuede (0,-a`-eridlleteuqe4)(cesty(0) = 4). Tmax=2 ;y0=4 ; N=100 ;petitpas=Tmax/N ; M=10 ;grandpas=Tmax/M ; t=0 :petitpas :Tmax; y=ode(y0,0,t,ff) ; plot(t,y) ;
Voici comment coder l’algorithme d’Euler sous forme d’une fonction : //Euler(t0,y0,pas) est une approximation de y(t0+pas) pour y(t0)=y0. function y=Euler(t0,y0,pas); y=y0+pas*ff(t0,y0) ; endfunction ; Saisissez-ladansscilab.Linstructionsuivantepermetalorsderepre´senterlepremierpasdelalgo-rithme, pourh= 0.urpermetzgrandpoemtnsaesoltniaer;eatcuxe´eerltsuilaulresdertsiveet-z2ovisiohc laetdonnerunschemadutrac´equevousobtenez. plot([0,grandpas],[y0, Euler(0,y0,grandpas)],’r-o’);
.
1