DEVOIR MAT-2910: Analyse numérique pour l ingénieur Automne 2013 Notes Vous ne pouvez pas obtenir de l aide du CDA pour ce devoir Le présent devoir doit obligatoirement être réalisé avec le logiciel Matlab. Date de remise : au plus tard le vendredi 6 décembre à 11h30 (matin). Lieu de remise : VCH-1056 Secrétariat du Département de mathématiques et de statistique. Aucun retard ne sera toléré. Tout travail remis après l échéance se verra attribuer la note 0. 10 points sont alloués pour la qualité de la présentation et du français. Une attention particulière sera portée à la qualité (lisibilité) des figures. L utilisation de la couleur pour l impression des figures est recommandée. Lorsqu on demande d utiliser une méthode numérique vue en cours, vous devez utiliser le programme correspondant dans la banque de programmes Matlab associée au manuel du cours (voir site web du manuel). On remettra une copie papier du travail contenant les réponses aux questions, les figures et les commentaires demandés. De plus, on imprimera en annexe tous les fichiers Matlab (.m) demandés dans le présent travail, mais pas les programmes Matlab de la banque de programmes associée au manuel du cours. Le devoir peut être réalisé en équipe formée par au plus trois personnes. L ensemble des documents sera mis dans une grande enveloppe sur laquelle on écrira le nom et le numéro de matricule de chaque membre de l équipe. Tout plagiat, même partiel, sera sanctionné (voir plan de cours). 1
1 Motivation Dans de nombreux problèmes scientifiques, il arrive fréquemment qu une variable y soit définie implicitement en fonction d une autre variable x par une relation de la forme f(x, y) = 0. (1) Par exemple, l équation (1) peut représenter la solution d une équation différentielle ou encore l équation d une courbe de niveau d une fonction de deux variables z = f(x, y). Une autre source de problèmes est la recherche des solutions d équilibre d une équation différentielle dw = f(λ, w) dt dépendant d un paramètre physique λ, qui sont caractérisées par dw = 0, c est-à-dire dt f(λ, w) = 0. Le but de ce travail consiste à programmer des algorithmes particulièrement efficaces pour calculer la valeur approchée d une fonction implicite. La difficulté du problème provient du fait qu il peut exister plusieurs valeurs possibles de y pour une même valeur de x. 2 Méthodes de continuation On notera par f x (x, y) et f y (x, y) les dérivées partielles de f(x, y) par rapport à x et y respectivement. Dans la suite, nous supposerons que le point (0, 0) satisfait l équation (1), c est-à-dire que f(0, 0) = 0. De plus, on supposera que f y (0, 0) 0. Partie A Pour x = x 0 fixé, on peut appliquer la méthode de Newton pour calculer la valeur de y en résolvant l équation g(y) = f(x 0, y) = 0. Malheureusement cette stratégie ne fonctionne pas en général à cause du manque d information suffisante sur le choix du point de départ pour l algorithme de Newton. Le principe de la méthode de continuation consiste à suivre l évolution de y(x) à partir de la solution connue (0, 0). Voici un premier algorithme. Algorithme A 1. Poser x 0 = 0 et y 0 = 0. 2
2. Pour n = 0, 1, 2,..., N, faire les étapes suivantes. 3. Poser x n+1 = x n + x. 4. Choisir comme point de départ pour l algorithme de Newton y (0) = y n. 5. Résoudre par la méthode de Newton l équation g(y) = f(x n+1, y) = 0. 6. Poser y n+1 = y, y étant la solution obtenue à l étape 5. 7. Aller à l étape 2. Question 1. (15 points) Écrire une fonction Matlab qui réalise l algorithme A ci-dessus. Voici les caractéristiques requises du programme. a) Données d entrée: b) Sorties : la fonction f(x, y) et les dérivées partielles utiles le pas x d incrémentation de x, le nombre N de pas, la tolérance ɛ et le nombre maximum d itérations N max pour la méthode de Newton. les coordonnées x n et y n, pour n = 0, 1, 2,..., N, le nombre nécessaire d itérations pour avoir la convergence de la méthode de Newton pour chaque valeur de n. c) Pour l étape 5 (méthode de Newton), le programme fera appel au programme de la méthode de Newton de la banque de programmes associée au manuel du cours (voir site web du cours pour l adresse de la banque et les documents utiles pour leur utilisation). 3
Question 2. (10 points) Quelle est la condition sur la fonction f(x, y) garantissant l utilisation de la méthode de Newton à l étape 5 de l algorithme A? Question 3. (10 points) Créer un script Matlab qui fait appel à votre programme pour calculer la valeur approchée de y(2) obtenue par continuation à partir du point (0, 0) sachant que y est définie implicitement par la relation f(x, y) = y 3 + y x = 0. Prendre x = 0.2 et ɛ = 10 7. La condition de la question 2 est-elle satisfaite? À l aide de ce script Matlab, produire une figure montrant les valeurs de x n, y n sur un plan, et une seconde figure donnant le nombres d itérations de Newton pour chaque valeur de n. Question 4. (10 points) Créer une nouvelle fonction Matlab qui modifie le choix du point de départ à l étape 4 de l algorithme A par y (0) = y n f x(x n, y n ) f y (x n, y n ) x. Reprendre la question 3 (on ne produit pas de nouveau script à cette étape, on continue plutôt le script précédent). Que remarquez-vous sur la convergence de la méthode de Newton? Sachant que y (x) = f x(x, y), donner une interprétation f y (x, y) géométrique de ce choix comme point de départ. Question 5. (10 points) Avec un nouveau script Matlab, en faisant appel à la fonction de la question 4 précédente, étudier l évolution de y définie implicitement par f(x, y) = 2y 3 9y 2 + 12y 2x = 0, avec x variant de 0 à 3. Que remarquez-vous? Produire (avec le script Matlab) une figure pour illustrer votre remarque. La condition de la question 2 est-elle toujours satisfaite? 4
Partie B Dans la partie A, nous avons remarqué que si l on s approche de certains points, appelés points singuliers, il peut être très difficile de suivre l évolution de la variable y au voisinage de ces points. Nous allons décrire une méthode de continuation qui permet de suivre adéquatement la variable y même en présence de points singuliers. L idée fondamentale de cette méthode consiste à paramétriser les variables x et y par une autre variable indépendante s. Ainsi la branche de solutions de l équation (1) contenant le point (0, 0) sera décrite par la courbe paramétrique (x(s), y(s)) avec (x(0), y(0)) = (0, 0). Algorithme B 1. Poser x 0 = 0 et y 0 = 0. 2. Pour n = 0, 1, 2,..., N, faire les étapes suivantes. 3. Calculer les coefficients α et β: si n = 0, prendre α = 1 et β = αω où ω = f x(x n, y n ) 1 + ω 2 f y (x n, y n ), si n > 0, prendre α = x n x n 1 s et β = y n y n 1. s 4. Choisir comme point de départ pour l algorithme de Newton utilisé à la suite x (0) = x n + α s, y (0) = y n + β s. 5. Déterminer x et y en résolvant par la méthode de Newton le système non linéaire f(x, y) = 0, h(x, y) = α(x x n ) + β(y y n ) s = 0. 6. Poser x n+1 = x et y n+1 = y, (x, y) étant la solution obtenue à l étape 5. 7. Aller à l étape 2. 5
Question 6. (10 points) a) Montrer que le système linéaire de l algorithme de Newton à l étape 5 s écrit ( ) ( ) ( ) fx (x, y) f y (x, y) x f(x, y) =. α β y h(x, y) b) En supposant que α et β vérifient (approximativement) les relations αf x (x, y) + βf y (x, y) = 0, α 2 + β 2 = 1, montrer que la matrice Jacobienne est toujours inversible sous l hypothèse que f x (x, y) 0 ou f y (x, y) 0. Quel est donc l intérêt de cette méthode? Question 7. (15 points) Écrire une fonction Matlab qui réalise l algorithme B ci-dessus. Voici les caractéristiques requises du programme. a) Données: b) Sorties: la fonction f(x,y) et ses dérivées partielles le pas s d incrémentation de s, le nombre N de pas, la tolérance ɛ et un nombre maximum d itération N max pour la méthode de Newton. les coordonnées x n et y n, le nombre nécessaire d itérations pour avoir la convergence de la méthode de Newton pour chaque valeur de n. c) Pour l étape 5 (méthode de Newton), le programme fera appel au programme de la méthode de Newton pour les systèmes de la banque de programmes associée au manuel du cours. Le paramètre h qui y est utilisé sera pris égal à 10 7. 6
Question 8. (10 points) Créer un script Matlab qui utilise la fonction précédente pour suivre l évolution de la variable y définie implicitement par f(x, y) = 2y 3 9y 2 + 12y 2x = 0. Prendre s = 0.1 et N = 50, ainsi que ɛ = 10 7. Comparer vos résultats avec ceux de la question 5. Discuter du nombre de valeurs de y en fonction de x. Tracer la courbe des solutions (x, y). 7