Quelques méthodes numériques en mathématique



Documents pareils
Résolution de systèmes linéaires par des méthodes directes

Cours d analyse numérique SMI-S4

Simulation de variables aléatoires

Corrigé des TD 1 à 5

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Calcul Formel et Numérique, Partie I

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Résolution d équations non linéaires

Correction de l examen de la première session

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

3 Approximation de solutions d équations

Calcul Formel et Numérique, Partie I

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Théorème du point fixe - Théorème de l inversion locale

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Cours 02 : Problème général de la programmation linéaire

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Programmation linéaire

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Programmation linéaire et Optimisation. Didier Smets

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Optimisation, traitement d image et éclipse de Soleil

Cours 7 : Utilisation de modules sous python

Exercices - Polynômes : corrigé. Opérations sur les polynômes


Exercice : la frontière des portefeuilles optimaux sans actif certain

Analyse Numérique : SMA-SMI S4 Cours, exercices et examens

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Optimisation Discrète

Cours d Analyse. Fonctions de plusieurs variables

Introduction à MATLAB R

Architecture des Systèmes d Information Architecture des Systèmes d Information

TP 1 Introduction à Matlab Février 2009

Cours d initiation à la programmation en C++ Johann Cuenin

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Chapitre 2. Matrices

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Probabilités sur un univers fini

L ALGORITHMIQUE. Algorithme

1 Recherche en table par balayage

Image d un intervalle par une fonction continue

Les équations différentielles

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Gestion des Clés Publiques (PKI)

Mathématiques appliquées à l'économie et à la Gestion

Recherche dans un tableau

IV- Equations, inéquations dans R, Systèmes d équations

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Première partie. Introduction à la méthodes des différences finies

Journées Télécom-UPS «Le numérique pour tous» David A. Madore. 29 mai 2015

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

Théorie et codage de l information

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Exercices Corrigés Premières notions sur les espaces vectoriels

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

Chapitre VI - Méthodes de factorisation

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Fonctions de plusieurs variables

Plus courts chemins, programmation dynamique

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

Problème 1 : applications du plan affine

Équations non linéaires

de calibration Master 2: Calibration de modèles: présentation et simulation d

Quelques tests de primalité

Programmation linéaire

Continuité et dérivabilité d une fonction

Cours Informatique Master STEP

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Traitement des données avec Microsoft EXCEL 2010

TD3: tableaux avancées, première classe et chaînes

Développement décimal d un réel

Sujet 4: Programmation stochastique propriétés de fonction de recours

Correction du baccalauréat ES/L Métropole 20 juin 2014

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Echantillonnage Non uniforme

Représentation des Nombres

Petit Guide de Survie en Scilab

Structures algébriques

Les algorithmes de base du graphisme

CHAPITRE 5. Stratégies Mixtes

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

La classification automatique de données quantitatives

Partie 1 - Séquence 3 Original d une fonction

CCP PSI Mathématiques 1 : un corrigé

1. Structure d'un programme FORTRAN 95

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

Pour l épreuve d algèbre, les calculatrices sont interdites.

Fonctions de plusieurs variables : dérivés partielles, diérentielle. Fonctions composées. Fonctions de classe C 1. Exemples

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Calcul différentiel sur R n Première partie

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Initiation à l algorithmique

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Examen optimisation Centrale Marseille (2008) et SupGalilee (2008)

Polynômes à plusieurs variables. Résultant

Transcription:

Quelques méthodes numériques en mathématique programmées sous SCILAB. K.Barty 29 avril 2004 Table des matières 1 Résolution de systèmes linéaires 1 1.1 Élimination de Gauss.............................. 2 1.2 Factorisation LU................................ 3 1.3 Factorisation de Cholesky........................... 5 1.4 Méthode de Jacobi............................... 6 2 Résolution numérique d équation 7 2.1 Méthode de la Dichotomie........................... 7 2.2 Méthode de la Section Dorée.......................... 9 3 Interpolation de Lagrange 11 4 Programmation Dynamique 12 4.1 Un problème de gestion de stock........................ 12 1 Résolution de systèmes linéaires Dans cette partie nous sommes concernés par le problème suivant : Résoudre l équation Ax = b ; (1) sans pour autant inverser la matrice A ce qui comme nous le savons est numériquement très coûteux. 1

