Faculté des sciences et ingénierie (Toulouse III) Département de mathématiques L3 MMESI Analyse numérique I

Documents pareils
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.

Chapitre 2. Matrices

Introduction à MATLAB R

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

Cours d analyse numérique SMI-S4

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

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

Cours Informatique Master STEP

3 Approximation de solutions d équations

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

Correction de l examen de la première session

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

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Fonctions de plusieurs variables

TP 1 Introduction à Matlab Février 2009

Cours 7 : Utilisation de modules sous python

C f tracée ci- contre est la représentation graphique d une

Plus courts chemins, programmation dynamique

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

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

Résolution d équations non linéaires

Calcul Formel et Numérique, Partie I

Plan du cours Cours théoriques. 29 septembre 2014

Déterminants. Marc SAGE 9 août Inverses et polynômes 3

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

Chapitre 5 : Flot maximal dans un graphe

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

Feuille TD n 1 Exercices d algorithmique éléments de correction

Initiation à l algorithmique

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

Chap III : Les tableaux

Fonctions homographiques

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

Algorithmes pour la planification de mouvements en robotique non-holonome

Programmation linéaire et Optimisation. Didier Smets

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

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

= constante et cette constante est a.

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

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

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

Fonctions linéaires et affines. 1 Fonctions linéaires. 1.1 Vocabulaire. 1.2 Représentation graphique. 3eme

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

Corrigé des TD 1 à 5

Projet Matlab : un logiciel de cryptage

Python - introduction à la programmation et calcul scientifique

Exemple 4.4. Continuons l exemple précédent. Maintenant on travaille sur les quaternions et on a alors les décompositions

Formes quadratiques. 1 Formes quadratiques et formes polaires associées. Imen BHOURI. 1.1 Définitions

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

TP : Gestion d une image au format PGM

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

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

Calcul différentiel sur R n Première partie

Administration de Parc Informatique TP03 : Résolution de noms

Analyse fonctionnelle Théorie des représentations du groupe quantique compact libre O(n) Teodor Banica Résumé - On trouve, pour chaque n 2, la classe

Calcul Formel et Numérique, Partie I

Simulation de variables aléatoires

Dualité dans les espaces de Lebesgue et mesures de Radon finies

Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en Énoncé.

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

SOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le

Programmation linéaire

Algorithmique et Programmation, IMA

Optimisation Discrète

Gestion de gros fichiers binaires (images) en APL*PLUS III

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

Optimisation, traitement d image et éclipse de Soleil

a et b étant deux nombres relatifs donnés, une fonction affine est une fonction qui a un nombre x associe le nombre ax + b

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

LA PHYSIQUE DES MATERIAUX. Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Les structures. Chapitre 3

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

Limites finies en un point

Initiation à la Programmation en Logique avec SISCtus Prolog

Licence Sciences et Technologies Examen janvier 2010

Un K-espace vectoriel est un ensemble non vide E muni : d une loi de composition interne, c est-à-dire d une application de E E dans E : E E E

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

TP1. Outils Java Eléments de correction

1. Structure d'un programme FORTRAN 95

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

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

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

STAGE IREM 0- Premiers pas en Python

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

avec des nombres entiers

Encryptions, compression et partitionnement des données

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

Algorithmes récursifs

3. Conditionnement P (B)

Continuité en un point

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Corrigé Problème. Partie I. I-A : Le sens direct et le cas n= 2

Eléments de Théorie des Graphes et Programmation Linéaire

EXCEL TUTORIEL 2012/2013

Transcription:

Nom : Date : Prénom : Faculté des sciences et ingénierie (Toulouse III) Année scolaire Département de mathématiques L3 MMESI 2011-2012 Analyse numérique I TP n o 3 Pivot de Gauss et décomposition LU Aller dans le dossier L3_analyseNumerique et créer le dossier TP03, dans lequel seront placés les fichiers relatifs à ce TP. 1 Découverte de matlab (3) : les fonctions Nous voyons maintenant une nouvelle fonctionnalité : créer de nouvelles commandes, qui s utiliseront de la même manière que les autres commandes prédéfinies de matlab vues dans les deux précédents TP. Une fonction matlab, c est comme un script mais en mieux : on peut donner des entrées et on peut affecter le résultat renvoyé dans une variable (ce qui n est pas possible avec un script). Une fonction se comporte comme une vraie commande matlab. Pour comprendre, il suffit de faire l analogie avec une fonction mathématique : dans y = f (x), x est la variable d entrée, y est la sortie et f est le nom de la fonction ; dans A=eye(5), 5 est l entrée, A est la sortie 1 et eye est le nom de la fonction. Une fonction peut s utiliser partout : en ligne de commande, dans un script et même dans une autre fonction ; à la condition bien sûr que le répertoire de travail soit le dossier où est enregistrée cette fonction! Exemple 1. Cet exemple décrit deux manières de calculer la somme des éléments d un vecteur v R n : tel qu on sait le faire depuis le TP2, avec un script ; tel qu on sait le faire maintenant, avec une fonction. 1. Avec un script : Définir v n = longueur de v S=0 Pour i=1 à n, faire S=S+v i Fin Afficher S v=... n=length ( v ) ; S=0; for i =1:n S=S+v ( i ) ; end S 1. Plus précisément : la valeur de la sortie est stockée dans la variable A. 1

