La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Il nest guère difficile de trouver la solution de léquation linéaire a*x - b = 0 où a et b sont connus et x est linconnue. On écrit a*x = b et chaque.

Présentations similaires


Présentation au sujet: "1 Il nest guère difficile de trouver la solution de léquation linéaire a*x - b = 0 où a et b sont connus et x est linconnue. On écrit a*x = b et chaque."— Transcription de la présentation:

1 1 Il nest guère difficile de trouver la solution de léquation linéaire a*x - b = 0 où a et b sont connus et x est linconnue. On écrit a*x = b et chaque membre de lexpression est divisé par a: a*x = b a\a*x = a\b x = a\b (division à gauche, mldivide(a, b) en Matlab) x*a = b x*a/a = b/a x = b/a (division à droite,, mrdivide(a, b) en Matlab) Que faire avec un système non-linéaire comme celui-ci: Des méthodes adaptées doivent être mises en œuvre. Equations Non Linéaires Equations linéaires, non-linéaires

2 2 Trouver les « zéros » de fonctions non linéaires, les valeurs réelles telles que f( )=0 Avantage: lalgorithme nutilise que des évaluations de la fonction f Equations Non Linéaires Méthode de la bissection (dichotomie)

3 3 Cette méthode sapplique à des équations du type pour lesquelles on peut calculer ou estimer la dérivée de f : f(x). Soit x 1 une valeur initiale approchée de la racine inconnue: = x 1 + h, on a et comme on en tire lestimation de h la quantité à ajouter à x 1 pour sapprocher de et générer une valeur x 2 = x 1 + h : On en déduit la méthode: Equations Non Linéaires Méthode de Newton

4 4 xnxn x n+1 f(x) x n+2 x Equations Non Linéaires Méthode de Newton, interprétation géométrique

5 5 x1x1 x2x2 x3x3 La méthode ne converge pas toujours vers la solution. Dans lexemple ci-contre il existe un changement de concavité qui amène à une oscillation des termes x n Equations Non Linéaires Méthode de Newton, convergence, arrêt f(x) x

6 6 |f (x)| >> 1 (à gauche) critère trop restrictif: alors que lerreur est faible, les itérations se poursuivent puisque le résidu est grand. |f (x)| << 1 (à droite) critère trop faible: ici le résidu est faible et conduit à larrêt des itérations alors que lerreur est grande. On utilisera donc préférentiellement le contrôle sur lincrément. résidu Equations Non Linéaires Méthode de Newton: contrôle sur le résidu e (k) = erreur = |x (k) - | résidu = f(x (k) )

7 7 La méthode Newton peut sappliquer à la résolution dun système de plusieurs équations non linéaires : A partir dun couple de valeurs approchées (x 1, y 1 ) dune solution (, ) du système, on peut déterminer deux accroissements h et k à donner à x 1 et y 1 de manière à ce que : En développant en 1 er ordre, il vient : Equations Non Linéaires Méthode de Newton: systèmes déquations non linéaires

8 8 Les quantités h et k sobtiennent donc, en résolvant le système linéaire suivant : Sous forme matricielle, en posant J la matrice Jacobienne: Généralisation: On peut noter de façon condensée (vectorielle): J (x1, y1) = Equations Non Linéaires Méthode de Newton: systèmes déquations non linéaires

9 9 R On veut : f(x+h)=f(x) + h.f(x) = 0 h = - f(x) / f(x) À partir de x 1, on calcule x 2 =x 1 +h 1, puis x3, … R n Equations Non Linéaires Méthode de Newton: résumé

10 Equations Non Linéaires fzero, poignée de fonction La fonction fzero résout les équations non-linéaires du type : mafonction(x) = 0. Elle possède 2 entrées: a) une poignée* de la fonction dont on recherche le zéro et b) une valeur x 0 initiale supposée proche du zéro de la fonction. Sa sortie est la valeur x= qui annule mafonction. >> fzero('cos', 2) % ou écrire: 2) ans = On peut évidemment affecter la sortie à une nouvelle variable: >> un_zero_de_cos = 2)% ceci résout: cos(x)=0 un_zero_de_cos = Essayons avec ma fonction >> 2) u = 1 >> -10) u = % ces 2 dernières commandes résolvent: x.^2-1 = 0 * Une poignée est un type de variable désignant les fonctions. Elle est construite en ajoutant davant le nom de la fonction, ou en la créant comme une fonction anonyme. function y=mafonction(x) y=x.^2-1; end

11 Equations Non Linéaires fzero, fonctions paramétrées Les choses peuvent se compliquer si la fonction cible est paramétrée, et possède donc plus dune entrée comme dans la version ci-contre: function y=mafonction(p, x) y = x.*cos(x)+p; end Une façon dutiliser fzero (qui naccepte que des fonction à une seule entrée) est de créer une fonction anonyme en fixant dabord la valeur du paramètre: >> p = 5; >> mafonction2 mafonction(p, x); % mafonction2 possède une seule entrée >> ezplot(mafonction2, [-10, 2]) >> grid >> fzero(mafonction2, -5) ans = >> fzero(mafonction2, 0) ans =

