Calcul Numérique -...

49
UNIVERSITÉ DE VERSAILLES SAINT-QUENTIN-EN-YVELINES Calcul Numérique Formation FSI-ISN Version 2015-2016 [email protected]

Transcript of Calcul Numérique -...

Page 1: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

UNIVERSITÉ DE VERSAILLESSAINT-QUENTIN-EN-YVELINES

Calcul Numérique

Formation FSI-ISN

Version [email protected]

Page 2: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique
Page 3: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

Table des matières

1 Introduction 3

1.1 Le calcul numérique dans le programme ISN . . . . . . . . . . . . . . 31.2 Le calcul numérique et la simulation numérique . . . . . . . . . . . . 41.3 Objectifs du module . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Représentation des réels 7

2.1 Système de représentation des nombres réels et erreurs . . . . . . . . 72.1.1 Représentation des nombres réels en informatique . . . . . . . 72.1.2 L’erreur en arithmétique flottante . . . . . . . . . . . . . . . . 9

2.2 Limites du calcul en arithmétiques flottantes . . . . . . . . . . . . . . 112.2.1 Étude de f(x) = 1−cos(x)

x2 . . . . . . . . . . . . . . . . . . . . . 112.2.2 Équation du second ordre . . . . . . . . . . . . . . . . . . . . 12

3 Algèbre linéaire dense et implémentation 13

3.1 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.1.1 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.1.2 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2 Opérations de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.1 Opérations vectorielles . . . . . . . . . . . . . . . . . . . . . . 153.2.2 Opérations matricielles . . . . . . . . . . . . . . . . . . . . . . 15

3.3 Algorithmes pour les opérations de base . . . . . . . . . . . . . . . . 163.3.1 Opérations vectorielles . . . . . . . . . . . . . . . . . . . . . . 163.3.2 Le produit Matrice Vecteur et le produit "extérieur" de deux

vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.3.3 Produit Matrice-Matrice . . . . . . . . . . . . . . . . . . . . . 19

3.4 Considérations des niveaux d’opérations . . . . . . . . . . . . . . . . 22

4 Résolution de systèmes linéaires par une méthode directe 25

4.1 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.1.1 Estimation de l’erreur de résolution . . . . . . . . . . . . . . . 254.1.2 Gauss ou Cramer ? . . . . . . . . . . . . . . . . . . . . . . . . 27

4.2 Systèmes linéaires à matrice triangulaire . . . . . . . . . . . . . . . . 284.3 Méthode directe avec élimination de Gauss . . . . . . . . . . . . . . . 29

4.3.1 Élimination de Gauss . . . . . . . . . . . . . . . . . . . . . . 294.3.2 Factorisation LU . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.4 Du choix du pivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.4.1 Analyse de la méthode d’élimination de Gauss sans pivot . . 334.4.2 Pivot partiel . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.5 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Page 4: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

2 Table des matières

5 Vers l’optimisation d’algorithmes numériques 37

5.1 Matrices symétriques définies positives . . . . . . . . . . . . . . . . . 375.2 Matrices creuses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.2.1 Stockage General Band . . . . . . . . . . . . . . . . . . . . . 395.2.2 Largeur de bande . . . . . . . . . . . . . . . . . . . . . . . . . 40

5.3 Matrices tridiagonales . . . . . . . . . . . . . . . . . . . . . . . . . . 405.3.1 Cas de test pour la résolution d’un système tridiagonal . . . . 435.3.2 Résolution d’un système tridiagonal . . . . . . . . . . . . . . 43

Bibliographie 45

Page 5: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

Chapitre 1

Introduction

Ce cours est réalisé dans le cadre de la formation FSI-ISN proposée par l’Univer-sité de Versailles Saint-Quentin-en-Yvelines (UVSQ). Son intitulé couvre une largediscipline consistant à appliquer des méthodes mathématiques pour la résolution dedivers problèmes issus de la modélisation de problème provenant de diverses disci-plines, sur des machines de calcul.Dans cette introduction nous présentons la place du calcul numérique dans les pro-gramme de la spécialité ISN et d’informatique des classes préparatoires aux grandesécoles (CPGE). Puis, nous présentons les enjeux du calcul numérique pour la simu-lation sur ordinateur avant de présenter les objectifs du cours.

1.1 Le calcul numérique dans le programme ISN

Cette discipline repose sur les acquis du programme d’Informatique et Sciencesdu Numérique concernant la représentation de l’information, l’algorithmique et laprogrammation. Et, elle est, par essence et dans son application, intimement liéeaux enseignements des différentes matières scientifiques (mathématiques, physique,chimie, biologie, etc...).Le calcul numérique fait l’objet du programme d’informatique des CPGE sous lenom d’Ingénierie numérique et simulation. Il est proposé d’étudier l’implémentationd’algorithmes numériques simples et l’utilisation de bibliothèques pour résoudredes problèmes modélisés, i.e. mis en équations, dans d’autres disciplines. A l’instarde ce programme, on peut classer les algorithmes selon trois types de problèmesà résoudre : les problèmes stationnaires conduisant à la résolution d’une équationalgébrique ou transcendante, les problèmes dynamiques conduisant à la résolutionapprochée d’une équation différentielle ordinaire et les problèmes discrets multidi-mensionnels linéaires, conduisant à la résolution de systèmes linéaires.Selon le type de modèle que l’on se propose d’étudier il est possible que les typesde problèmes rencontrés soient de différentes natures et pas seulement d’une sorte.Le numéricien doit alors pouvoir comprendre les modèles, connaître les typesd’algorithmes qu’il peut employer, leurs limites ainsi que d’interpréter les résultats.Il s’intègre dans un processus qui est celui de la simulation numérique.

Page 6: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

4 Chapitre 1. Introduction

1.2 Le calcul numérique et la simulation numérique

La simulation numérique permet de réaliser des expériences sur des machinesde calcul. Elle est par exemple utilisée pour la simulation de phénomène à grandeséchelles comme les prévisions météorologiques, ou dangereux comme les essaisnucléaires ou certaines expériences en chimie. Elle est également utilisée dansl’industrie pour réduire les temps et les coûts de conception d’un produit. Parexemple dans l’industrie automobile, les essais aérodynamiques ne nécessitentplus l’usage de souffleries, les crashs tests peuvent être préalablement réalisés parinformatique etc... On voit émerger l’utilisation de la simulation numérique dansbien d’autres domaines. On peut citer l’exemple la biologie informatique avec leséquençage de génôme, l’étude des protéines etc...Pour chaque domaine d’application on peut considérer la simulation numériquecomme une chaîne faisant intervenir plusieurs acteurs et plusieurs disciplines. Cettechaîne fait intervenir un expert de l’application qui propose un modèle (Domained’application). Une formulation mathématique de ce problème est ensuite proposéesous forme de schémas numériques (Mathématiques Appliquées). Ces schémasnumériques sont implémentés et donnent lieu à des problèmes numériques quidoivent être résolus par différents algorithmes (Mathématiques Appliquées etInformatiques). Ces algorithmes peuvent être optimisés en fonction du type demachine de calcul adressé (Informatique). Enfin, la solution obtenue est traitée pourson exploitation (Post-traitement et Visualisation) ensuite analysée et exploitée parl’expert (Domaine d’application).

Prenons un exemple simple traité en cours de physique et de mathématiques :la résolution de l’équation de la chaleur 1D stationnaire.

1. L’expert modélise le système qu’il étudie. On considère l’équation dela chaleur dans un milieu immobile linéaire homogène avec terme source etisotrope :