Pour l utiliser, il faut alors définir un vecteur dans la variable globale v (à l intérieur du fichier.m par exemple) puis revenir en ligne de commande pour lancer le script ; à noter qu il n est pas possible d affecter le résultat du script dans une variable. 2. Avec une fonction : Nom : somme Entrée : v ( vecteur ) Sortie : S ( scalaire ) -- > somme des coeff de v n = longueur de v Initialisation de S à 0 Pour i=1 à n, faire S=S+v i Fin function S=somme( v ) %Calcule la somme des coeff de v n=length ( v ) ; S=0; for i =1:n S=S+v ( i ) ; end L utilisation est intégralement en ligne de commande (inutile de modifier le fichier.m lorsque le vecteur change) : somme( [ 1, 2, 3, 4, 5 ] ) ou v = [ 1, 2, 3, 4, 5 ] ; somme( v ) Il est bien sûr possible d affecter le résultat d une fonction dans une variable : v = [ 1, 2, 3, 4, 5 ] ; nombre=somme( v ) Exercice 1. Créer une fonction matlab (nommée produit) prenant en entrée un vecteur v et renvoyant en sortie le produit P des éléments de v. 2

Exercice 2. Nous allons créer, de deux manières, une fonction renvoyant la somme et le produit des éléments d un vecteur v R n. 1. Méthode 1 : avec les fonctions somme et produit précédemment vues. Donner les entrées et les sorties de la fonction suivante : function [ S, P]=somProd1 ( v ) %Calcule somme et produit des coeff S=somme( v ) ; P=produit ( v ) ; 2. Méthode 2 : avec une seule boucle parcourant les éléments du vecteur v. Programmer une telle fonction (nommée somprod2) : 3. Laquelle de ces deux méthodes vous semble la plus efficace ; pourquoi? 4. Indiquer en face de chaque ligne ce que donne les commandes suivantes : 1 v = 1 : 1 : 5 ; 2 somprod2 ( v ) 3 [ a, b]=somprod2 ( v ) 4 c=somprod2 ( v ) ; 5 c Attention! Les arguments de sortie sont écrits entre crochets dans l entête de la fonction mais c est une syntaxe matlab qui n a rien à voir avec l usage habituel des crochets (i.e. définition de vecteur). Autrement dit, [S,P] ne signifie en aucun cas renvoyer le vecteur composé de S et P ; c est simplement : renvoyer les deux objets S et P (ce qui autorise ces objets à avoir des tailles différentes ou même à être de type différent). 3

2 Pivot de Gauss Rappels L algorithme du pivot de Gauss consiste à transformer un système linéaire en un système triangulaire supérieur qui lui est équivalent ; une fois cette transformation faite, il est aisé de le résoudre : il suffit d utiliser l algorithme de remontée vu au TP2. Autrement dit (vision matricielle), l algorithme du pivot transforme le système Ax = b avec A quelconque, en le système équivalent Ux = v avec U triangulaire supérieure. Rappelons pour finir l algorithme, tel qu il a été présenté dans le cours : Algorithme du pivot de Gauss n = taille de A Initialiser U à A Initialiser v à b Pour j allant de 1 à n -1, faire Pour i allant de j +1 à n, faire v i =v i (u ij /u jj )v j Pour k allant de j +1 à n, faire u ik =u ik (u ij /u jj )u jk Fin k u ij =0 Fin i Fin j Exercice 3. Le but est de créer une fonction matlab réalisant l algorithme de Gauss. 1. Donner les entrées et les sorties d une telle fonction (leur nom, leur type, à quoi elles correspondent). 2. Écrire une fonction matlab correspondant à cet algorithme. 4

