TP5. Equations différentielles, initiation aux schémas numériques
Transcription
TP5. Equations différentielles, initiation aux schémas numériques
L2-maths Cours Informatique appliquée aux mathématiques TP5. Equations différentielles, initiation aux schémas numériques Créer un dossier TP5 dans lequel vous rangez ce document et créez-y un fichier monTP5.m dans lequel vous tapez vos commandes avant de les faire exécuter dans la fenêtre de commande. Nous nous proposons de résoudre le problème de Cauchy pour l’équation différentielle u̇ = f (u), (1) c’est-à-dire trouver une fonction u(t) qui vérifie (1) sur un intervalle (0, T ), avec une condition initiale u(0) = u0 , et ce par plusieurs moyens. Programmation 1 (Schéma d’Euler Explicite). On se donne des points t0 = 0 < t1 < . . . < tN = T , espacés de h, et on définit une suite par un+1 − un = f (un ) h 1. Ecrire une fonction function [t,u]=Euler(f,T0,Tfinal,u0,N); % EULER solves the differential equation du/dt=f(u) with forward Euler % function [t,u]=Euler(f,T0,Tfinal,u0,N) solves the system of % first order ordinary differential equations du/dt=f(u) using % the forward Euler method. f is a string containing the function % name of the right hand side, the simulation runs from starting time % T0 to the final time Tfinal, starting with the initial value u0 % doing N steps. . 2. L’appliquer à f (u) = u sur l’intervalle [0, 1] pour N = 10 avec u0 = 1. 3. Tracer sur le même graphique la solution exacte U et la solution du schéma u, définie sur les points de grille. Calculer l’erreur maximale e = max|U (ti ) − ui |. 4. Reproduire les calculs pour N = 10, 20, 40. Calculer les erreurs e1 , e2 , e3 . Représenter ces quantité sur un graphique en échelle log-log. Que remarquez vous ? Pourquoi ? Programmation 2 (Schéma de Runge). 1. On introduit le script function [t,u]=Runge(f,T0,Tfinal,u0,n); % RUNGE solves the differential equation du/dt=f(t,u) using Runge’s method % function [t,u]=Runge(f,T0,Tfinal,u0,n) solves the system of % first order ordinary differential equations du/dt=f(t,u) using % Runge’s 2nd order method. f is a string containing the function % name of the right hand side, the simulation runs from starting time % T0 to the final time Tfinal, starting with the initial value u0 % doing n steps of integration. dt=(Tfinal-T0)/n; u(:,1)=u0; t=T0; for i=1:n, Y1=u(:,i); Y2=u(:,i)+dt/2*feval(f,t,Y1); u(:,i+1)=u(:,i)+dt*feval(f,t+dt/2,Y2); t=t+dt; end; t=(T0:dt:Tfinal)’; u=u’; A quelle discrétisation de l’équation différentielle correspond-il ? 2. L’appliquer à f (u) = −u sur l’intervalle [0, 1] pour N = 10 en écrivant un script function r=f(t,u) . 3. Tracer sur le même graphique la solution exacte U et la solution du schéma ur, définie sur les points de grille. Calculer l’erreur maximale e = max|U (ti ) − uri |. 4. Reproduire les calculs pour N = 10, 20, 40. Calculer les erreurs er1 , er2 , er3 . Représenter ces quantités sur un graphique en échelle log-log en même temps que les erreurs sur le schéma d’Euler. Que remarquez vous ? Qu’est-ce que cela signifie ? Vous devez obtenir quelque chose comme ça : −1 10 Euler explicite Runge pente 1 pente 2 −2 10 −3 10 −4 10 −5 10 1 10 Exercice 1 (Résolution exacte). On cherche maintenant à résoudre le Problème de Cauchy u̇ = u(1 − u). (2) 1. Montrer que la solution générale de l’équation (2) s’écrit, dans certaines conditions, sous la forme Cet u= 1 + Cet Calculer la constante C pour que u(0) = 12 . 2. Calculer des solutions approchées par les schémas de Euler et Runge. Programmation 3 (Schéma d’Euler implicite). 1. On considère maintenant l’équation linéaire f (u) = 20u, sur l’intervalle de temps [0, 1], avec 10 points. Tracer sur le même schéma la solution approchée calculée avec le schéma de Euler implicite, et la solution exacte. Que constatez vous ? C’est un problème de stabilité. 2. On introduit le schéma de Euler implicite un+1 − un = f (un+1 ) h Ecrire le script matlab permettant de réaliser ce schéma pour f (u) = 20u. Tracer la solution sur le même graphique que précédemment (utiliser la fonction hold on). Que constatez vous ? 3. Comment proposez-vous d’utiliser ce schéma pour une fonction f non linéaire du type de celle rencontrée dans l’exercice précédent.