−k ∂2T∂x2 = g, x ∈ ]0, 1[

T (0) = Tout

T (1) = Tin

(1.1)

Où g est un terme source, k > 0 le coefficient de conductivité thermique, etTout < Tin les températures au bord du domaine considéré.

2. Le numéricien propose un schéma numérique. On se propose de ré-soudre cette équation par une méthode de différence finie centrée d’ordre 2.On discrétise le domaine 1D selon n+2 noeuds xi, i = 0, 1, 2, ...n+1, espacésd’un pas h constant.

En chaque noeuds l’équation discrète s’écrit :

− k

(

∂2T

∂x2

)

i

= gi (1.2)

Page 7: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

1.2. Le calcul numérique et la simulation numérique 5

Soit pour i = 1, 2, ...n, u ∈ Rn le vecteur contenant la température en chaque

point de discrétisation, u =

u1u2...un

, l’équation discrète s’écrit :

k

h2(−ui−1 + 2ui − ui+1) = gi (1.3)

Au bord on note u0 = Tout et un+1 = Tin (Conditions aux limites dites deDirichlet). Ainsi l’équation pour i = 1 s’écrit :

k(2u1 − u2) = kTout − g1

et l’équation pour i = n s’écrit :

k(−un−1 + 2un) = kTin − gn

3. On peut poser le système linéaire sous forme matricielle : Au = f

où A ∈ Rn×n, u, f ∈ R

n. Si il n’y a pas de terme source alors g = 0. D’où lesystème linéaire suivant :

Au = f ⇔

2 −1

−1 2 −1. . . . . . . . .

−1 2 −1

−1 2

u1u2...

un−1

un

=

Tout

0...0

Tin

4. Puis on choisit une méthode de résolution de système linéaire que l’on

implémente ou que l’on utilise via une bibliothèque de calcul numérique. Lechoix de la méthode de résolution dépend des propriétés de la matrices A, desa taille, du nombre d’éléments non nul de la matrice etc... En fonction de sesparamètres un grand nombre de choix algorithmique peuvent être fait. Il fautégalement prendre en considération le type de machine sur lequel on calcule.

5. On effectue la résolution pour des paramètres donnés (ici n, Tout, Tin,g = 0).

6. On visualise les résultats.

Chacun de ces points nécessitent une expertise. Par exemple, ici le modèlerepose sur des hypothèses fortes : un milieu immobile linéaire homogène avec termesource et isotrope. La discrétisation du problème selon un schéma différence finierespecte ce modèle et ces hypothèses. Si les hypothèses changent alors le schémadoit changer en conséquence. Les propriétés de l’opérateur qui en découle peuventchanger et le choix de la méthode de résolution également.

Sans avoir des compétences pointus dans chacun des domaines, il est nécessaired’avoir une bonne compréhension des problèmes et d’être pluridisciplinaire afin depouvoir proposer des méthodes de résolution adaptés et permettant de fournir unesolution valide et exploitable.

Page 8: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

6 Chapitre 1. Introduction

1.3 Objectifs du module

Dans les sections précédentes, il a été vu que le calcul numérique repose sur desconnaissances en informatique et en mathématique et s’intègre dans le processus desimulation numérique. Selon le type de problème, les méthodes mathématiques etl’algorithmie varient.L’implémentation d’algorithmes numériques pour la résolution de problèmesnécessitent de connaître le champ d’application d’un algorithme et de comprendrecomment se comportent numériquement ces algorithmes, i.e. comprendre l’effetd’une variation des paramètres sur le temps de calcul et sur la précision desrésultats. En plus du comportement numérique, il faut savoir évaluer la complexitédes algorithmes en termes de complexité arithmétiques et de stockage en mémoireafin d’implémenter des algorithmes efficaces en termes de performance sur machinede calcul.

Compte tenu du nombre d’heures dévolues à cet enseignement (3h CM et 3hTP), ce cours ne peut prétendre couvrir l’intégralité du programme mais présenteaux travers de l’un des axes principaux du programmes de CPGE, la résolutionde système linéaire, différents points de connaissances nécessaires à la pratique ducalcul scientifique.

Afin de comprendre les enjeux de l’implémentation d’un algorithme numériquepour la simulation, nous étudions dans un premier temps les limitations intrinsèquesà la manipulation des nombres réels sur un système informatique. Nous proposonsquelques rappels d’algèbre linéaire et étudions plus particulièrement l’algorithmiepour le calcul des opérations de base d’algèbre linéaire dense. Nous étudions ensuitela résolution de systèmes linéaires par une méthode directe et plus particulièrementla méthode de Gauss. Enfin nous verrons quelques pistes pour optimiser l’implémen-tation d’un algorithme sur l’exemple de l’introduction.

Page 9: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

Chapitre 2

Représentation des réels

Tout comme pour la représentation des entiers sur un ordinateurs, il est impos-sible de représenter une infinité de nombre. Dès lors, comment représenter l’ensembledes nombres réels ?Le calcul numérique consiste en la manipulation de nombres réels représentés parinformatique selon un système des nombres à virgule flottante. Les nombres réelsreprésentables appartiennent à un sous ensemble des nombres réels. Les éléments decet ensemble ont une forme définie qui implique une erreur d’arrondi. Ainsi lorsquel’on manipule des nombres réels il faut tenir compte des erreurs d’arrondis que l’oncommet.Nous présentons dans une première section la représentation des nombres flottantssur ordinateurs et les erreurs commises par leur manipulation. Puis nous présentonsdifférents cas de figure illustrant le type d’erreur que l’on peut commettre lorsquel’on effectue du cacul en arithmétique flottante finie.

2.1 Système de représentation des nombres réels et er-

reurs

Dans cette section nous présentons le système de représentation des nombresréels. Nous présentons comment quantifier les erreurs commises.

2.1.1 Représentation des nombres réels en informatique

Nous proposons une définition du système de nombres à virgule flottante. Apartir de cette définition nous énoncerons certaines propriétés importantes.

Definition 2.1.1 (Système des nombres à virgule flottante)

Un système de nombres à virgule flottante F ⊂ R est un sous-ensemble des nombres

réels dont les éléments s’écrivent sous la forme :

y = ±m× βe−t (2.1)

Où :

• β ∈ N. β représente la base.

• t ∈ N la précision.

• e ∈ N l’exposant avec emin ≤ e ≤ emax

• m ∈ N la mantisse, telle que 0 ≤ m ≤ βt − 1 et m ≥ βt−1 pour assurer

l’unicité de chaque y 6= 0.

Page 10: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

8 Chapitre 2. Représentation des réels

Les flottant non-nuls sont bornés selon la relation :

βemin−1 ≤ |y| ≤ βemax(1− β−t) (2.2)

On remarque que les nombres flottants ne sont pas espacés de manière égale.Prenons par exemple β = 2, t = 2, emin = −1, emax = 1. Alors les nombres flottantspositifs non-nuls sont : {0.25, 0.375, 0.5, 0.75, 1.0, 1.5}.Plus précisément à chaque puissance de 2, l’espace entre deux nombres augmented’un facteur 2. Ici, e − t vaut −3, − 2, − 1 et l’espacement entre deux nombresflottants vaut respectivement 0.125, 0.25, 05.L’espacement est caractérisé par l’epsilon machine qui correspond à la distanceεM = β1−t entre 1.0 et le plus grand nombre flottant immédiatement représentéaprès 1.0. Dans notre exemple εM = 0.5.

Lemma 2.1.2 (Espacement) L’espacement entre un nombre à virgule flottante

normalisé x et un nombre à virgule flottante normalisé adjacent est au moins égal

à β−1εM |x| et au plus égal à εM |x|.

La représentation d’un nombre réel entraîne une erreur d’arrondi. Soit G ⊂ R

un ensemble de nombres réels suivant la définition 2.1.1 pour tout e. On appellearrondi ( rounding en anglais) la transformation définie comme suit :

fl :

{

R −→ G

x 7−→ fl(x)(2.3)

fl est un mapping sur G. On s’intéresse aux cas où fl produit un résultatdans F . Dans le cas contraire on parle d’overflow ou d’underflow. L’overflow

apparaît lorsque |fl(x)| ≥ max {|y| : y ∈ F}. L’underflow apparaît lorsque0 ≤ |fl(x)| ≤ min {|y| : 0 6= y ∈ F}.

Tout x compris dans l’enveloppe convexe de F dans R peut être approximé parun élément de F avec une erreur relative inférieur ou égal à u = 1

2β1−t.

u est appelé unit roundoff, l’unité d’arrondi.

Theorem 2.1.3 Si x ∈ R est compris dans l’enveloppe convexe de F dans R alors,

fl(x) = x(1 + δ) où |δ| ≤ u =1

2β1−t (2.4)

Afin de pouvoir effectuer des analyses d’erreur d’arrondi, on fait des hypothèsessur l’exactitude des opérations arithmétiques de base. On suivra le modèle standard :

fl(x op y) = (x op y)(1 + δ), |δ| ≤ u, op = + , − , ∗ , / (2.5)

Deux principaux formats de nombres à virgule flottante sont définis par la normeIEEE 754 publiée en 1985 : le format simple précision, Single Precision, et le for-mat double précision, Double Precision. Ces formats sont présentés dans le Tableau2.1. Pour ces formats la norme définit des exceptions et leurs résultats par défautprésentés dans le tableau 2.2

Page 11: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

2.1. Système de représentation des nombres réels et erreurs 9

Type Taille Signe Mantisse Exposant Unité d’arrondi u BornesSimple 32 bits 1 bit 23 bits 8 bits 2−24 ≃ 5.96 × 10−8 10±38

Double 64 bits 1 bit 52 bits 11 bits 2−53 ≃ 1.11 × 10−16 10±308

Table 2.1 – Formats IEEE 754 des simple et double précision

Exception Exemple Résultat par défautOpération non valide 0/0,

√−1, 0×∞, ∞/∞ NaN (Not a Number)

Overflow ±∞Underflow Nombre dénormalisé

Division par zéro 8.0/0 ±∞

Table 2.2 – Exceptions pour la norme IEEE 754

Remark 1 (Nombres dénormalisés) La plus petite valeur de nombre à virgule flot-

tante normalisé est λ = βemin−1. Afin de représenter des nombres entre 0 et λ

on introduit les nombres dénormalisés qui permettent d’étendre le système F . Ils

s’écrivent sous la forme :

y = ±m× βemin−t, 0 ≤ m ≤ βt−1

Le plus petit nombre dénormalisé est µ = βemin−t = λεM . Les nombres dénormalisés

sont espacés de manière égale.

2.1.2 L’erreur en arithmétique flottante

Le calcul en précision finie comme défini précédemment à plusieurs source d’er-reurs, la plus évidente étant l’erreur d’arrondi qui est une conséquence directe dusystème de représentation des nombres à virgule flottante. Mais il faut égalementtenir compte de l’incertitude présente dans les données manipulées, notamment ensimulation numérique de phénomènes. En effet, on peut rencontrer des erreurs dansles mesures sur lesquelles reposent les calculs, ou bien les données écrites dans desfichiers ont pu être arrondies à l’écriture, ou encore les données ont été préalable-ment calculées sur ordinateur et sont donc une approximation entachée d’erreur.Nous présentons ici de manière brève les principaux éléments permettant d’estimeret de comprendre les erreurs commises lors du calcul en précision finie. Les élé-ments ci-dessous sont tirés du livre de J. H. Higham (Higham 2002) et de celui deWilkinson (Wilkinson 1963).

2.1.2.1 Calcul de l’erreur relative

Soit x une approximation d’un nombre réel x. On peut mesurer la précision de x

par le calcul l’erreur absolue Eabs, et de l’erreur relative Erel, définies comme suit :

Eabs(x) = |x− x| et Erel(x) =|x− x||x| pour x 6= 0

Page 12: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

10 Chapitre 2. Représentation des réels

On remarque que l’erreur relative est indépendante d’un changement d’échelle.En effet, si l’on considère x → αx et x → αx, l’erreur relative reste inchangée alorsque l’erreur absolue est affectée d’un facteur α.Deplus, l’erreur relative est intimement liée à la notion de nombre de chiffres signi-ficatifs, i.e. le nombre de chiffres non nuls après le dernier 0 dans un nombre (ex :1.6543 a 5 chiffres significatifs, 0.0034 a 2 chiffres significatifs) . Dans (Higham 2002),l’auteur énonce le fait que x approche x avec p chiffres significatifs si |x− x| est pluspetit qu’un demi dans le p-ième chiffre significatif de x :

Erel(x) ≤1

2× 10−p

En calcul scientifique, où les facteurs d’échelle peuvent être important et où l’ondoit avoir un indicateur sur le nombre de chiffres significatifs, on préfèrera doncl’usage de l’erreur relative.

2.1.2.2 Calcul de la qualité d’une approximation

Considérons une fonction f : R → R, et les réels x et y = f(x) calculé avec uneprécision arithmétique u. Comment peut-on mesurer la qualité de l’approximationy de y ?

Dans la plupart des cas on aimerait avoir Erel(y) ≃ u mais ceci n’est pas toujourspossible. La question que l’on doit se poser est : pour quel ensemble de donnéesavons-nous résolu le problème ? C’est à dire, pour quelle variation ∆x avons-nousy = f(x+∆x) ?Afin d’étudier cela, on définit l’erreur arrière et l’erreur avant. La valeur absolue decette variation |∆x| est l’erreur en arrière, backward error. L’erreur sur y est appeléerreur en avant, forward error.

Le fait de borner l’erreur arrière d’une solution calculée par informatique s’ap-pelle l’analyse de l’erreur arrière. Elle permet d’interpréter les erreurs d’arrondiscomme étant des perturbations des données. Une méthode calculant y = f(x) eststable en arrière, backward stable, si elle calcule une solution avec avec une petite

variation sur les données, c’est-à-dire si y = f(x + ∆x). Par exemple en suivant lemodèle donné par l’équation (2.5) pour l’addition de deux données x et y, on obtientexactement le même résultat avec les données perturbées x(1 + δ) et y(1 + δ) où|δ| ≤ u. L’opération + est donc backward stable.

En revanche, pour d’autre type de fonction, comme le cosinus par exemple, on nepeut avoir y = cos(x+∆x) mais plutôt une relation du type y+∆y = cos(x+∆x).On étudiera alors une erreur mixte avant-arrière, mixed forward-backward error. Onétudiera donc un résultat de la forme :

y +∆y = cos(x+∆x), où |∆y| ≤ ε|y|, |∆x| ≤ η|x|, ε, η ∈ R. (2.6)

Pour simplifier, l’équation (2.6) signifie, avec ε et η suffisamment petit, que l’oncalcule y qui est quasiment la bonne réponse pour presque les bonnes données.

Dans la suite de ce cours, nous utiliserons ce type de relation.

Page 13: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

2.2. Limites du calcul en arithmétiques flottantes 11

2.1.2.3 Le conditionnement

La relation entre les erreurs avant et arrière est gouvernée par le conditionnementdu problème. Le conditionnement quantifie la sensibilité de la solution du problèmeà une perturbation des données. On peut aussi dire qu’il quantifie la capacité àgénérer de l’erreur d’un opérateur.

Une relation générale et très utile est la suivante :

forward error ≤ condition number × backward error (2.7)

La solution d’un problème mal conditionné peut avoir une grande erreur avant.Nous utiliserons cette relation pour étudier la précision des méthodes de résolutionde système linéaire.

2.2 Limites du calcul en arithmétiques flottantes

Dans cette section on montre par l’exemple les limites du calcul en précisionfinie et notamment un phénomène appelé annulation, cancellation. L’annulationaparaît lorsqu’on soustrait deux nombres quasiment égaux. Nous verrons dans unprochain chapitre comment considérés ses limites dans le cas de la résolution desystème linéaire. Ces exemples sont tirés de (Higham 2002) et sont largement utilisépour illustré ce problème. Cette section s’emploie a présenté ce cas et proposer dessolutions.

2.2.1 Étude de f(x) = 1−cos(x)x2

Nous considérons ici un arrondi à 10 chiffres significatifs. Soit la fonction

f :R → R

x 7−→ f(x) = 1−cos(x)x2

Nous allons étudier la relation g(x) = 1− cos(x).Pour x = 1.2× 10−5, cos(x) = 0.9999999999 et donc g(x) = 0.0000000001 = 10−10.Alors,

f(x) =g(x)

x2=

10−10

1.44 × 10−10= 0.69444

Or ∀x 6= 0, 0 ≤ f(x) ≤ 12 . Le résultat obtenu à 10 chiffres significatifs est donc faux.

Ceci est dû au fait que g(x) n’a qu’un seul chiffre significatif. La soustractionest exacte mais produit un résultat de la même taille que l’erreur dans cos(x). Lasoustraction amplifie donc l’erreur qui a pu être commise dans des calculs précédents.

Pour ce problème on écrire f de sorte à éviter le phénomène d’annulation. Enremarquant que cos(x) = 1− sin2(x2 ), on écrit :

f(x) =1

2

(

sin(x2 )x2

)2

Page 14: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

12 Chapitre 2. Représentation des réels

Avec un arrondi à 10 chiffres significatifs, on obtient f(x) = 0.5 qui est juste à cetteprécision.

2.2.2 Équation du second ordre

Soit x1 et x2 les solutions de l’équation P (x) = ax2 + bx + c = 0. On souhaitecalculer les racines de cette équation en utilisant les 2 méthodes suivantes :

(1)- xi =−b±

√b2−4ac2a pour i = 1, 2.

(2)- x1 par la méthode (1) et x2 par :x1x2 = c/a et x1 + x2 = −b/a.

On peut remarquer deux situations d’annulation dans le cas de la méthode (1) :

1. Si b2 ≫ |4ac| alors√b2 − 4ac ≃ |b|. Dans ce cas, l’annulation est problèma-

tique. En effet, fl(√

(b2− 4ac) est inexacte et la soustraction amplifie l’erreurcommise dans l’approximation de la racine carrée.Afin de contourner ce problème, on calcule la plus grande racine en valeur ab-

solue, x1 =−b+sign(b)

√b2−4ac

2a puis la seconde racine avec l’équation x1x2 = c/a.

2. Dans le cas où l’équation admettrait deux racines très proches, i.e. le cas oùb2 ≃ 4ac, alors aucune des deux méthodes n’est valable.Une solution serait d’augmenter la précision du calcul de b2 − 4ac.

D’autres problèmes peuvent apparaître ici, comme l’overflow et l’underflow. Prenonspar exemple l’équation :

1020x2 − 3× 1020x+ 2× 1020 = 0

En supposant que l’on effectue le calcul en simple précision, et que le plus grandréel représentable est 1038 alors on obtient un overflow, c’est à dire un dépassementde ce plus grand nombre représentable (ici b2 = 9×1040 et 4ac = 8×1040). La solu-tion consiste ici à effectuer un changement d’échelle (scaling) en divisant l’équationpar max(|a|, |b|, |c|). Ce type de méthode ne marche pas dans tous les cas et il fautparfois combiner changement de variable et scaling.

Page 15: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

Chapitre 3

Algèbre linéaire dense et

implémentation

Dans ce cours nous abordons le calcul numérique par l’étude de l’implémen-tation des méthodes de résolution de systèmes linéaires. L’implémentation de cesméthodes repose sur l’implémentation des opérations de base en algèbre linéaire. Cechapitre présente les principales opérations en algèbre dense réelle. On entend paralgèbre dense, le fait de considérer dans le stockage et les opérations tous les élé-ments des matrices et des vecteurs par opposition à l’algèbre creuse dans laquelle onne considère que les éléments non-nuls. Ces opérations sont implémentées dans unebibliothèque optimisée et utilisée dans la plupart des applications : la bibliothèqueBLAS. Chacun des algorithmes présentés est écrit dans le langage MATLAB qui esten partie un langage haut niveau pour le calcul matriciel. Pour les opérations enalgèbre dense, le logiciel MATLAB ou sa version libre Octave (même langage queMATLAB) utilise ces fonctions BLAS.Nous présentons dans un premier temps les notations employées ainsi que leur équi-valent dans le langage MATLAB. Ensuite nous présentons les opérations matricielleset vectorielles. Dans une troisième section, nous présentons l’algorithmie de ces opé-rations et présentons la manière dont l’on peut manipuler les boucles pour faireapparaître différents types d’opérations pour obtenir le même résultat final. Enfinune dernière section traite de l’importance des niveaux d’opérations, de l’importancedu jeu d’écriture des algorithmes pour faire apparaitre des opérations de différentsniveaux et de l’usage de bibliothèque.La présentation de ces algorithmes et une analyse plus détaillée sont proposées dansl’ouvrage (Golub & Van Loan 1996) sur lequel s’appuye ce support de cours. Lesinformations et la documentation sur Octave une version libre inspirée du langageMATLAB, permettant d’obtenir des compléments sur les notations et les possiblitésde ce type de langage haut niveau peuvent être obtenue dans (Eaton et al. 2009)et (Octave community 2014). La documentation sur la bibliothèque de calcul BLASpeut être obtenu sur (netlib 19YY).

Il est à noter que dans les programmes ISN, deux langages sont conseillés :Python (avec numpy) et Scilab. La programmation dans ces deux langages est trèsproches de celles de MATLAB.

Page 16: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

14 Chapitre 3. Algèbre linéaire dense et implémentation

3.1 Notations

Dans la suite du document, les majuscules sont utilisées pour les matrices. Lesminuscules sont utilisées pour les scalaires et les vecteurs.

3.1.1 Matrices

Soit une matrice réelle A ∈ Rm×n, la matrice A = (ai,j) pour 1 ≤ i ≤ m et pour

1 ≤ j ≤ n s’écrit :

A =

a11 . . . a1n...

...am1 . . . amn

Dans le langage MATLAB on accèdera à un élément val = aij avec

val = A(i, j)

On peut extraire une colonne j, un vecteur de taille m que l’on note colj ∈ Rm en

utilisant les " :" pour couvrir l’ensemble des indices d’une direction. Ainsi

colj = A(:, j)

De même on peut extraire une ligne i, un vecteur de taille n que l’on note rowi ∈ Rn :

rowi = A(i, :)

3.1.2 Vecteurs

Soit un vecteur réel x ∈ Rn le vecteur 1 ≤ i ≤ n s’écrit :

x =

x1...xn

Dans le langage MATLAB on accèdera à un élément val = xi avec

val = x(i)

.On notera que dans ces notations x est un vecteur colonne, x ∈ R

n×1. Si x ∈ R1×n

alors x est un vecteur ligne, ou une matrice à une ligne et n colonnes.

3.2 Opérations de base

Les opérations vectorielles et matricielles sont rappellées.

Page 17: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

3.2. Opérations de base 15

3.2.1 Opérations vectorielles

Soient a ∈ R, x, y, z ∈ Rn.

• Mutiplication d’un vecteur par un scalaire

z = ax ⇒ zi = axi

• Addition de deux vecteurs

z = x+ y ⇒ zi = xi + yi

• Produit scalaire

a = xT y ⇒ a =n∑

i=1

xiyi

• Produit d’Hadamard (Terme à terme)

z = x. ∗ y ⇒ zi = xiyi

Dans les algorithmes et certaines écritures d’opérations, le signe "=" est utilisépour signifier une affectation, soit un écrasement de la valeur par une autre valeur.On notera par exemple l’opération SAXPY pour Scalar a x plus y :

y = ax+ y ⇒ yi = axi + yi

Remark 2 (Notation anglosaxonne de la transposée et notation MATLAB) Soit

y ∈ R1×n, la transposée d’un vecteur colonne x ∈ R

n×1 on note la transposée :

y = tx, ou y = xT en notation anglosaxonne

Dans ce document, la notation anglosaxonne est utilisée. Dans le langage MAT-

LAB la transposée suit cette notation et s’écrit : y = x′

Cette notation s’applique également pour les matrices.

3.2.2 Opérations matricielles

Soient α ∈ R. A, B et C des matrices réelles dont la taille est définie pour chaqueopération.

• Transpose : Rm×n → Rm×n

C = AT ⇒ cij = aji

• Addition : Rm×n × Rm×n → R

m×n

C = A+B ⇒ cij = aij + bij

• Multiplication par un scalaire : R× Rm×n → R

m×n

C = αA ⇒ cij = αaij

• Multiplication Matrice-Matrice Rm×p × R

p×n → Rm×n

C = AB ⇒ cij =

p∑

k=1

aikbkj

Page 18: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

16 Chapitre 3. Algèbre linéaire dense et implémentation

3.3 Algorithmes pour les opérations de base

Cette section propose un panel des principaux algorithmes implémentant les opé-rations matricielles et vectorielles présentées précédemment. Ces algorithmes sontimplémentés dans la bibliothèque BLAS et catégorisés selon le type d’opération etleur complexité : Vecteur-Vecteur de niveau 1, Matrice-Vecteur de niveau 2, Matrice-Matrice de niveau 3. Le dernière section 3.4 évoque ces niveaux d’opérations et lesrecommandations d’utilisation.Une attention particulière est portée sur l’arrangement des boucles pour ces algo-rithmes ainsi que sur le type d’opération auxquelles ils font appel.

3.3.1 Opérations vectorielles

Les principaux algorithmes sont l’opération SAXPY, qui regroupe la multiplica-tion par un scalaire ainsi que la somme de deux vecteurs, et le produit scalaire.Soient a ∈ R, x, y ∈ R

n, les algorithmes 1 et 2 présentent ces opérations vectorielles.On notera que la complexité arithmétique de ces algorithmes est en O(n) opérations.La complexité croît donc linéairement avec la taille des vecteurs.Ils font partie des opérations dites de niveau 1.

Algorithm 1 Produit scalaire : a = xT y

Require: x, y ∈ Rn

a = 0;

for i = 1 : n

a = a+ x(i) ∗ y(i);end

Algorithm 2 Opération SAXPY : y = ax+ y

Require: a ∈ R, x, y ∈ Rn

for i = 1 : n

y(i) = a ∗ x(i) + y(i);

end

3.3.2 Le produit Matrice Vecteur et le produit "extérieur" de deuxvecteurs

Ces algorithmes pour les opérations faisant interagir des matrices et des vecteursont une complexité en O(m × n), une complexité quadratique. Ils font partie desopérations dites de niveau 2.

Page 19: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

3.3. Algorithmes pour les opérations de base 17

3.3.2.1 Produit matrice-vecteur

Soient A ∈ Rm×n, x, y ∈ R

n le produit Matrice-Vecteur y = Ax s’écrit :

yi =n∑

j=1

aijxj , , pour i = 1 : m

On étend l’opération SAXPY faisant intervenir un produit d’un scalaire avec unvecteur, à l’opération GAXPY faisant intervenir le produit d’une matrice avec unvecteur. G est ici employé pour général. L’opération GAXPY implémentée selonl’algorithme 3 en parcourant d’abord les lignes de A, s’écrit pour i = 1 : m,

yi =n∑

j=1

aijxj + yi

Algorithm 3 Opération GAXPY double boucle, avec parcours prioritaire des lignesde A : y = Ax+ y

Require: x, y ∈ Rn et y = 0n

for i = 1 : m

for j = 1 : n

y(i) = A(i, j) ∗ x(j) + y(i);

end

end

La complexité est ici en O(m × n). On notera que le coeur de la boucle sur j

est ici un produit scalaire et donc une opération de niveau 1.

On peut écrire cet algorithme en parcourant en priorité les colonnes de la matriceA. L’algorithme 4 qui en résulte est de même complexité, i.e. en O(n × m). Enrevanche l’opération qui relève du coeur de la boucle sur i est maintenant uneopération SAXPY, opération de niveau 1. Ces deux algorithmes sont équivalent ausens où ils produisent le même résulat. En revanche, leurs performances pourrontêtre différentes selon que la matrice soit stockée par ligne ou par colonne. Dans lecas ou la matrice est stockée par ligne on préfèrera l’algorithme 3.

Algorithm 4 Opération GAXPY double boucle, avec parcours prioritaire des co-lonnes de A : y = Ax+ y

Require: x, y ∈ Rn et y = 0n

for j = 1 : n

for i = 1 : m

y(i) = A(i, j) ∗ x(j) + y(i);

end

end

Page 20: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

18 Chapitre 3. Algèbre linéaire dense et implémentation

Les opérations de type GAXPY sont des opérations dites de niveau 2 faisantintervenir des matrices et des vecteurs. Les opérations de la boucle intérieur sont desopérations de niveau 1. On peut donc écrire les algorithmes en utilsant la notationavec les " :" tel qu’une seule boucle n’apparaisse (et donc les opérations produitscalaire ou SAXPY). On obtient alors les algorithmes 5 et 6.

Algorithm 5 Opération GAXPY une boucle, avec parcours prioritaire des lignesde A : y = Ax+ y

Require: x, y ∈ Rn et y = 0n

for i = 1 : m

y(i) = A(i, :) ∗ x+ y(i);

end

Algorithm 6 Opération GAXPY une boucle, avec parcours prioritaire des colonnesde A : y = Ax+ y

Require: x, y ∈ Rn et y = 0n

for j = 1 : n

y = A(:, j) ∗ x(j) + y;

end

3.3.2.2 Produit "extérieur" de deux vecteurs

Soient x ∈ Rm, y ∈ R

n, A ∈ Rm×n, le produit extérieur, outer product (à

l’opposé du produit scalaire appelé aussi produit "intérieur", inner product) s’écrit :

A = xyT

La version avec affectation, à l’instar de SAXPY et GAXPY, s’écrit :

A := A+ xyT

L’algorithme 7 présente une première version à deux boucles de l’algorithme dece produit.

Algorithm 7 Produit "extérieur", avec parcours prioritaire des lignes de A : A =

xyT +A

Require: x, y ∈ Rn et A ∈ R

m × n

for i = 1 : m

for j = 1 : n

A(i, j) = x(i) ∗ y(j) +A(i, j);

end

end

On peut écrire cet algorithme 7 avec une seule boucle en faisant apparaître uneopération de niveau 1, ici SAXPY pour les deux choix de boucle prioritaire selon i,les lignes (Algorithme 8) ou selon j, les colonnes (Algorithme 9).

Page 21: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

3.3. Algorithmes pour les opérations de base 19

Algorithm 8 Produit "extérieur", avec parcours prioritaire des lignes de A : A =

xyT +A

Require: x, y ∈ Rn et A ∈ R

m × n

for i = 1 : m

A(i, :) = x(i) ∗ y′ +A(i, :);

end

Algorithm 9 Produit "extérieur", avec parcours prioritaire des colonnes de A :A = xyT +A

Require: x, y ∈ Rn et A ∈ R

m × n

for j = 1 : n

A(:, j) = y(j) ∗ x+A(:, j);

end

Le produit extérieur est également une opération de niveau 2.

3.3.3 Produit Matrice-Matrice

Soient A ∈ Rm×p, B ∈ R

p×n et C ∈ Rm×n, on réalise l’opération :

C = AB

Aux vues des différentes opérations présentées précédemment, il est possible deconsidérer le produit de deux matrices sous différents points de vue.La manière la plus évidente qui découle directement de la définition du produit dedeux matrices est celle faisant intervenir le produit scalaire : on traite tout d’abordles lignes de A, on fait le produit scalaire de chaque ligne de A avec chaque colonnede B. Chaque élément de C est donc le résultat du produit scalaire d’une ligne deA avec une colonne de B :

C =

a11 ∗ b11 + a12 ∗ b21 + · · ·+ a1p ∗ bp1 . . . a11 ∗ b1n + a12 ∗ b2n + · · ·+ a1p ∗ bpn.

.

.

.

.

.

am1 ∗ b11 + am2 ∗ b21 + · · ·+ amp ∗ bp1 . . . am1 ∗ b1n + am2 ∗ b2n + · · ·+ amp ∗ bpn

Soit,

C =

A(1, :)B(:, 1) . . . A(1, :)B(:, n)...

...A(m, :)B(:, 1) . . . A(m, :)B(:, n)

(3.1)

Mais il est possible de réaliser ce produit en privilégiant d’autres opérations.Tout d’abord on peut considérer chaque colonne de C comme le résultat d’unecombinaison linéaire de colonnes de A. On privilégie alors l’opération SAXPY et onécrit C telle que :

C =(∑p

k=1B(k, 1) ∗A(:, k) . . .∑p

k=1B(k, n) ∗A(:, k))

(3.2)

Page 22: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

20 Chapitre 3. Algèbre linéaire dense et implémentation

Enfin, on peut considérer C comme la somme de produits extérieurs des colonnesde A avec les lignes de B. On écrit alors C telle que :

C = A(:, 1) ∗B(1, :) +A(:, 2)B(2, :) + · · · +A(:, p)B(p, :) (3.3)

On remarque que chacune de ces formulations utilise des types d’opérationsdifférents de différents niveaux. Dans la suite, on va voir comment se décline l’écrituredu produit Matrice-Vecteur au regard de cette caractéristique. Ces algorithmes pourle produit Matrice-Matrice ont une complexité en O(m × n × r), une complexitécubique. Il font partie des algorithmes de niveau 3.

3.3.3.1 Algorithmes scalaires

Au niveau algorithmique, si l’on considère une écriture scalaire, on doit faireintervenir trois boucles, l’une selon i variant de 1 à m, les lignes de A, une autreselon j variant de 1 à n, les colonnes de B et enfin k qui correspond aux colonnes deA et lignes de B. Selon les arrangements de boucles on peut obtenir six formulationsdifférentes correspondant aux différentes formes possibles d’écriture du produit dedeux matrices présentées précédemment. Ces formulations sont notées "ijk", "jik","ikj", "jki", "kij", "kji".On considère la forme

C = AB + C

, à l’instar de SAXPY et GAXPY.

Algorithm 10 Produit Matrice-Matrice "ijk"

Require: ARm×p, BRp×n et CR

m×n

for i = 1 : m

for j = 1 : n

for k = 1 : p

C(i, j) = A(i, k)B(k, , j) + C(i, j);

end

end

end

Dans la version "ijk" présentée dans l’Algorithme 10, la boucle intérieure, selonk, correspond à un produit scalaire, la boucle intermédiaire, selon j correspond à unproduit vecteur-matrice. Pour chaque version on peut identifier le type d’opérationintervenant à chaque boucle, comme il a été fait pour les opérations Matrice-Vecteuravec deux boucles. Le tableau 3.1 montre les différentes opérations de chacune desdeux boucles selon les algorithmes.

3.3.3.2 Algorithmes vectoriels

On écrit dans la suite les différents algorithmes en écriture vectorielle.

Page 23: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

3.3. Algorithmes pour les opérations de base 21

Version Boucle intermédiaire Boucle intérieure Accès aux données

(boucle intérieure)

ijk vecteur × matrice produit scalaire ligne de A

et colonne de B

jik matrice × vecteur produit scalaire ligne de A

et colonne de B

ikj GAXPY ligne SAXPY ligne de B

et ligne de C

jki GAXPY colonne SAXPY colonne de A

et colonne de C

kij produit extérieur de lignes SAXPY ligne de B

et ligne de C

kji produit extérieur de colonnes SAXPY colonne de A

et colonne de C

Table 3.1 – Opérations des boucles selon la version d’algorithme du produitMatrice-Vecteur

Algorithme "ijk" : la version avec produit scalaire

L’algorithme 11 est l’écriture du produit Matrice-Vecteur "ijk" avec deuxboucles. La boucle intérieure est remplacée par le produit scalaire (niveau 1).L’algorithme 12 est l’écriture du produit Matrice-Vecteur "ijk" avec une boucle. Laboucle intermédiaire est remplacée par le produit Vecteur-Matrice (niveau 2).

Remark 3 (Version "jik") Le même travail peut être effectué sur la version "jik".

La version à une boucle sur j, fera alors intervenir un produit Matrice-Vecteur.

Algorithm 11 Produit Matrice-Matrice "ijk" avec 2 boucles

Require: ARm×p, BRp×n et CR

m×n

for i = 1 : m

for j = 1 : n

C(i, j) = A(i, :)B(:, , j) + C(i, j);

end

end

Algorithm 12 Produit Matrice-Matrice "ijk" avec 1 boucle

Require: ARm×p, BRp×n et CR

m×n

for i = 1 : m

C(i, :) = A(i, :)B + C(i, :);

end

Page 24: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

22 Chapitre 3. Algèbre linéaire dense et implémentation

Algorithme "jki" : la version avec SAXPY

L’algorithme 13 est l’écriture du produit Matrice-Vecteur "jki" avec deuxboucles. La boucle intérieure est remplacée par une opération SAXPY (niveau 1).L’algorithme 14 est l’écriture du produit Matrice-Vecteur "jki" avec une boucle. Laboucle intermédiaire est remplacée par l’opération GAXPY (niveau 2).

Remark 4 (Version "ikj") Le même travail peut être effectué sur la version "ikj".

Algorithm 13 Produit Matrice-Matrice "jki" avec 2 boucles (avec SAXPY)

Require: ARm×p, BRp×n et CR

m×n

for j = 1 : n

for k = 1 : p

C(:, j) = A(:, k)B(k, , j) + C(:, j);

end

end

Algorithm 14 Produit Matrice-Matrice "jki" avec 1 boucle (avec GAXPY)

Require: ARm×p, BRp×n et CR

m×n

for j = 1 : n

C(:, j) = AB(:, , j) + C(:, j);

end

Algorithme "kij" : la version avec produit extérieur

L’algorithme 15 est l’écriture du produit Matrice-Vecteur "kij" avec une bouclequi correspond à la somme de produits extérieurs (niveau 2).

Remark 5 (Version "kij") Le même travail peut être effectué sur la version "kji".

Algorithm 15 Produit Matrice-Matrice "kij" avec 1 boucle (produit extérieur)

Require: ARm×p, BRp×n et CR

m×n

for k = 1 : p

C = A(:, k)B(k, :) + C;

end

3.4 Considérations des niveaux d’opérations

Nous avons classé les opérations selon trois niveaux :

Page 25: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

3.4. Considérations des niveaux d’opérations 23

• le niveau 1 regroupe les opérations dont la complexité arithmétique et l’oc-cupation mémoire sont linéaires, en O(n). Cela correspond par exemple auxopérations entre vecteurs.

• le niveau 2 regroupe les opérations dont la complexité arithmétique et l’occu-pation mémoire sont quadratiques, en O(m×n). Cela correspond par exempleaux opérations entre matrices et vecteurs.

• le niveau 3 regroupe les opérations dont la complexité arithmétique et l’occu-pation mémoire sont cubiques, en O(m×n×r). Cela correspond par exempleaux opérations entre matrices et matrice.

La bibliothèque BLAS déjà mentionnée, qui implémente les algorithmes de ce cha-pitre, utilise ce classement par niveau. La plupart des algorithmes d’algèbre linéairereposent sur des opérations correspondant à différents niveaux.De manière générale on essayera d’utiliser des opérations de niveau élevé autant quefaire se peut afin d’obtenir de bonnes performances. En effet, les opérations de ni-veau élevé peuvent être optimisées et on favorisera par exemple l’usage des fonctionsde la bibliothèque BLAS plutôt que l’usage de boucle.Dès lors, l’implémentation d’algorithmes en calcul numérique nécessite de la part dudéveloppeur une réflexion sur l’accès aux données, la complexité des algorithmes etle réarrangement des boucles pour optimiser les performances. On pourra s’appuyersur le travail présenté sur le produit Matrice-Matrice dans la sous-section 3.3.3.

Page 26: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique
Page 27: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

Chapitre 4

Résolution de systèmes linéaires

par une méthode directe

La résolution de systèmes linéaires apparaît dans un grand nombre d’applica-tions. Leurs caractéristiques varient d’un problème à l’autre si bien qu’il n’existepas de méthodes garantissant le succès de la résolution pour tous les problèmes.Les matrices obtenues peuvent être dense ou creuse (possèdant un grand nombred’éléments nuls), de grande taille, symétrique ou non, définie positive ou non, réelleou complexe. Autant de paramètres qu’il faut prendre en compte pour le choix desalgorithmes de résolution et également pour l’implémentation de ces algorithmes.Dans ce chapitre nous nous intéressons à la résolution de systèmes linéaires dont lamatrice carrée est à coefficients réels et inversible par une méthode de résolution di-recte : la méthode de Gauss. Nous travaillons en algèbre dense, i.e. nous considéronstous les éléments de la matrice. Après avoir présenté les motivations de l’étude desméthodes directes, nous étudions différents aspects global de la résolution d’un sys-tème linéaire tels que la résolution d’un système triangulaire, la triangularisation parla méthode de Gauss, la factorisation. Nous nous intéressons enfin à différents pointsde l’implémentation influençant les performances numériques et informatiques.

4.1 Motivations

Soient A ∈ Rn×n, x, b ∈ R

n×n, A inversible, i.e. det(A) 6= 0. Dans la suite, onsouhaite résoudre le système linéaire suivant :

Ax = b (4.1)

4.1.1 Estimation de l’erreur de résolution

Dans cette section nous présentons l’estimation de l’erreur de résolution d’unsystème linéaire. Nous motivons ensuite le choix d’une méthode directe par rapportà celui d’une méthode de Cramer puis nous présentons la méthode de Gauss. Enfinnous présentons une technique pour améliorer la stabilité numérique de la méthodede Gauss.

On étend ici les notations du chapitre 2 pour les réels aux vecteurs et aux ma-trices. Les notations pour les vecteurs et matrices sont celles présentées au chapitre3. Les notions d’erreur avant et arrière et de conditionnement sont présentées dansle chapitre 2.

Page 28: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

26Chapitre 4. Résolution de systèmes linéaires par une méthode directe

Soit ||.||2 la norme 2 définie par ||x||2 =√xTx et par ||A||2 = maxx 6=0

||Ax||2||x||2 .

On note x la solution approchée du système (4.1). L’erreur avant est définie par

err :=||x− x||||x|| (4.2)

On considère le résidu r ∈ Rn que l’on note r = b−Ax. Il permet de rendre compte

de la précison avec laquelle Ax approche b. Le résidu est dépendant de l’échelle, onétudie donc l’erreur résiduelle relative relres ∈ R :

relres :=||b−Ax||||A||||x|| (4.3)

Un résultat permettant d’illustrer l’importance de l’erreur relative est présenté dans(Higham 2002), dans le lemme suivant :

Lemma 4.1.1 Pour la norme 2, avec ∆A une variation de A :

relres = min

{ ||∆A||2||A||2

: (A+∆A) x = b

}

(4.4)

Proof 4.1.2 Soit le résidu r = b−Ax.

Si (A+∆A)x = b, alors r = ∆x et donc ||r||2 ≤ ||∆A||2||x||2. D’où,

relres =||r||2

||A||2||x||2≤ ||∆A||2

||A||2(4.5)

Et, pour ∆A = rxT

xT xon vérifie (A+∆A)x = b. Dès lors,

||∆Ax||2||x||2 = ||(rxT x)/(xT x)||2

||x||2=

||(r||x||22)/||x||2

2||2

||x||2= ||r||2

||x||2

Or, ||r||2 ≤ ||∆A||2||x||2 d’où par définition de la norme 2 matricielle : ||∆A||2 =||r||2||x||2Donc pour ∆A = rxT

xT xla borne (4.5) est atteinte.

Ce Lemme 4.1.1 énonce que l’erreur résiduelle relative montre à quel pointl’opérateur A doit être perturbé afin que la solution approchée x soit la solutionexacte du système perturbé. Ainsi l’erreur résiduelle relative est une erreur arrière.Si il existe une erreur d’incertitude sur A et b et que l’erreur résiduelle relative relresn’est pas plus grande que cette incertitude, alors la solution approchée peut être vuecomme satisfaisante. Sur ordinateur, l’incertitude sera de l’ordre de O(u) (c.f. Cha-pitre 2). Si relres = O(u) alors la solution peut être considérée comme satisfaisante.

On considère également dans la suite du cours le conditionnement d’une matricequi par définition est noté κ(A) = ||A||2||A−1||2

La règle générale (2.7) s’écrit pour la résolution de système linéaire :

||x− x||||x|| ≤ κ2(A)

||b−Ax||||A||||x|| (4.6)

Page 29: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

4.1. Motivations 27

4.1.2 Gauss ou Cramer ?

L’enseignement de la résolution de systèmes linéaires passe généralement par ladécouverte de la méthode de Gauss, avec la méthode de substitution puis une mé-thode de remontée, ou par la méthode de Cramer. Si nous apprenons cette dernièresur les bancs de l’école pourquoi ne pas l’implémenter ?Avant d’étudier l’implémentation de la méthode de Gauss il est intéressant de mo-tiver notre choix en étudiant les inconvénients de la méthode de Cramer d’un pointde vue de la complexité de la méthode, mais également du point de vue de la stabi-lité numérique. Cette approche pourra ensuite être utilisée pour comparer d’autresalgorithmes entre eux.

4.1.2.1 Complexité de la méthode de Cramer

On peut calculer le déterminant d’une matrice par la formule suivante :

det(A) =

n∑

j=1

(−1)j+1a1,jdet(A[1, j]) (4.7)

où A[i, j] est la matrice d’ordre n− 1 obtenue à partir de la matrice A en éliminantsa ieme ligne et sa jeme colonne.

On définit la matrice Aj comme étant la matrice A pour laquelle la jeme colonneest échangée avec le second membre b. La formule de Cramer est donnée par lethéorème suivant :

Theorem 4.1.3 (Formule de Cramer) Soient A ∈ Rn×n, x, b ∈ R

n×n, A inver-

sible, i.e. det(A) 6= 0 Une unique solution x du système linéaire suivant :

Ax = b

est donnée par

xj =det(Aj)

det(A)(4.8)

Cette méthode est élégante. Elle implique l’implémentation de (4.7). On observeque le calcul du déterminant de A est récursif : il implique le calcul de n déter-minants de matrices de taille (n − 1) × (n − 1) qui chacun nécessite le calcul de(n− 1) déterminants de matrices de taille (n− 2)× (n− 2) etc... Soit n! calculs dedéterminants. Deplus, pour obtenir la solution par la formule de Cramer (4.8) il fautcalculer (n+1) déterminants. Il faut donc effectuer de l’ordre de Cn = (n+1)n! cal-culs de déterminants pour obtenir la solution par la méthode de Cramer. En termede nombre d’opérations la complexité de l’algorithme est en O(n+ 1)2n!.

Les temps de calcul par cet algorithme seront beaucoup trop important.

4.1.2.2 Stabilité

Outre la complexité numérique de l’algorithme il est crucial d’en comprendre leslimites numériques. À la lumière du chapitre 2 sur les nombres à virgule flottante,

Page 30: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

28Chapitre 4. Résolution de systèmes linéaires par une méthode directe

on peut intuitivement imaginer que l’erreur avant sur la solution obtenue pourraêtre importante avec cette méthode. Les résultats de la sous-section 4.1.1 nouspermettent d’analyser la stabilité des méthodes.

Soit à résoudre le système Ax = b de taille 2× 2 avec :

A =

(

9 17.999999999999

1 1.999999999999

)

, et b = 0.99999. ∗A(:, 2)

Le conditionnement de A est κ2(A) ≃ 5.1233 × 1013. Le calcul avec Octave endouble précision donne un résidu relatif de l’orde de 6 × 10−19 pour la méthode deGauss et de l’ordre de 2.14×10−4 pour la règle de Cramer. L’erreur arrière commiseen appliquant la règle de Cramer est donc de 15 ordres plus grande qu’avec Gauss,pour cet exemple.

On peut borner la précision des solutions en applicant la relation (4.6). PourCramer l’erreur avant est bornée par 1.096 × 1010. Alors que pour la méthode deGauss l’erreur est bornée par 3.074 × 10−5. La solution donnée par la méthode deGauss sera donc précise à hauteur de 4 chiffres significatifs. A priori on ne peut sefier au résultat donné par la méthode de Cramer mais dans ce cas précis la théoriemontre que la méthode de Cramer est stable avant (cf. Remarque 6).

Remark 6 [Stabilité avant pour la règle de Cramer, pour n = 2] La borne pour

l’erreur avant ici obtenue pour la résolution par la méthode de Cramer ne permet

pas de conclure. On peut montrer que pour n = 2 la méthode de Cramer est stable

en avant. On se réfèrera à [(Higham 2002), 1.10.1 GEPP Versus Cramer’s Rule, et

Problem 1.9].

Pour ces raisons, la règle de Cramer n’est pas utilisée en calcul scientifique. Oncherche des méthodes moins "coûteuses" et plus stables numériquement.

4.2 Systèmes linéaires à matrice triangulaire

Les méthodes directes reposent sur une réécriture du système linéaire à résoudreen un système plus simple. Les principales méthodes que nous allons étudier parla suite, reposent sur la triangularisation du système, c’est à dire l’écriture d’unematrice triangulaire supérieure ou inférieure. On définit ces matrices de la façonsuivante :

Definition 4.2.1 [Matrice triangulaire supérieure] La matrice U ∈ Rn×n, est tri-

angulaire supérieure si ∀i > j, uij = 0. U est donc de la forme :

U =

X X X X X

X X X X

X X X

X X

X

Page 31: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

4.3. Méthode directe avec élimination de Gauss 29

Definition 4.2.2 (Matrice triangulaire inférieure) La matrice L ∈ Rn×n, est

triangulaire inférieure si ∀i < j, lij = 0. L est donc de la forme :

L =

X

X X

X X X

X X X X

X X X X X

Les algorithmes suivants détaillent les méthodes de résolution d’un système li-néaire dont la matrice est triangulaire. Pour une matrice triangulaire supérieure onappelle cette méthode la méthode de remontée. On notera ce système :

Ux = b (4.9)

Pour une matrice triangulaire inférieure on appelle cette méthode la méthode dedescente. On notera ce système :

Lx = b (4.10)

L et U sont inversibles SSI det(L) 6= 0 et det(U) 6= 0, i.e. ∀i = 1 : n, lii 6= 0, et uii 6=0. Les algorithmes 16 et 17 s’applique donc seulement si ∀i = 1 : n, lii 6= 0, et uii 6=0.

Algorithm 16 Méthode de remontée : résolution de Ux = b (version avec produitscalaire)

Require: U ∈ Rn×n, x, b ∈ R

n

x(n) = b(n)/U(n, n);

for i = n− 1 : −1 : 1

x(i) = (b(i)− U (i, (i+ 1) : n) ∗ x ((i+ 1) : n)) /U(i, i);

end

Algorithm 17 Méthode de descente : résolution de Lx = b (version avec produitscalaire)

Require: L ∈ Rn×n, x, b ∈ R

n

x(1) = b(1)/l(1, 1);

for i = 1 : n

x(i) = (b(i)− L (i, 1 : (i− 1)) ∗ x (1 : (i− 1))) /L(i, i);

end

4.3 Méthode directe avec élimination de Gauss

4.3.1 Élimination de Gauss

La méthode d’élimination de Gauss consiste à simplifier le système linéaire àrésoudre en le transformant en un système avec une matrice triangulaire supérieure.La méthode de Gauss s’applique en deux étapes :

Page 32: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

30Chapitre 4. Résolution de systèmes linéaires par une méthode directe

1. Triangularisation du système tel que

Ax = b ⇔ MAx = Mb

ou MA est une matrice triangulaire supérieure.

2. Résolution de MAx = Mb par "remontée".

On propose une écriture matricielle de cet algorithme et plus particulièrementde la phase 1 de triangularisation.Triangulariser consiste à mettre à zéro tous les éléments sous la diagonale de A. Onva pour cela éliminer les éléments sous la diagonale, colonne par colonne. On note k

l’indice de la colonne dont on élimine les éléments sous la diagonale. On considèrela matrice A(k), la matrice à l’étape k pour laquelle on élimine les éléments sousla diagonale pour la colonne k. On note Mk la matice d’élimination à l’étape k.A chaque étape on choisit un pivot pour effectuer l’élimination. Pour le momenton utilise aucune stratégie de pivotage et on choisit comme pivot dk, le premierélément de la diagonale a

(k)kk .

• Initialisation : A(1) := A et b(1) := b et pivot d1 = a(1)11

• Pour k = 1, d1 = a(1)11

A(2) = M1A(1)

=

1

−m21 1

−m31 1...

. . .

−mn1 1

A(1), où m(k+1):n,1 = A(1)(2 : n, 1)/d1

=

a(1)11 a

(1)12 . . . a

(1)1n

0 a(2)22 . . . a

(2)2n

......

0 a(2)n2 . . . a

(2)nn

et,

b(2) = M1b(1)

Page 33: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

4.3. Méthode directe avec élimination de Gauss 31

• Pour 1 < k < n− 1, dk = a(k)kk

A(k+1) = MkA(k)

=

1. . .

1

−m(k+1)k 1...

. . .

−mnk 1

A(k), où m(k+1):n,1 = A(1)((k + 1) : n, k)/dk

=

a(k)11 a

(k)12 . . . . . . . . . . . . . . . . . . a

(k)1n

0 a(k)22 a

(k)23 . . . . . . . . . . . . . . . a

(k)2n

0 0. . .

...... a

(k)kk a

(k)(k(k+1) . . . . . . . . . a

(k)kn

...... 0 a

(k+1)(k+1)k . . . . . . . . . a

(k+1)(k+1)n

......

......

...

0 0 0 a(k+1)nk . . . . . . . . . a

(k+1)nn

et,

b(k+1) = Mkb(k)

• Pour k = n− 1, on obtient A(n) triangulaire supérieure telle que :

A(n) = Mn−1A(n−1) = MA

et,

b(n) = Mb

Avec,

M = Mn−1Mn−2 . . .M1

=

1

−m21 1... −m32 1...

.... . .

−mn1 −mn2 . . . −mn(n−1) 1

(4.11)

L’algorithme 18 implémente sous la forme scalaire la méthode de Gauss sanspivotage présentée ci-dessus. Il est important de noter que la partie inférieure de An’est pas mise à zéro. D’un point de vue informatique, cela ne pose pas de problèmeétant donné que l’algorithme 16 n’effectue que des accès à la partie supérieure de lamatrice.

Page 34: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

32Chapitre 4. Résolution de systèmes linéaires par une méthode directe

Algorithm 18 Méthode de résolution de Gauss sans pivotage : résolution de Ax = b

(version scalaire à 3 boucles "kij")

Require: A ∈ Rn×n, x, b ∈ R

n

for k = 1 : n− 1

for i = k + 1 : n

mik = A(i, k)/A(k, k);

b(i) = b(i)−mik ∗ b(k);for j = k + 1 : n

A(i, j) = A(i, j) −mik ∗ A(k, j);end

end

end

Résoudre le nouveau système Ax = b par remontée (Algorithme 16).

4.3.2 Factorisation LU

Dans la sous-section 4.3.1 nous avons obtenu une matrice triangulaire supérieureMA par le produit à gauche d’une matrice triangulaire inférieure M avec A.

Posons U = MA. Montrons que l’on peut écrire A comme le produit de deuxmatrices triangulaires L et U telle que A = LU .En considérant l’écriture de M donnée par l’équation (4.12) on a M inversible, d’où :

U = MA ⇔ M−1U = A

et M−1 = M−11 M−1

2 . . .M−1n−2M

−1n−1

Pour inverser les matrices Mk il suffit de changer le signe des −mik. On obtientalors

M−1 =

1

m21 1... m32 1...

.... . .

mn1 mn2 . . . mn(n−1) 1

(4.12)

On a donc bien une matrice triangulaire M−1 et on pose L = M−1.La méthode de Gauss donne donc une factorisation LU de la matrice.

Une fois la factorisation obtenue, on peut résoudre le système linéaire en résolvantun système triangulaire inférieur puis supérieur. Résoudre

Ax = b ⇔ LUx = b

, revient à résoudre le système suivant :{

Ly = b

Ux = y(4.13)

Page 35: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

4.4. Du choix du pivot 33

Une fois la factorisation obtenue on peut donc utiliser cette forme factorisée deA pour résoudre des problèmes avec d’autres second membres.

Afin d’économiser l’espace mémoire on écrira en informatique une forme com-pressée de la factorisation LU dans le tableau A :

A = LU :=

u11 . . . . . . . . . u1nl21 u22 . . . . . . u2n

l31 l32. . . . . . . . .

......

. . . . . . u(n−1)n

ln1 ln2 . . . ln(n−1) unn

(4.14)

On peut alors écrire l’algorithme 19 qui écrase A par sa factorisation LU .

Algorithm 19 Élimination de Gauss et écriture compacte de LU (version scalaireà 3 boucles "kij")

Require: A ∈ Rn×n, x, b ∈ R

n

for k = 1 : n− 1

for i = k + 1 : n

A(i, k) = A(i, k)/A(k, k);

end

for i = k + 1 : n

for j = k + 1 : n

A(i, j) = A(i, j) −A(i, k) ∗A(k, j);end

end

end

4.4 Du choix du pivot

Les méthodes présentées précédemment ont été écrites sans pivotage. Nous étu-dions dans cette section la stabilité numérique de la méthode d’élimination de Gausssans pivotage puis nous proposons une technique de pivotage.

4.4.1 Analyse de la méthode d’élimination de Gauss sans pivot

Soit à résoudre le système linéaire (4.1) par l’algorithme 18. Deux situationscritiques peuvent apparaître :

1. si dk = a(k)kk = 0 alors l’opération d’élimination n’est pas définie (division par

zéro).

2. si dk = a(k)kk = ε << 1

Page 36: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

34Chapitre 4. Résolution de systèmes linéaires par une méthode directe

Le cas 2 peut être illustré sur un cas très simple. Prenons

A =

(

ε −1

1 1

)

avec 0 < ε << 1. Le problème est bien conditionné, on a κ∞(A) = 4/(1+ε). On peutperdre de la précision sur les chiffres significatifs de bas ordres. En effet, pour k = 1,dk = ε d’où a

(2)22 = 1−ε−1 et donc fl(a(2)22 ) = ε. Si ε < u alors la valeur de a(2)22 est 0.0.

Pour la factorisation LU on peut écrire :

A =

(

ε −1

1 1

)

=

(

1 0

l21 1

)(

u11 u120 u22

)

=

(

1 0

ε−1 1

)(

ε −1

0 ε−1

)

(4.15)

D’où,

A− LU =

(

0 0

0 1

)

(4.16)

Le problème est dans le choix du pivot et non dans le conditionnement de A.

4.4.2 Pivot partiel

Pour palier à ce problème une technique consiste à prendre pour pivot le plusgrand élément de la colonne en valeur absolue. C’est-à-dire, à l’étape k on échangela ligne k avec la ligne r tel que :

|a(k)rk | = maxk≤i≤(a(k)ik (4.17)

Ceci assure que|mik| ≤ 1, pour i = k + 1 : n (4.18)

Cette méthode dite du pivot partiel à une complexité en O(n2).

On pourrait, pour assurer une plus grande stabilité, échanger à l’étape k leslignes r et les colonnes s de A tel que :

|a(k)rs | = maxk≤i≤n,k≤j≤n(a(k)ij ) (4.19)

Cette méthode dite du pivot complet à une complexité en O(n3).

Dans la pratique, le pivot partiel assure une stabilité numérique suffisante. Onpréfèrera donc la méthode du pivot partiel moins coûteuse. D’autre méthode existecomme le rook pivoting mais ne font pas l’objet de ce cours.

Page 37: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

4.5. Implémentation 35

Algorithm 20 Pivot Partiel

Require: A ∈ Rn×n à l’étape k de l’élimination de Gauss, le vecteur ligne p ∈ R

1×n

vecteur des permutations et row ∈ R1×n

1: row = [1 : n]; liste des indices de lignes.2: [piv, r] = max(abs(A(k : n, k)));

3: r = k − 1 + r; indice global de la ligne à échanger.4: q(1, k) = row(1, ind); liste des indices de lignes permutées.5: if r 6= k then

6: new = A(r, :); stockage temporaire de la ligne à échanger7: A(r, :) = A(k, :);, échange8: row(1, r) = row(1, k); et row(1, k) = q(1, k);, mise à jour des indices de ligne

de la matrice.9: end

L’algorithme 20 présente la manière avec laquelle on permute les lignes de lamatrice. Il est appelé à chaque sélection de pivot pour l’élimination.

On écrit généralement la matrice des permutations, P ∈ Rn×n après les k étapes

d’élimination.Lorsque l’on calcule une factorisation LU avec pivot partiel on obtient :

PA = LU

Cela revient à résoudre le système :

Ax = b ⇔ LUx = Pb

Remark 7 En langage MATLAB et avec les notations de l’algorithme 20

P = speye(n)(row, :);

4.5 Implémentation

Soit l’algorithme de l’élimination de Gauss 19. Cet algorithme est écrit sousla forme "kij". En effectuent le même travail que pour le produit Matrice-Matriceprésentée à la section 3.3.3 on peut écrire 6 versions de l’élimination de Gauss("ijk","jik", "ikj", "jki", "kij", "jki").

Nous pouvons par exemple écrire la version produit scalaire version ijk selonl’algorithme 21 . La boucle interne k est un produit scalaire.

Tous ces algorithmes d’éliminations on une complexité arithmétique de 2n3/3 flops(floatting points operation per second).Afin d’optimiser les temps de calcul on cherchera a éviter l’utilisation des bouclesau profit d’opérations de niveau 1, 2 ou 3. On peut s’appuyer sur le travail effectuédans le chapitre 3 pour réécrire les algorithmes avec une ou deux boucles.

Page 38: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

36Chapitre 4. Résolution de systèmes linéaires par une méthode directe

Algorithm 21 Elimination de Gauss et écriture compacte de LU, 3 boucles "ijk",avec produit scalaire dans la boucle interne

Require: A ∈ Rn×n, x, b ∈ R

n

for i = 1 : n

for j = 2 : i

A(i, j − 1) = A(i, j − 1)/A(j − 1, j − 1);

for k = 1 : j − 1

A(i, j) = A(i, j) −A(i, k)/A(k, k); ∗A(k, j);end

end

for j = i+ 1 : n

for k = 1 : i− 1

A(i, j) = A(i, j) −A(i, k)/A(k, k); ∗A(k, j);end

end

end

Basée sur la bibliothèque BLAS, la bibliothèque LAPACK implémente les méthodesdirectes de résolution de systèmes linéaires. La routine effectuant la factorisationLU est dgetrf et la routine pour la résolution est dgetrs. Dans MATLAB ou Octave,l’opérateur "\" est surchargé par ces deux méthodes. On résoud le système avecl’opération x = A\b.Selon le type de matrice ou leur structure d’autres algorithmes plus performantspeuvent être implémentés. Ils peuvent par exemple tirer profit de la symétrie de A,de sa structure creuse etc... Des pistes d’optimisation sont proposées au chapitre 5.

Page 39: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

Chapitre 5

Vers l’optimisation d’algorithmes

numériques

Les techniques présentées aux chapitres 4 reposent sur l’unique hypothèse queA ∈ R

n×n soit inversible. Dans ce chapitre nous allons présenter de manière brèvequelques pistes d’optimisation en fonction de certaines propriétés de l’opérateur A.

5.1 Matrices symétriques définies positives

Dans cette section nous présentons un algorithme pour les matrices symétriquesdéfinies positives dont la complexité est deux fois moins grande que celle de LU .

Une matrice A ∈ Rn×n est symétrique si AT = A.

Une matrice symétrique est définie positive si ∀x ∈ Rn, x 6= 0n, on a xTAx.Les 3 propositions suivantes sont équivalentes :

• A = AT est définie positive si ∀x ∈ Rn, x 6= 0n, on a xTAx.

• A = AT est définie positive si det(A(1 : k, 1 : k)) > 0 pour k = 1 : n.• A = AT est définie positive si les valeurs propres de A sont telles que λk(A) >

0 pour k = 1 : n avec λk la k-ième plus grande valeur propre.Il suit de ces propositions qu’il existe une unique factorisation LU de A. Et les

pivots de la factorisation sont tous positifs. En factorisant la diagonale de U et enprenant sa racine carrée on peut convertir la factorisation LU en une factorisationde Cholesky A=RRT , avec R une matrice triangulaire supérieure dont les élémentsdiagonaux sont positifs.

L’algorithme 22 propose une implémentation avec l’arrangement de boucle "jik".

La complexité arithmétique de la factorisation de Cholesky est de n3/3 flops,soit deux fois moins que la factorisation LU .

Remark 8 (Implémentation A = LDLT ) Dans la littérature et les bibliothèque on

peut trouver la factorisation de Cholesky sous la forme

A = LDLT

avec D = diag(r2ii) et L = RTdiag(rii)−1. Dans cette forme on évite le calcul des

racines carrées et pour les matrices tridiagonales elles nécessite n divisons en moins

pendant la substitution. Voir (Higham 2002).

Page 40: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

38 Chapitre 5. Vers l’optimisation d’algorithmes numériques

Algorithm 22 Factorisation de Cholesky A = RRT , version "jik"

Require: A ∈ Rn×n, x, b ∈ R

n

for j = 1 : n

for i = 1 : j − 1

R(i, j) = A(i, j) −R(1 : (i− 1), i)TR(1 : (i− 1), j);

R(i, j) = R(i, j)/R(i, i);

end

R(j, j) = A(j, j) −R(:, j)TR(:, j);

R(j, j) =√

R(j, j)

end

5.2 Matrices creuses

Les matrices issues de la discrétisation d’équations aux dérivées partielles (EDP)ont un grand nombre d’éléments nuls. Afin de réduire le coût de stockage en mémoiremais aussi d’éviter les opérations inutiles comme la multiplication ou l’addition avecun nombre nul, on stocke en mémoire seulement les éléments nons nuls. Le nombred’éléments non-nuls est noté nnz << n2.Au stockage creux, on associe un algorithme permettant d’accéder aux éléments dela matrice.On citera parmis les méthodes de stockage de matrice creuse :

• CSR, Compressed Sparse Row - On stocke les éléments non-nuls de la matricedans un tableau de double de taille nnz : les éléments non-nuls de la premièreligne sont stockés, puis ceux de la seconde, etc... Pour accéder aux élémentson ajoute deux tableaux d’entiers l’un de taille nnz contenant le numéro decolonne des éléments, l’autre de taille n + 1 contenant les pointeurs sur leslignes.

• CSC, Compressed Sparse Column - On stocke les éléments non-nuls de lamatrice dans un tableau de double de taille nnz : les éléments non-nuls dela première colonne sont stockés, puis ceux de la seconde, etc... Pour accéderaux éléments on ajoute deux tableaux d’entiers l’un de taille nnz contenantle numéro de ligne des éléments, l’autre de taille n+1 contenant les pointeurssur les colonnes.

• COO, Coordinate storage : On stocke les éléments non-nuls de la matricedans un tableau de double de taille nnz Pour accéder aux éléments on ajoutedeux tableaux d’entiers de taille nnz contenant les indices i et j associés àl’élément (i, j).

Il existe d’autres formats de stockage. Par exemple le stockage par bande, dis-ponible dans BLAS que l’on présente dans la sous-section 5.2.1.L’occupation mémoire peut quand même être importante et changer au cours del’exécution d’un algorithme. Ceci est discuté dans la sous-section 5.2.2.

Page 41: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

5.2. Matrices creuses 39

5.2.1 Stockage General Band

Les matrices bandes englobent un grand nombre de matrices issues de la discré-tisation des EDPs. Les bibliothèques BLAS et LAPACK fournissent une implémen-tation pour les matrices stockée par bande [(netlib 19YY),(Anderson et al. 1999)].L’implémentation pour les matrices bandes est noté GB pour general band, tandisque pour les matrices denses on note GE pour general.

Une matrice de dimension m × n avec kl sous-diagonales et ku sur-diagonalespeut être stockée de manière compacte dans un tableau à deux dimensions aveckl + ku + 1 lignes et n colonnes. Les colonnes de la matrice sont stockées dans lescolonnes correspondantes du tableau, et les diagonales de la matrice sont stockéesdans les lignes du tableau. Ce stockage ne doit être utilisé que si kl, ku ≪ min(m,n).Dans LAPACK les matrices ayant un stockage de ce type ont un nom se teminantpar B. Il suit que l’élément aij de la matrice A est stockée dans AB(ku+1+i−j, j).Par exemple, pour m = 5, n = 5, kl = 2, ku = 1 : Soit,

A =

a11 a12a21 a22 a23a31 a32 a33 a34

a42 a43 a44 a45a53 a54 a55

.

son stockage GB dans le tableau AB est tel que :

AB =

∗ a12 a23 a34 a45a11 a22 a33 a44 a55a21 a32 a43 a54 ∗a31 a42 a53 ∗ ∗

.

Les éléments doivent ∗ être affectés. On choisira par exemple 0.

Ce format de stockage permet de stocker les éléments dans une certaine largeurde bande y compris les éléments nuls. BLAS et LAPACK ne sont pas dans leurvesion d’origine, des bibliothèque pour l’algèbre creuse.Avec MATLAB ou Octave on peut stoker des matrices au format Diagonal Creux.Seules les diagonales non-nulles sont stockées. La routine correspondante est spdiags.

Remark 9 (Stockage creux dans Octave) Outre spdiags, on utilisera la fonction

sparse qui permet de convertir une matrice au format CSC. En mémoire il cor-

respond à un tableau de double de taille nnz, un tableau d’entier de taille nnz et un

tableau d’entier de taille n+ 1.

Page 42: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

40 Chapitre 5. Vers l’optimisation d’algorithmes numériques

5.2.2 Largeur de bande

Dans le cas des matrices creuses, la méthode d’élimination de Gauss nécessitele stockage en mémoire de tous les éléments compris dans la bande la plus large.Afin de réduire l’occupation mémoire on réordonne la matrice afin de rapprocherles éléments le plus possible de la diagonale principale.

On utilise par exemple la méthode Reverse Cuthill-McKee (RCM) implémentéedans Octave sous la fonction symrcm.

Afin d’illustrer notre propos, nous étudions le cas de la matrice de test poisson2Dde la toolbox FEMLAB pour la résolution des EDPs par la méthode des élémentsfinis. Cette matrice est disponible dans la collection de matrice Creuse de Tim Davis(Davis & Hu 20YY) sous le nom de poisson2D dans le groupe FEMLAB. Pour ce casA ∈ R

n×n, n = 367, nnz = 2417. On effectue une factorisation LU avec pivot partielsur la matrice A et sur la matrice A(p, p) ou p est un vecteur des permutations dela réduction RCM, p = symrcm(A).Le tableau 5.1 montre que la forme compressée de la factorisation LU occupe environ12× l’espace mémoire de A tandis que pour la matrice réduite par RCM il faut 5×l’espace mémoire de A. Les figures 5.1 et 5.2 montrent le remplissage des bandes parrapport au profil de la matrice.

matrice nnz M.O. ratio(taille/ taille de A)

A 2417 30.476

lu(A) 30531 372.248 12.2lu(A(p,p)) 13042 162.380 5.3

Table 5.1 – Influence de la largeur de Bande sur le stockage pour la matrice A, safactorisation LU compressée et celle de A ordonnée selon les permutations p donnéepar RCM.

5.3 Matrices tridiagonales

Cette section se présente sous la forme d’un exercice proposant une solutionpour répondre au problème du chapitre 1 sur l’équation de la chaleur 1D. Le but estde montrer qu’il peut être intéressant d’étudier différents aspects du problème icila forme tridiagonale peut impacter l’algorithme de factorisation LU et le stockagepeut être de différentes sorte, pour proposer une méthode de résolution efficace.

Page 43: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

5.3. Matrices tridiagonales 41

Figure 5.1 – Profils de la matrice A de FEMLAB/poisson2D (haut) et de sa fac-torisation LU (bas).

Page 44: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

42 Chapitre 5. Vers l’optimisation d’algorithmes numériques

Figure 5.2 – Profils de la matrice A de FEMLAB/poisson2D réordonner par RCM(haut) et de sa factorisation LU (bas).

Page 45: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

5.3. Matrices tridiagonales 43

5.3.1 Cas de test pour la résolution d’un système tridiagonal

On considère l’équation de la chaleur dans un milieu immobile linéaire homogèneavec terme source et isotrope :

−k ∂2T∂x2 = g, x ∈ ]0, 1[

T (0) = T0

T (1) = T1

(5.1)

Où g est un terme source, k > 0 le coefficient de conductivité thermique, et T0 < T1

les températures au bord du domaine considéré.On se propose de résoudre cette équation par une méthode de différence finie

centrée d’ordre 2. On discrétise le domaine 1D selon n+2 noeuds xi, i = 0, 1, 2, ...n+

1, espacés d’un pas h constant.En chaque noeud l’équation discrète s’écrit :

− k

(

∂2T

∂x2

)

i

= gi (5.2)

1. Approximez la dérivée seconde de T au moyen d’un schéma centré d’ordre 2.

2. Écrivez le système linéaire de dimension n correspondant au problème 5.1.

Pour la suite de l’exercice on notera ce système :

Au = f, A ∈ Rn×n, u, f ∈ R

n (5.3)

On considère qu’il n’y a pas de source de chaleur, i.e. g = 0. La solution analy-tique de cette équation est :

T (x) = T0 + x(T1 − T0) (5.4)

5.3.2 Résolution d’un système tridiagonal

Appliquez la méthode de Gauss à la matrice tridiagonale suivante :

A =

a1 c1 0 · · · 0

b1 a2 c2 · · · 0

0. . . . . . . . . 0

... 0 bn−2 an−1 cn−1

0 0 0 bn−1 an

.

et montrez que, sans pivot, cette méthode réduit la matrice A à sa décompositionLU :

Page 46: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

44 Chapitre 5. Vers l’optimisation d’algorithmes numériques

A = LU =

1 0 · · · 0 0

e1 1. . .

......

. . . . . . 0...

0 0. . . 1 0

0 0 0 en−1 1

d1 c1 · · · 0 0

0 d2. . . 0 0

.... . . . . . . . . 0

.... . . dn−1 cn−1

0 . . . . . . 0 dn

.

où les ei et dj (pour 2 ≦ i ≦ n et 1 ≦ i ≦ n− 1) sont facilement calculables.

1. Écrivez, analysez et implémentez l’algorithme de cette décomposition LU.On considère la matrice convertie au format creux CSC de Octave avec lafonction sparse.

2. Ecrivez la fonction qui permet de calculer la solution u du système linéaire àpartir de cette factorisation.

3. Validez votre implémentation sur le problème de l’équation de la chaleur 1D.

4. Calculez l’erreur par rapport à la solution analytique.

5. Comparez votre méthode de résolution en terme de temps d’exécution, d’oc-cupation mémoire et de précision numérique.

Page 47: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

Bibliographie

[Anderson et al. 1999] E. Anderson, Z. Bai, C. Bischof, S. Blackford, J. Demmel,J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. McKenney andD. Sorensen. LAPACK users’ guide. Society for Industrial and AppliedMathematics, Philadelphia, PA, third édition, 1999. (Cited on page 39.)

[Davis & Hu 20YY] T. A. Davis and Y. Hu. The University of Florida Sparse Matrix

Collection. ACM Transactions on Mathematical Software (to appear), 20YY.http ://www.cise.ufl.edu/research/sparse/matrices. (Cited on page 40.)

[Eaton et al. 2009] John W. Eaton, David Bateman and Soren Hauberg. GNU Oc-tave version 3.0.1 manual : a high-level interactive language for numericalcomputations. CreateSpace Independent Publishing Platform, 2009. ISBN1441413006. (Cited on page 13.)

[Golub & Van Loan 1996] Gene H. Golub and Charles F. Van Loan. Matrix com-putations (3rd ed.). Johns Hopkins University Press, Baltimore, MD, USA,1996. (Cited on page 13.)

[Higham 2002] N. J. Higham. Accuracy and stability of numerical algorithms. So-ciety for Industrial and Applied Mathematics, Philadelphia, PA, second édi-tion, 2002. (Cited on pages 9, 10, 11, 26, 28 and 37.)

[netlib 19YY] netlib, 19YY. http ://www.netlib.org/blas/. (Cited on pages 13and 39.)

[Octave community 2014] Octave community. GNU Octave 3.8.1, 2014.www.gnu.org/software/octave/. (Cited on page 13.)

[Saad 2003] Y. Saad. Iterative methods for sparse linear systems. Society for In-dustrial and Applied Mathematics, Philadelphia, PA, second édition, 2003.(Not cited.)

[Wilkinson 1963] J. H. Wilkinson. Rounding errors in algebraic processes. PrenticeHall, INC, Englewood Cliffs, NJ, 1963. (Cited on page 9.)

Page 48: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique
Page 49: Calcul Numérique - e-campus2.uvsq.fre-campus2.uvsq.fr/Members/thomdufa/Fichiers/calcul-numerique-isn.pdf · 4 Chapitre 1. Introduction 1.2 Le calcul numérique et la simulation numérique

Calcul Numérique.

Résumé : Ce cours dispensé dans le cadre de la formation FSI-ISN de l’Universitéde Versailles St-Quentin-en-Yvelines présente les bases nécessaires à l’implémenta-tion d’algorithmes numériques utilisés lors de la simulation numérique de différentsphénomènes issus de la physique ou d’autres domaines d’application. Dans unpremier temps, les limites de la manipulations des nombres réels avec une machinede calcul sont présentées. Les opérations de base de l’algèbre linéaire dense et leurimplémentation sont étudiées. Notamment, les différentes manières d’écrire lesalgorithmes et d’organiser les boucles. Ensuite l’implémentation d’une méthode derésolution directe pour les systèmes linéaires est étudiée au regard des contraintes ducalcul en précision finie et de l’algorithmique en algèbre. Enfin, le cours propose despistes quant à l’optimisation de l’implémentation de ce type d’algorithme en prenanten compte les propriétés des opérateurs tant mathématiques que structurelles.