1.1 Élimination de Gauss function [A,b]=algo(A,b,k) n=size(a, c ) for i=k+1:n b(i)=b(i)-(a(i,k)/a(k,k))*b(k) for j=k+1:n A(i,j)=A(i,j)-(A(i,k)/A(k,k))*A(k,j) ; for j=1:k A(i,j)=0 ; function function [A,b]=gauss(A,b) Methode de Gauss On suppose que tous les pivots A(k,k) sont differents de 0. En entree il y a les coefficients de la matrice A et du vecteur b qui déterminent le système lineaire Ax=b En sortie le couple (A,b) determine un sytème lineaire equivalent, mais numeriquement plus simple a resoudre, la matrice A etant triangulaire superieure. n=size(a, c ) for k=1:n [A,b]=algo(A,b,k) ; function; A=[3-4 0;12-9 -1;24-4 8] A = Définition de la! 3. - 4. 0.!! 12. - 9. - 1.!! 24. - 4. 8.! matrice A b=[12;-6;23] b = Second membre du système! 12.! 2

! - 6.!! 23.! getf gauss.sci On charge la fonction gauss dans scilab [A1,b1]=gauss(A,b) b1 = Appel de la fonction gauss! 12.!! - 54.!! 143.! A1 =! 3. - 4. 0.!! 0. 7. - 1.!! 0. 0. 12.! Le système : A 1 x = b 1 ; est plus facile à résoudre que (1) car la matrice A 1 est triangulaire. 1.2 Factorisation LU On factorise A en un produit d une matrice triangulaire inférieure L et d une matrice triangulaire supérieure U, autrement dit A = LU. Cela permet une résolution numérique plus facile en deux étapes. La première étape consiste à résoudre le problème : la seconde étape à résoudre le problème : Lx = b ; Ux = x. Le vecteur x est alors solution de l équation (1). function [L,U]=facLU(A) Factorisation LU d une matrice inversible A 3

U=zeros(A); L=eye(A); U(1,:)=A(1,:); dimmat=size(a, r ); for i=2:dimmat for j=1:i-1 L(i,j)=(A(i,j)-L(i,1:j-1)*U(1:j-1,j))/U(j,j); for j=i:dimmat U(i,j)=A(i,j)-L(i,1:i-1)*U(1:i-1,j); function A=[3-4 0;12-9 -1;24-4 8] A = Définition de la! 3. - 4. 0.!! 12. - 9. - 1.!! 24. - 4. 8.! matrice A getf faclu.sci On charge la fonction faclu dans scilab [L,U]=facLU(A) U = Appel de la fonction faclu! 3. - 4. 0.!! 0. 7. - 1.!! 0. 0. 12.! L =! 1. 0. 0.!! 4. 1. 0.!! 8. 4. 1.! 4

1.3 Factorisation de Cholesky On détermine la factorisation de Cholesky d une matrice symétrique A. Autrement dit on calcule la matrice C telle que A = CC. function [C]=facCho(A) Factorisation de Cholesky de la matrice A C=zeros(A); C(1,1)=sqrt(A(1,1)); dimmat=size(a, r ); for i=2:dimmat for j=1:i-1 C(i,j)=(A(i,j)-(C(i,1:j-1)*C(j,1:j-1) ))/C(j,j); C(i,i)=sqrt(A(i,i)-(C(i,1:i-1)*C(i,1:i-1) )); function A=[3-4 0;12-9 -1;24-4 8] A = Définition de la! 3. - 4. 0.!! 12. - 9. - 1.!! 24. - 4. 8.! matrice A b=[12;-6;23] b = Second membre du système! 12.!! - 6.!! 23.! getf gauss.sci On charge la fonction gauss dans scilab [A1,b1]=gauss(A,b) b1 = Appel de la fonction gauss 5

! 12.!! - 54.!! 143.! A1 =! 3. - 4. 0.!! 0. 7. - 1.!! 0. 0. 12.! 1.4 Méthode de Jacobi La méthode de Jacobi est une technique itérative pour résoudre un système linéaire. function [x]=jacobi(a,b,x0,k) On veut resoudre le systeme Ax=b de maniere recursive x0 condition initiale de l algorithme de Jacobi k nombre d itération n=size(a, c ) x=x0; for p=1:k for i=1:n x(i)=(b(i)-a(i,1:n)*x+a(i,i)*x(i))/a(i,i) function A=[264 110 98;110 105 21;98 21 54] A =! 264. 110. 98.!! 110. 105. 21.!! 98. 21. 54.! 6

b=[12;8;-5] b =! 12.!! 8.!! - 5.! x0=[0;0;0] x0 =! 0.!! 0.!! 0.! getf Jacobi.sci [x1]=jacobi(a,b,x0,1000) x1 = Appel de! 0.4176994!! - 0.2074027!! - 0.7699830! la fonction Jacobi norm(a*x1-b) ans = 3.202D-15 2 Résolution numérique d équation 2.1 Méthode de la Dichotomie Nous allons présenter la méthode de Dichotomie pour minimiser une fonction unimodale. function [intervalle,iter]=dicho(fonction,intervalle,epsilon,iter) Methode de dichotomie utilisant la dédivée 7