12 Equations Non Linéaires fzero, options, optimset En réalité, fzero peut posséder 2 ou 3 entrées: >> x = fzero(fun, x0, options) où options est une entrée qui va permettre, par exemple dindiquer avec quelle tolérance la recherche du zéro doit être réalisée. Pour connaitre les options disponibles avec fzero, on utilise la commande optimset. On voit que par défaut, fzero recherche le zéro dune fonction jusquà une tolérance égale à eps(1). >> options = options = Display: 'notify' MaxFunEvals: [] MaxIter: [] TolFun: [] TolX: e-016 … Pour changer la valeur de loption param, il faut utiliser la syntaxe suivante pour optimset: options = optimset(old_options, param', new_value) Ainsi, pour changer le critère darrêt, on écrira: >> new_opt = optimset(options, 'tolx', 1e-6) On pourra par la suite exécuter fzero avec les nouvelles options quon lui passera: >> x = fzero(fun, x0, new_opt ) new_opt = Display: 'notify' MaxFunEvals: [] MaxIter: [] TolFun: [] TolX: e-006 …

13 Equations Non Linéaires Exercice: erreur de la méthode de dichotomie En observant que lerreur est bornée: Etablir le nombre ditérations minimal qui garantisse: où est une tolérance donnée.

14 14 On considère le dioxyde de carbone (CO 2 ), pour lequel a=0.401 Pa.m 6 et b= m 3. Donner le volume occupé par N=1000 molécules de CO 2 à la température T=300 K et à la pression p= Pa et avec une tolérance de On donne k= Joule.K -1. Equations Non Linéaires Exercice: Volume dun gaz réel

15 Equations Non Linéaires Exercice: matrice jacobienne Soit la fonction F de R 2 R 2 : Calculer lexpression de sa matrice jacobienne J F (X). En déduire J F ([1; 2]). La fonction jacobimatrice ci-contre évalue numériquement la matrice jacobienne dune fonction fun. Etudier chaque ligne de cette fonction. Appliquer la à la fonction F définie au- dessus et vérifier le résultat obtenu pour J F ([1; 2]). Pourquoi a til été ajouté « eps » dans la définition de dx ? function [J, y0]=jacobimatrice(fun, x0) % Jacobimatrice calcule la matrice jacobienne J de la % fonction fun évaluée au point x0. % y0 = fun(x0). % fun est une poignée de fonction. % Exemple pour une fonction R^3 ==> R^2: % >> [x(1)*x(2)^2+x(3); x(1)*x(3)^2-x(2)]; % >> x0 = [1, 2, 3]; % [J, y0]=jacobimatrice(f, x0) % J = % % % y0 = % 7 y0 = fun(x0); n = length(x0); m = length(y0); J = zeros(m, n); dx = x0/ eps; for k=1:n x0p=x0; x0m=x0; x0p(k)=x0p(k)+dx(k); x0m(k)=x0m(k)-dx(k); J(:,k)=(fun(x0p)-fun(x0m))/2/dx(k); end

16 16 Copier, tester et débugger la fonction NEWTON donnée ici. Elle fait appel à la fonction jacobimatrice étudiée plus haut dans ce chapitre. Equations Non Linéaires Exercice: écrire une fonction newton function [x, niter]=newton(f, x0, tolx, maxiter) % trouve la solution par la méthode de Newton % dun système déquations non-linéaires pouvant % se mettre sous la forme % f(x)=0 où f est une fonction de R^n dans R^n % X = valeur telle que f(X) = 0 à TOLX prés % NITER = nombre d'itérations effectuées % % F = poignée de la fonction % X0 = valeur initiale des itérations % TOLX = tolérance sur l'incrément: % si norm(x(k+1)-x(k))< tolx alors arrêt % MAXITER = nombre maximal d'itérations à effectuer % % exemple dans R^1: % sin(2*x) -1 + x; % [x, niter]=newton(f, 0.5, 1e-8, 100) % x = % % niter = % 4 % % exemple dans R^3 % sum(x)]; % x0 = [1; 2; 3]; % [x, niter]=newton(f, x0, 1e-8, 100) % x = % % % % niter = % 6 x0=x0(:); continuer=true; niter=0; while continuer xold=x; J=jacobimatrice(f, xold); x=xold-J\f(xold); niter=niter+1; if niter>maxiter, continuer=false; end if norm(x-xold)

17 x0=x0(:); continuer=true; niter=0; while continuer xold=x; J=jacobimatrice(f, xold); x=xold-J\f(xold); niter=niter+1; if niter>maxiter, continuer=false; end if norm(x-xold)

18 18 Objectif: résoudre le système ci-contre, avec la méthode de Newton. On prendra tolx= Soit f 1 (x, y) = x 2 – 2xy – 2 = 0 f 2 (x, y) = x + y = 0 Selon la valeur initiale donnée à lalgorithme itératif, la convergence vers la solution peut échouer. De même, on ne sait pas si il existe zéro, une ou plusieurs solutions. Une approche graphique est possible pour les systèmes à 2 variables. a)Représenter la surface z(x,y)=f 1 2 (x,y) +f 2 2 (x,y) en utilisant les fonctions meshgrid et surf. Pourquoi est-il plus efficace de représenter z=log10(f 1 2 (x,y) +f 2 2 (x,y)) ? En déduire une estimation de la ou des solutions. b) Appliquer la méthode de Newton avec cette ou ces estimations comme valeur(s) initiale(s). { Equations Non Linéaires Exercice: Recherche dune valeur initiale

19 19 a) Résoudre le système ci-dessous, avec la méthode de Newton. On prendra tolx= x 1 - x 2 = exp(-x 1 ) -x 1 + 2x 2 = exp(-x 2 ) b) Trouver la matrice X telle que X * X * X = Sol: X = Equations Non Linéaires Exercice: applications pour la fonction newton.m


Télécharger ppt "1 Il nest guère difficile de trouver la solution de léquation linéaire a*x - b = 0 où a et b sont connus et x est linconnue. On écrit a*x = b et chaque."

Présentations similaires


Annonces Google