Table des matières Listings 1 Tests Algorithmique et Matlab
Transcription
Table des matières Listings 1 Tests Algorithmique et Matlab
Energétique I Sup'Galilée Méthodes Numériques II Année 2013-2014 Travaux pratiques - E.D.O. Durée : 8h00 8h30-12h30 et 13h30-17h30 Travail individuel et personnel Table des matières 1 Tests Algorithmique et Matlab 1 2 Résolution numérique d'équations diérentielles ordinaires 2.1 2.2 2.3 Rappels de schémas numériques usuels . . 2.1.1 Schéma d'Euler progressif . . . . . 2.1.2 Schéma de la tangente améliorée . 2.1.3 Schéma de Runge-Kutta d'ordre 4 2.1.4 Méthodes d'Adams-Bashforth . . . 2.1.5 Méthodes d'Adams-Moulton . . . . Schéma prédicteur-correcteur . . . . . . . Travail à eectuer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Le pendule pesant 3.1 3.2 3.3 Position du problème et équations diérentielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résolution numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Portrait de phase du pendule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Annexes 4.1 4.2 listings . . . . . . . . . . . . Quelques E.D.O. du premier 4.2.1 Exemple 1 . . . . . . 4.2.2 Exemple 2 . . . . . . 4.2.3 Exemple 3 . . . . . . . . . . ordre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 4 4 4 5 5 5 8 8 8 9 11 11 12 12 12 12 Listings 1 2 3 4 edo1d.m . . . . . redEUL1d.m . . . PenduleMovie.m PlotPendule.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 11 12 1 Tests Algorithmique et Matlab On dispose, entre autres, de la fonction black et du programme Quadrillagefigure fournis. Dans le programme Quadrillagefigure l'appel à la fonction Quadrillage a été mis en commentaire. 1 Q. 1 Quadrillage(imin,imax,jmin,jmax) permettant de générer un quadrillage imin à imax et les colonnes jmin à jmax. Voici un exemple avec la commande Quadrillage(-5,6,-3,7) Ecrire la fonction Matlab pour les lignes représentant uniquement les traits noirs sur la gure : quadrillage(−5,6,−3,7) et black(1,2) 6 5 4 3 2 ligne 1 0 −1 −2 −3 point (−3,−5) point (−2,−4) point (7,6) point (8,7) −4 −5 −3 −2 −1 0 1 2 3 4 5 6 7 colonne On peut tester cette fonction avec le programme Quadrillagefigure fourni pour obtenir la gure précédante. On dispose de la fonction black(i,j) qui dessine un pavé noir en ligne i et colonne j d'un quadrillage. Voici le résultat de la commande black(1,2) sur le quadrillage précédant. Q. 2 Damier(imin,imax,jmin,jmax) permettant d'obtenir un damier, sur le quadrillage asQuadrillage(imin,imax,jmin,jmax)), sachant que le carré en bas à gauche est noir. Voici Ecrire la fonction socié (commande un exemple d'utilisation : Damier(−3,9,−5,13) 9 6 3 0 −3 −5 −2 1 4 Q. 3 7 10 13 Ecrire la fonction mosaiqueB(n) permettant de créer la mosaïque représentée en Figure 3 sur le quadrillage Quadrillage(-n,n,-n,n) 2 mosaiqueB(23) mosaiqueB(24) 24 22 21 19 18 16 15 13 12 10 9 7 6 4 3 1 0 −2 −3 −5 −6 −8 −9 −11 −12 −14 −15 −17 −18 −20 −21 −23 −23 −20 −17 −14 −11 −8 −5 −2 1 4 7 10 13 16 19 22 −24 −24 −21 −18 −15 −12 −9 −6 −3 0 3 6 9 12 15 18 21 24 Figure 1 Résultat des commandes mosaiqueB(23) et mosaiqueB(24) Q. 4 Ecrire la fonction mosaiqueC(n) permettant de créer la mosaïque représentée en Figure 4 sur le quadrillage Quadrillage(-n,n,-n,n) mosaiqueC(23) mosaiqueC(24) 24 22 21 19 18 16 15 13 12 10 9 7 6 4 3 1 0 −2 −3 −5 −6 −8 −9 −11 −12 −14 −15 −17 −18 −20 −21 −23 −23 −20 −17 −14 −11 −8 −5 −2 1 4 7 10 13 16 19 22 −24 −24 −21 −18 −15 −12 −9 −6 −3 0 3 6 9 12 15 18 21 24 Figure 2 Résultat des commandes mosaiqueC(23) et mosaiqueC(24) A faire avant 10h30 Créer une archive compressée (format zip ou tar.gz) nommée <NOM>-TP1-Q1a4 contenant les chiers Quadrillage.m, black.m, Damier.m, mosaiqueB.m, mosaiqueC.m et tout autre chier permettant l'éxecution de Damier.m, mosaiqueB.m et mosaiqueC.m. Ici <NOM> correspond évidemment à votre nom. Envoyer un mail à votre enseignant de TP ayant pour sujet "<NOM> TP1 Q1a4" et en chier joint l'archive compressée créée précédement. 3 2 Résolution numérique d'équations diérentielles ordinaires Pour une explication détaillée voir le polycopié fourni CoursEDO.pdf 2.1 Rappels de schémas numériques usuels Dénition 2.1 (problème de Cauchy) f avec T f Soit l'application continue dénie par rt0 , t0 pt, y q : T s Rd ÝÑ ÞÝÑ Rd f pt, y q Ps0, 8s. Le problème de Cauchy revient à chercher une fonction y dénie par y : rt0 , t0 T s ÝÑ Rd t ÞÝÑ y ptq continue et dérivable, telle que y 1 ptq y pt0 q f pt, y ptqq, y r0s P Rd . @t P rt0 , t0 On note tn , n P v0, N w, une discrétisation régulière de rt0 , t0 Ts T s, y rns (2.1) y ptn q et f rns f ptn , y rns q (2.2) 2.1.1 Schéma d'Euler progressif " rn 1s y y r0s y rns y pt0 q hff rns , @n P v0, N 1w (2.3) Ce schéma est d'ordre 1. 2.1.2 Schéma de la tangente améliorée " rn 1s y y r0s y rns y pt0 q hff ptn r s h n 2,y r s q, @n P v0, N 1w h n 2f (2.4) Ce schéma est d'ordre 2. 2.1.3 Schéma de Runge-Kutta d'ordre 4 rns k1 rns k2 r ns k3 rns k4 y rn s 1 f ptn , y rns q rns f ptn h2 , y rns h2 k 1 q rns h h f ptn 2 , y rns 2 k 2 q rns f ptn h, y rns hkk 3 q r n s r ns rns 2kk 2 2kk 3 y rns h6 pk 1 (2.5) rns k 4 q. 2.1.4 Méthodes d'Adams-Bashforth On note f rns f ptn , y rns q h rns 3ff f rn1s . 2 h r n 1s r ns y y 23ff rns 16ff rn1s 5ff rn2s . 12 h r n 1s r ns y y 55ff rns 59ff rn1s 37ff rn2s 9ff rn3s . 24 Ces schémas sont explicites et leur ordre correspond au nombre de pas. y rn s 1 y rns 4 (2.6) (2.7) (2.8) 2.1.5 Méthodes d'Adams-Moulton y rn 1 y rn 1 y rn Ces schémas sont s y rns s y rns y rns s 1 h rn 1s f f rns . 2 h rn 1s 5ff 8ff rns f rn1s . 12 h rn 1s 9ff 19ff rns 5ff rn1s 24 (2.9) (2.10) f rn2s . (2.11) implicites et leur ordre correspond au nombre de pas plus un. 2.2 Schéma prédicteur-correcteur Il s'agit là d'une des méthodes les plus employées. Une méthode de prédiction-correction procède en deux temps : on fournit explicitement une valeur approchée de la solution au nième pas (soit y rn 1s ), puis on calcule la valeur correspondante de f (soit f alors une valeur corrigée ). rn 1s ) et enn, on subsitue cette valeur dans un schéma implicite (on obtient pour n variant de 0 à N 1 faire Calculer une valeur approchée y rn rn 1s s par un schéma explicite ; 1 Evaluer f f ptn 1 , y rn 1s q; r n 1s y q à l'aide d'un schéma implicite en remplaçant l'inconnue par y rn npour s q; 1 2.3 Travail à eectuer Le but est de représenter graphiquement les erreurs données par plusieurs schémas et de retouver numériquement leur ordre. Pour celà il faudra pouvoir connaitre explicitement la solution du problème de Cauchy étudié. Voir l'annexe 4.2 pour plusieurs exemples de problèmes de Cauchy avec solutions. Q. 5 1. Ecrire les cinq fonctions Matlab suivantes correspondant à la résolution d'un problème de Cauchy : [t,Y]=redEUP(f,a,b,yo,N) : [t,Y]=redTGA(f,a,b,yo,N): [t,Y]=redRK4(f,a,b,yo,N): [t,Y]=redAB4(f,a,b,yo,N): [t,Y]=redPC3(f,a,b,yo,N): redEUP.m). redTGA.m). de Runge et Kutta d'ordre 4 (chier redRK4.m). d'Adams-Bashforth d'ordre 4 (chier redAB4.m). schéma d'Euler progressif (chier schéma de la tangente améliorée (chier schéma schéma schéma de type prédiction-correction utilisant les schémas d'Adams- redPC3.m). 0 0 Ici les paramètres f,a,b,yo correspondent respectivement aux f , t , t T, y r0s du problème de Cauchy r ns (2.1-2.2). Enn, Y est le tableau contenant les y , n P t0, , N u et t est le tableau contenant les n+1 n nombres t , n P t0, , N u Bashforth et dAdams-Moulton d'ordre 3 (chier 2. Ecrire le programme principal (chier erreur.m) permettant le calcul et le tracé des erreurs. Pour une n yn y n méthode donnée le tracé de l'erreur correspond au tracé de l'ensemble des points t0, , N u. pt , abspy r s y pt qqq, n P Voir la gure 3 pour un exemple de tracé. 3. Ecrire le programme principal (chier ordre.m) permettant de calculer numériquement l'ordre des 5 sché- mas et de le représenter. Voir la gure 4 pour un exemple de tracé. 5 −4 EUP x 10 −6 TGA x 10 0.07 6 0.06 5 0.03 Erreur 4 0.04 Erreur Erreur 0.05 AB4 1 3 2 0.02 1 0.01 0 0 0 5 t −9 x 10 10 0 0 5 t −5 RK4 x 10 6 2.5 5 2 10 0 5 t 10 PC3 Erreur Erreur 4 3 1.5 1 2 0.5 1 0 0 0 5 t 10 0 5 t 10 Figure 3 Valeurs absolues des erreurs des 5 schémas Ordre numerique des schemas 0 10 EUP : 1 AB4 : 4.0394 TGA : 1.9996 RK4 : 3.9771 PC3 : 2.9973 −5 Erreur en norme L∞ 10 −10 10 −15 10 −3 10 −2 −1 10 10 h Figure 4 Ordres des 5 schémas 6 0 10 A faire avant 12h30 Créer une archive compressée nommée <NOM>-TP1-Q5 contenant les chiers redEUP.m, redTGA.m, redAB4.m, redRK4.m, redPC3.m, erreur.m et ordre.m. Ici <NOM> correspond évidemment à votre nom. Envoyer un mail à [email protected] ayant pour sujet "<NOM> TP1 Q5" et en chier joint l'archive compressée créée précédement. 7 3 Le pendule pesant 3.1 Position du problème et équations diérentielles On considère un pendule de masse M , xé à une tige rigide de longueur L et de masse négligeable, dans un milieu visqueux dont le coecient de viscosité vaut k. On note θ l'angle formé par le pendule et l'axe verticale : il vérie l'équation diérentielle suivante (principe fondamental de la dynamique) : θ2 ptq avec les conditions initiales k 1 g θ ptq, sinpθptqq L M L2 @t ¥ 0 θp0q θ0 et θ1 p0q θ01 . θ0 est l'angle initial en radian et θ01 la vitesse angulaire initiale en radian/seconde. (3.1) (3.2) L θ M Figure 5 Pendule pesant On peut prendre, par exemple, M 1kg, L 1m, g 9.8m.s2 et k 0.5U SI. L'E.D.O. (3.1-3.2) ne peut être résolue de manière exacte. On se propose d'utiliser la méthode de RungeKutta d'ordre 4 pour l'étude des diérents types de mouvements possibles, suivant les conditions de l'expérience (dans le vide k 0, dans l'air k 0.1, dans l'eau k 0.5,...) et les conditions initiales imposées (pendule lancé, laché, ...). On souhaite ensuite tracer les deux courbes discrètes θptq et θ1ptq. 3.2 Résolution numérique Q. 6 (Sur feuille) 1. Ecrire de manière détaillée le problème de Cauchy associé à (3.1-3.2). 2. Quelles sont les données du problème de Cauchy obtenu ? (avec leur type détaillé : entier, réel, complexe, vecteur, matrice, fonction, ...) 3. Quelles sont les inconnues du problème de Cauchy obtenu ? (avec leur type détaillé : entier, réel, complexe, vecteur, matrice, fonction, ...) 4. Expliquer, en détaillant, comment résoudre numériquement (3.1-3.2) par la méthode de Runge-Kutta d'or- dre 4. 8 Q. 7 (Matlab) 1. Ecrire la fonction Matlab fCauchy (chier fCauchy.m) correspondant à la fonction f du problème de Cauchy associé à (3.1-3.2). (On pourra utiliser des variables globales pour les paramètres physiques g. Voir l'aide sur global de Matlab.) fonction redRK4.m (déjà écrite dans le cas 1d) M, k, L 2. Reprendre le et et la modier si besoin pour l'adapter à la résolution de problèmes de Cauchy correspondant à des systèmes de 3. Ecrire le programme prg4 (chier prg4.m) d E.D.O. du premier ordre, d ¡ 1. permettant de représenter la position et la vitesse du pendule au cours du temps. PenduleMovie.m et de la fonction PlotPendule.m (voir annexe 4.1), écrire le PenduleVideo.m permettant de réaliser une vidéo représentant le pendule en mouvement au temps. 4. En s'aidant du programme programme cours du A faire avant 15h30 Rendre la réponse à la question 6. N'oubliez pas d'écrire votre nom sur les documents rendus! Créer une archive compressée nommée <NOM>-TP1-Q7 contenant les chiers fCauchy.m, prg4.m, redrk4.m et PenduleMovie.m, ainsi que tout autre code nécessaire à l'exécution de prg4 et PenduleMovie. Ici <NOM> correspond évidemment à votre nom. Envoyer un mail à [email protected] ayant pour sujet "<NOM> TP1 Q7" et en chier joint l'archive compressée créée précédement. 3.3 Portrait de phase du pendule Le portait de phase du pendule (M, k et L xé) est la représentation des courbes paramétrées pxptq, y ptqq pθptq, θ1 ptqq calculée avec un grand nombre de données initiales (voir les gures 6 et 7) Q. 8 (Sur feuille) Soit le portrait de phase d'un pendule sans viscosité représenté en gure 6. A partir de celui-ci, pθp0q; θ1 p0qq A p5; 0q, 1 décrire le mouvement du pendule lorsque pθ p0q; θ p0qq B pπ; 1q, 1 décrire le mouvement du pendule lorsque pθ p0q; θ p0qq C pπ; 1q. 1. décrire le mouvement du pendule lorsque 2. 3. Q. 9 (Sur feuille) Soit le portrait de phase d'un pendule avec viscosité représenté en gure 7. A partir de celui-ci, pθp0q; θ1 p0qq E p0; 11q, 1 décrire le mouvement du pendule lorsque pθ p0q; θ p0qq F p6π; 10q. 1. décrire le mouvement du pendule lorsque 2. Q. 10 (Matlab) PPSansViscosite.m permettant de représenter le portrait de phase M L 1 et k 0 (gure 6). Ecrire le programme PPAvecViscosite.m permettant de représenter le portrait de phase du pendule de paramètres M L 1 et k 0.5 (gure 7). 1. Ecrire le programme du pendule de paramètres 2. A faire avant 17h30 Rendre les réponses aux questions 8 et 9. N'oubliez pas d'écrire votre nom sur les documents rendus! Créer une archive compressée nommée <NOM>-TP1-Q10 contenant les chiers PPSansViscosite.m et PPSansViscosite.m, ainsi que tout autre code nécessaire à leur exécution. Ici <NOM> correspond évidemment à votre nom. Envoyer un mail à [email protected] ayant pour sujet "<NOM> TP1 Q10" et en chier joint l'archive compressée créée précédement. 9 Représentation des courbes paramétrées (θ(t),θ’(t)) 8 6 4 2 θ’ B A 0 C −2 −4 −6 −8 0 5 θ 10 15 20 Figure 6 Pendule pesant sans viscosité - Portrait de phase Représentation des courbes paramétrées (θ(t),θ’(t)) 15 E 10 θ’ 5 0 −5 F −10 −15 −5 0 5 10 θ 15 20 25 Figure 7 Pendule pesant avec viscosité - Portrait de phase 10 30 4 Annexes 4.1 listings Listing 1 edo1d.m % Resolution % Trouver du y probleme solution % y ' ( t )=f ( t , y ( t ) ) , % y ( a )=ya % Utilisation un du reel Cauchy ( s c a l a i r e , m=1) de pour t dans [a,b] donne . schema % representation de d ' Euler graphique de pour la la resolution solution exacte numerique et de la et solution % approchee . clear a l l close a l l f=@ ( t , y ) y * sin ( t ) ; y e x=@ ( t ) exp ( cos ( t ) ) ; a =0; b =6* pi ; [ t , y ]= r e d E U L 1 d ( f , a , b , y e x ( a ) , 2 0 0 0 ) ; y E x=y e x ( t ) ; figure ( 1 ) plot ( t , y , ' b ' , t , yEx , ' r ' ) legend ( ' E u l e r ' , ' E x a c t e ' ) xlabel ( ' t ' ) print d e p s c 2 e d o 1 d . eps Listing 2 redEUL1d.m function [ t , Y ]= r e d E U L 1 d ( f , a , b , Y0 , n ) % Resolution % | % | % | % par du Trouver de a v e c Y( a )=Y0 un le schema : fonction % n : nombre d ' Euler du Cauchy fonction Y Y' ( t )=f ( t ,Y( t ) , % f probleme la : pour reel ( s c a l a i r e , m=1) [a,b] t > R dans telle que [a,b] donne . explicite . probleme d' intervalles de Cauchy dans h =( b a ) / n ; t=a : h : b ; Y=zeros ( 1 , n +1) ; Y ( 1 )=Y0 ; for i =1: n Y ( i +1)=Y ( i )+h * f ( t ( i ) , Y ( i ) ) ; la discretisation de [a,b] end Listing 3 PenduleMovie.m % Creation % Matlab % Teste clear a l l close a l l d ' un fichier avi v e r s i o n >= 2010 b avec version ? 2012 b F r a m e R a t e =30; S t e p =10; T =5; % temps f i n a l N=T * F r a m e R a t e * S t e p ; L =3; R = 0 . 2 ; % P a r a m e t r e s g r a p h i q u e s % pour simuler la t h e t a=@ ( t ) pi * t ; t =0: T / N : T ; rotation : du pendule physiquement faux ( sauf sans viscosite n=length ( t ) ; figure ( 1 ) ; % writerObj = VideoWriter ( ' VideoTest . avi ' , ' Motion JPEG AVI ' ) ; set ( w r i t e r O b j , ' F r a m e R a t e ' , F r a m e R a t e ) ; open ( writerObj ) ; 11 et en apenseteur ! ) for j =1: S t e p : n cla PlotPendule ( L , R , theta ( t ( j ) ) ) ; t i t l e ( s p r i n t f ( ' \\ t h e t a (% f ) =% f ' , t ( j ) , t h e t a ( t ( j ) ) ) ) axis on drawnow w r i t e V i d e o ( w r i t e r O b j , getframe ( gcf ) ) ; end close ( w r i t e r O b j ) ; Listing 4 PlotPendule.m function P l o t P e n d u l e ( L , R , t h e t a ) % Representation d ' un % et disque ) R ( rayon du hold on % axe de pendule en de parametre position L ( longueur angulaire de la tige ) theta rotation plot ( 0 , 0 , ' ro ' ) y =[ L : 1 / 1 0 0 : 0 ] ; % Coordonnee de la tige X= y * sin ( t h e t a ) ; Y=y * cos ( t h e t a ) ; plot ( X , Y , ' r ' ) C =[ L * sin ( t h e t a ) ; L * cos ( t h e t a ) ] ; t =0: pi / 1 0 0 : 2 * pi ; % Coordonnee du % Centre du disque cercle XC=C ( 1 )+R * cos ( t ) ; YC=C ( 2 )+R * sin ( t ) ; f i l l ( XC , YC , ' r ' ) ; LL=L +2* R ; axis e q u a l axis ([ LL LL LL LL ] ) axis o f f hold o f f 4.2 Quelques E.D.O. du premier ordre 4.2.1 Exemple 1 Soit α P R. L'E.D.O. a pour solution y ptq sinptq " 1 y ptq cosptq, α, @t ¥ 0, " 1 y ptq sinptq, β, @t ¥ 0, y p0q α. 4.2.2 Exemple 2 Soit β P R. L'E.D.O. a pour solution y ptq cosptq y p0q 1 β. 4.2.3 Exemple 3 L'E.D.O. a pour solution y ptq exppcosptqq. " 1 y ptq y p0q yptq sinptq, @t ¥ 0, e expp1q, 12