En entree fonction : fonction supposee unimodale de la forme y=fonction(x). intervalle : vecteur 1x2, intervalle de depart pour l optimisation. epsilon : reel positif, precision de l optimisation. iter : entier, nombre d iteration pour l algotithme. En sortie intervalle : vecteur 1x2, resultat de la dichotomie. iter : nombre d iterations restantes a effectuer. Test de l intervalle de départ init=iter; binf=min(intervalle); bsup=max(intervalle); if norm(binf-bsup)==%inf then error( une des bornes de l intervalle est infinie ), ; bdemi = (binf+bsup)/2; f_binf = fonction(binf); f_bsup = fonction(bsup); f_bdemi = fonction(bdemi); u=file( open, results_dicho, unknown ); Methode de dichotomie while ((abs(bsup-binf)>= epsilon) & (iter >= 1)) b1quart = (bdemi+binf)/2; b3quart = (bsup+bdemi)/2; f_b1quart = fonction(b1quart); f_b3quart = fonction(b3quart); tab=[f_binf,f_b1quart,f_bdemi,f_b3quart,f_bsup]; [a,b]=gsort(tab, c, i ); if (b(1) == 1) (b(1) == 2) then bsup = bdemi; bdemi = b1quart; f_bsup = f_bdemi; f_bdemi = f_b1quart; elseif b(1) == 3 then binf = b1quart; bsup = b3quart; f_binf = f_b1quart; f_bsup = f_b3quart; elseif (b(1) == 4) (b(1) == 5) then binf = bdemi; 8

bdemi = b3quart; f_binf = f_bdemi; f_bdemi = f_b3quart; fprintf(u, iter = %2.0f binf = %10.8f bsup = %10.8f precision %10.8f,... init-iter+1,binf,bsup,abs(bsup-binf)); iter=iter-1; intervalle=[binf,bsup]; file( close,u) function deff("[y]=func(x)","y=x^2-4*x+6") Définition de la fonction func getf dicho.sci On charge la fonction dicho dans scilab [intervalle,iter]=dicho(func,[-20,10],0.001,10) iter = 0. intervalle =! 1.9873047 2.0166016! 2.2 Méthode de la Section Dorée C est une variante de la méthode de Dichotomie, elle permet entre autre de n avoir à évaluer qu une seule fois la fonction à minimiser à chaque itération. function [intervalle,iter]=section_doree(fonction,intervalle,epsilon,iter) init=iter; binf=min(intervalle); bsup=max(intervalle); tau=(1+sqrt(5))/2; tau=1/tau; if norm(binf-bsup)==%inf then error( une des bornes de l intervalle est infinie ), ; b1 = bsup-tau*(bsup-binf); 9

b2 = binf+tau*(bsup-binf); f_binf = fonction(binf); f_bsup = fonction(bsup); f_b1 = fonction(b1); f_b2 = fonction(b2); u=file( open, results_doree, unknown ); Methode de la section doree while ((abs(binf-bsup)>= epsilon) & (iter >= 1)) tab=[f_b1,f_b2]; [a,b]=gsort(tab, c, i ); if b(1)==1 then bsup=b2; b2=b1; f_b2=f_b1; b1=binf+bsup-b2; f_b1=fonction(b1); else binf=b1; b1=b2; f_b1=f_b2; b2=binf+bsup-b1; f_b2=fonction(b2); fprintf(u, iter = %2.0f binf = %10.8f bsup = %10.8f precision %10.8f,... init-iter+1,binf,bsup,abs(bsup-binf)); iter=iter-1; file( close,u) intervalle=[binf,bsup]; function deff("[y]=func(x)","y=x^2-4*x+6") Définition de la fonction func getf section_doree.sci On charge la fonction dicho dans scilab [intervalle,iter]=section_doree(func,[-20,10],0.001,10) iter = 10