Exercice 4 (Application). Considérons les valeurs 3 2 1 1 A = 1 3 2 et b = 2. 2 4 6 3 Que renvoie l algorithme de Gauss sur ces valeurs? Que retrouve-t-on (cf. TP2)? 3 Autour de la décomposition LU Il s agit de décomposer une matrice A (qui a les bonnes hypothèses, cf. cours) sous la forme LU, avec L triangulaire inférieure possédant des 1 sur la diagonale et U triangulaire supérieure 2. 3.1 Décomposition LU par identification des coefficients Rappels Cette méthode consiste à écrire les coefficients (inconnus) de la matrice LU et de les identifier avec les coefficients (connus) de A ; cela fonctionne bien à condition de procéder dans l ordre : 1 re ligne, puis 1 re colonne, puis 2 e ligne, puis 2 e colonne, etc. Les identifications sur les lignes permettent de déduire les coefficients de U ; celles sur les colonnes permettent de trouver L. L algorithme correspondant a été vu en TD ; nous le redonnons ici : Algorithme de décomposition LU n o 1 n = taille de A Initialiser U Initialiser L Pour i allant de 1 à n, faire Pour j allant de i à n, faire u ij =a ij i 1 k=1 l iku kj Fin j Pour j allant de i +1 à n, faire l ji = ( a ji i 1 k=1 l ) jku ki /uii Fin j l ii =1 Fin i 2. L pour lower et U pour upper, en anglais. 5

Exercice 5 (Décomposition LU n o 1). 1. Donner les entrées et les sorties de cet algorithme. 2. Programmer l algorithme (sous le nom decomplu1). 3.2 Décomposition LU par la méthode du pivot de Gauss Rappels L algorithme du pivot de Gauss effectue les manipulations suivantes sur les lignes : L i L i + λl j. (1) En notant T ij (λ) la matrice j 1... i λ...,... 1 6

alors (1) revient à remplacer A par la matrice T ij (λ)a (produit matriciel à gauche par une matrice de transvection). 3.2.1 Manipulation sur les lignes et les colonnes Exercice 6 (Mise en place d algorithmes intermédiaires). 1. Programmer une fonction qui, étant donné une matrice M, effectue l opération (1) sur M : function M=transvecLigne (M, i, j, lambda ) 2. Programmer son analogue sur les colonnes qui réalise l opération function M=transvecCol (M, i, j, lambda ) C i C i + λc j. (2) (Prendre garde au fait que multiplier à droite par T ij (λ) équivaut à la manipulation C j C j + λc i.) 3.2.2 Le pivot de Gauss contre-attaque Il s agit de programmer l algorithme du pivot de Gauss, sous une autre version que celle vue en section 2 et en ne se préoccupant que de la matrice A. Exercice 7. Programmer l algorithme suivant avec l entête Pivot de Gauss (version matricielle) n= taille de A Initialiser U à A Pour j allant de 1 à n -1, faire pivot =u jj Pour i allant de j +1 à n, faire λ=u ij / pivot pour U : L i L i λl j Fin i Fin j 7

function U=GaussMatriciel (A) 3.2.3 Le retour de la décomposition LU Nous allons mettre en œuvre une autre méthode pour obtenir la décomposition LU, qui s inspire de la version matricielle du pivot de Gauss. Rappels Dans l algorithme de Gauss matriciel ci-dessus, on effectue une succession de multiplications à gauche sur A, par des matrices de transvections. Notons Q 1,...,Q p ces matrices successives ; alors l algorithme de Gauss matriciel consiste à remplacer A par Q p Q p 1...Q 1 A, } {{ } que l on note U. Ainsi, comme Q est inversible (cf. cours), on obtient =Q A = Q 1 U. Or Q 1 est triangulaire inférieure à diagonale unité (cf. cours) : c est donc la matrice L cherchée. Au final, on a donc trouvé la décomposition LU de A : Remarques complémentaires : les Q k sont de la forme T ij ( λ) ; Q 1 = Q1 1Q 1 2...Q 1 p ; U = QA, L = Q 1. les Q 1 k sont de la forme T ij (λ) car ( T ij ( λ) ) 1 = Tij (λ) ; multiplier à droite par T ij (λ) revient à faire C j C j + λc i. 8

Exercice 8 (Décomposition LU n o 2). En observant que Q 1 = Q1 1Q 1 2...Q 1 p est égal à I n Q1 1Q 1 2...Q 1 p (où I n désigne la matrice identité de taille n) ; l algorithme de Gauss matriciel consiste à faire une succession de multiplications à gauche sur A, pour la transformer en une matrice triangulaire inférieure, et en utilisant les rappels ci-dessus, proposer un algorithme qui effectue la décomposition LU de A en faisant les deux choses suivantes : une succession de multiplications à gauche sur A, pour la transformer en une matrice triangulaire supérieure (notée U) ; une succession de multiplications à droite sur l identité, pour la transformer en une matrice triangulaire inférieure à diagonale unité (notée L). function [ L,U]=decompLU2 (A) N oubliez pas de rendre le TP, ~ avec vos nom et prénom 9