0. intervalle =! 1.8847051 2.1286236! 3 Interpolation de Lagrange Étant donné une fonction f : R R et x 0,..., x n n + 1 points dans R. Lagrange à résolu le problème de déterminer le polynome P vérifiant : P (x i ) = f(x i ), i = 0,..., n. On montre que ce polynome P s écrit sous la forme suivante : avec : P (x) = f[x 0 ] + n j=1 f[x 0,..., x j ]Π j 1 i=0 (x x i) ; f[x i ] = f(x i ), f[x i,..., x i+k+1 ] = f[x i+1,..., x i+k+1 ] f[x i,..., x i+k ] x i+k+1 x i. (2) Nous allons ranger les éléments f[x i,..., x i+k+1 ] dans une matrice A de la manière suivante : l indice de ligne sera l indice du dernier terme dans le crochet [x i,..., x i+k+1 ] auquel on rajoute 1 c est-à-dire i + k + 2 ; l indice de colonne correspond au nombre d éléments entre le crochet [x i,..., x i+k+1 ] c est-à-dire k + 2. Autrement dit A(i + k + 2, k + 2) = f[x i,..., x i+k+1 ]. En notant points = [x 0,..., x n ] (points(i) = x i 1 ), l équation (2) devient : A(i + k + 2, k + 2) = A(i + k + 2, k + 1) A(i + k + 1, k + 1). points(i + k + 2) points(i + 1) On procède alors à un changement de variable en posant I = i + k + 2 et J = k + 2 il vient donc : A(I, J 1) A(I 1, J 1) A(I, J) = points(i) points(i J + 1) Pour des raisons d efficacité nous avons programmé deux fonctions. La première calcule la matrice A, la seconde calcule le polynome P en utilisant A. function [y]=interpolation(x,d,points) Polynome d interpolation de Lagrange d une fonction f n=size(points, * ) 11

y=d(1) T=x-points(1); for i=2:n y=y+d(i)*t; T=T*(x-points(i)); function function [d]=prepross(f,points) n=size(points, * ) A=zeros(n,n); for k=1:n A(k,1)=f(points(k)); d(1)=a(1,1); for j=2:n for i=j:n A(i,j)=(A(i,j-1)-A(i-1,j-1))/(points(i)-points(i-j+1)); d(j)=a(j,j); function L exemple suivant montre le résultat en bleue de l interpolation de la fonction x sin(x) en rouge aux points [0 0.5 1 1.5 2] 4 Programmation Dynamique 4.1 Un problème de gestion de stock Exercice 4.1. Un homme d affaire dispose d un hangar de 2 places pour ranger des containers. Dans chaque place il ne peut ranger qu un seul container. Cet homme peut scrupuleux c est arrangé pour connaître le prix sur le marché de ces containers pour les 5 jours à venir. Il sait alors que p 1 = 5, p 2 = 10, p 3 = 18, p 4 = 11, p 5 = 13. Chaque jour il ne peut faire que les mouvements suivants sur son stock : il ne fait rien u = 0 ; il achète un container u = 1 ; il v un container u = 1. 12

1.026 0.684 0.342 0.000 0.342 0.684 1.026 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 Fig. 1 Interpolation de Lagrange de la fonction sinus On note x t (t = 1,..., 5) l état du stock à l instant t, c est-à-dire le nombre (0, 1 ou 2) de containers dans le hangar, et u t la décision de l homme d affaire. Interpréter les formules suivantes : x t+1 = x t + u t et : V t (x) = max { p tu + V t+1 (x + u)}, V 5 = 13x. u=0,1, 1 1. Quel profit peut-il espérer réaliser en partant d un stock vide?, en suivant qu elle stratégie (c est-à-dire qu elle suite u 1, u 2, u 3, u 4, u 5 de décisions devra t il prre)? 2. Discuter de la mise en œuvre informatique d un programme permettant de calculer une stratégie optimale en fonction des prix du marché. Le programme permettant de mettre en œuvre la dynamique rétrograde est le suivant : function [V,control]=progdyn(prix) Programmation dynamique pour un problème de gestion de stock time=size(prix, * ) etat=3 (0,1,2) V=zeros(etat,time); control=v; for i=1:etat V(i,time)=prix(time)*(i-1); cout a l etat final for t=time-1:-1:1 for i=1:etat 13

arg=[]; decision=[]; for u=-1:1 if ((i-1+u)==0 (i-1+u)==1 (i-1+u)==2) then decision=[decision u] arg=[arg -prix(t)*u+v(i+u,t+1)] [val1,val2]=gsort(arg, c, d ) V(i,t)=val1(1); control(i,t)=decision(val2(1)); function prix=[5 10 18 11 13] prix = Prix des containers! 5. 10. 18. 11. 13.! getf progdyn.sci [V,control]=progdyn(prix) control = Appel de la fonction! 1. 1. 0. 1. 0.!! 1. 1. - 1. 1. 0.!! 0. 0. - 1. 0. 0.! V =! 18. 10. 2. 2. 0.!! 28. 23. 20. 15. 13.!! 33. 33. 33. 26. 26.! 14