• Aucun résultat trouvé

Algèbre linéaire Applications à la modélisation des données

N/A
N/A
Protected

Academic year: 2022

Partager "Algèbre linéaire Applications à la modélisation des données"

Copied!
10
0
0

Texte intégral

(1)

Algèbre linéaire

Applications à la modélisation des données

MNCS – Jean Hare, Noé Lahaye

Université Pierre et Marie CURIE

Méthodes numériques pour le calcul scientifique

25 février 2015

-1.0 -0.5 0.0 0.5 1.0

-1.0 -0.5 0.0 0.5 1.0

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 1 / 40

Sommaire

1 Introduction

2 Notions fondamentales

3 Représentation et informatique des matrices

4 Classification des matrices

5 Produit et autres manipulations Produit matriciel

Opération sur les lignes ou les colonnes

6 Solution des systèmes linéaires et inversion des matrices Généralités sur l’inversion

La méthode de Gauss

Exemple de la méthode de Gauss-Jordan Méthodes itératives

Principe

Méthode de Jacobi Méthode de Gauss-Seidel 7 Diagonalisation des matrices

Généralités sur la diagonalisation L’algorithme de Jacobi

8 Bibliothèques de calcul scientifique Présentation générale

Usage deBlas Conclusion

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 2 / 40

Introduction

Algèbre linéaire

Applications très diverses (physique linéaire ou quasi-linéaire) Optimisation, modélisation(2ndcours)

EDP linéaires(Thème 5)

Indispensable aussi pour certains calculsnon-linéaires Problèmes spécifiques :

très gros volumes de données (ressources en N2) matrices creuses, matrices bandes

multiplication : enN3

précision après un très grand nombre d’opérations tableaux 2-D en C

Solutions spécifiques :

Procédures fortement optimisées (Blas) Bibliothèquesdiverses (Lapack)

Vectorisation, calcul parallèle (non abordé ici)

Lapack et Blassont intégrés dans SciLab/MatLab, Maple, Octave etc

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 3 / 40

Notions fondamentales

Matrices rectangulaires

Ici A est une matrice àM lignes etN colonnes, ou de profil (M,N) (en anglais,shape).

A=

a11 a12 · a1j · · ·a1N ... ... ... ... ... ai1 ai2 · aij · · ·aiN

... ... ... ... ... aM1 aM2 · aMj · · ·aMN

Nota important :Par convention, en mathématiques, ipremier indiceindice de ligne, de 1 à M jdeuxième indiceindice de colonne, de 1 à N Une matrice carrée est un cas particulier N =M.

Un vecteur colonne correspond àN = 1, un vecteur ligne à M = 1.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 4 / 40

(2)

Représentation et informatique des matrices

Stockage des matrices

En Fortran : Vrais Tableaux 2-D,A(i,j),

indexés par défaut de 1àNet de1à Mcomme les matrices

statiques, déclarés avec leurs dimensions :real(kind=...)::a(3,5) dynamiques, alloués avecallocate :

real(kind=.),allocatable::a(:,:); m=3; n=5; allocate(a(m,n)) automatiques (moins utiles qu’en C).

En C :Tableaux de tableaux (pseudo 2-D) : A[i][j], indexés de0à M-1et 0àN-1,pas comme les matrices.

déclarés avec leurs dimensions : float A[3][5];

alloués dynamiquement aveccalloc(ou malloc)

(eg via la bibliothèque mnitab:float ** A; A=float2d(3,5)) automatiques grâce à une déclaration tardiveen C99 :

M=3; N=5; float A[M][N];

Laportée des tableaux automatiques est toujours limitée à la procédure.

NB:Pour utiliser des tableaux automatiques, réserver suffisamment de place sur la pile (stack) avec :Linux:ulimit -s 524288(en kbytes).

Win32/64 :MNCS — Noé Lahaye (UPMC)-Wl,--stack,536870912(en bytes) lors de l’édition de lien.Algèbre linéaire 25 février 2015 5 / 40

Représentation et informatique des matrices

Ordre des éléments

En Fortran

Les éléments de la même colonne(second indice) sont contigus : a11 a21 · · · aM1

| {z }

colonne1

a12 a22 · · · aM2

| {z }

colonne 2

· · · a1N a2N · · · aMN

| {z }

colonneN

On dit que l’indice deligne (premier indice) estl’indice rapide, ou que le stockage est en « Column Major ».

En C

Les éléments de la même ligne(premier indice) sont contigus : a11 a12 · · · a1N

| {z }

ligne1

a21 a22 · · · a2N

| {z }

ligne 2

· · · aM1 aM2 · · · aMN

| {z }

ligneM

On dit que l’indice decolonne(second indice) est l’indice rapide, ou que le stockage est en « Row Major ».

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 6 / 40

Représentation et informatique des matrices

Matrice aplatie

Dans les deux langages, on peut aussi utiliser untableau 1-D Appour représenter la matriceA(M,N) « aplatie ». C’est en particulier nécessaire pour l’usage de Blas et deLapack en langage C:

En Fortran, pour accéder àaij, remplacerA(i,j) par Ap(i+M*(j-1))car ColMajor ;

avancer de Mcases (le nombre de lignes) quand on incrémente j En C, pour accéder àaij remplacerA[i-1][j-1]par

Ap[(i-1)+M*(j-1)]en ColMajor, ou Ap[N*(i-1)+(j-1)]en RowMajor.

⇒ Écrire une fonction qui calcule l’indice kdans le tableau aplati de l’élément d’indices ietjdans la représentation 2D.

Classification des matrices

Matrices particulières

Réelle symétrique : matrice qui coïncide avec sa transposéetA=A soit A(i,j)==A(j,i);

Hermitienne matrice complexe qui coïncide avec son adjointe (auto-adjointe) A=A= conj(tA), soitA(i,j)==CONJG(A(j,i));

Diagonale matrice dont les éléments non-diagonaux sont nuls Cas particulier : matricescalaireA=λ11;

Diagonale par bande seuls ses éléments tels que|ij|6p(pN) sont non-nuls Cas particulier : matricetridiagonalepourp= 1;

Triangulaire supérieure/inférieure tous les éléments au-dessous de la diagonale (i>j) /au-dessus de la diagonale (i<j) sont nuls ;

Hessenberg tous les éléments en dessous (au dessus) de la première sous-diagonale (sur-diagonale) sont nuls ;

Orthogonale Matrice réelle vérifianttA=A−1; Unitaire Matrice complexe vérifiant A=A−1;

(Symétrique) définie positive Matrice dont les valeurs propres sont strictement positives ; Creuse Matrice contenant beaucoup de zéros...

(3)

Produit et autres manipulations Produit matriciel

Produit lignes par colonnes

Définition :Composition des applications linéaires : si A est une matrice de profil (M,N) et B est une matrice de profil (N,P), leur produit est une matrice de profil (M,P).

C=A.B ⇐⇒ (C)ij = (A.B)ij =PNk=1AikBkj

L’élément Cij est leproduit scalaire de la lignei de la matrice A avec la colonne j de la matrice B, d’où le nom.

Cas particulier P= 1 : action de A sur le vecteur-colonne B,

ou M = 1 : action (à gauche) de la matrice B sur le vecteur-ligne A.

En Fortran : On utilise la fonction standard : C = MATMUL (A, B).

En C : Cette fonction doit être implémentée avec des boucles.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 9 / 40

Produit et autres manipulations Produit matriciel

Multiplication matricielle

a11 . . . a1k . . . a1N

... . .. ... ... ...

ai1 . . . aik . . . aiN

... ... ... . .. ...

aM1 . . . aM k . . . aM N

A:MlignesNcolonnes

b11 . . . b1j . . . b1P

... . .. ... ... ...

bk1 . . . bkj . . . bkP

... ... ... . .. ...

bN1 . . . bN j . . . bN P

B:NlignesPcolonnes

c11 . . . c1j . . . c1P

... . .. ... ... ...

ci1 . . . cij . . . ciP

... ... ... . .. ...

cM1 . . . cM k . . . cM P

C=A×B:MlignesPcolonnes ai1×b1j

aik×bkj

aiN×bNj + .. .+

+ .. .+

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 10 / 40

Produit et autres manipulations Produit matriciel

Produit matriciel en C

On utilise troisboucles imbriquées, les indices extérieurs étant les indices libresi etj, la boucle interne formant la somme surk.

Par exemple, pour des matrices aplaties enRowMajoron peut écrire :

v o i d m a t m u l _ n a i v e (int M , int N , int P , // R o w M a j o r f l o a t A [ M * N ] , f l o a t B [ N * P ] , f l o a t C [ M * P ]) { int i , j , k ;

f l o a t t m p i k ;

for ( i =0; i < M ; ++ i ) { for ( j =0; j < P ; ++ j ) {

t m p i j = 0.0 f ;

for ( k =0; k < N ; ++ k ) t m p i j += A [ i * N + k ] * B [ k * P + j ];

C [ i * P + j ] = t m p i j ; }

} }

Ces trois boucles imbriquées impliquent un nombreM ×N ×PN3 de multiplications, avec autantd’accès non-contigus dans les tableaux.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 11 / 40

Produit et autres manipulations Produit matriciel

Autres manipulations

LeFortranfournit encore de nombreuses fonctions de manipulation de matrices : PRODUCT, SUM, TRANSPOSE, RESHAPE, DOT_PRODUCT...

EnC toutes ces fonctions doivent être codées à l’aide de boucles imbriquées.

Pour une meilleure efficacité (vitesse d’exécution), surtout lorsqu’on doit traiter des matrices de taille importante, il devient essentiel d’utiliser des codes soigneusement optimisés. C’est, pour les deux langages, le principal intérêt des bibliothèques mathématiques, et nous présenterons dans la suite de ce cours l’utilisation d’une de ces bibliothèques, le couple Blas/Lapack.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 12 / 40

(4)

Produit et autres manipulations Opération sur les lignes ou les colonnes

Matrices opérant sur des matrices

Pour réaliser les inversions, diagonalisations et factorisations, on modifie de façon graduelle une matrice, par exemple en permutant des lignes et/ou des colonnes, en effectuant des combinaisons linéaires (CL) des lignes et/ou colonnes, etc.

Ces manipulations sont des multiplicationspar des matrices creuses.

On notera le résultat qui peut sembler contre-intuitif : La multiplication à gauche opère sur les lignes :

les nouvelles lignes sont des CL des anciennes avec des poids définis par la ligne considérée de la matrice de gauche ;

La multiplication à droite opère sur les colonnes :

les nouvelles colonnes sont des CL des anciennes avec des poids définis par la colonne considérée de la matrice de droite ;

Ces règles sont utiles pour décrire les opérations mathématiques, et pour éviter de faire un produit complet (en N3) lorsque la matrice « opérante » est creuse, comme c’est le cas de l’inversion par la méthode de Gauss, ou de la diagonalisation par l’algorithme de Jacobi (cf infra).

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 13 / 40

Solution des systèmes linéaires et inversion des matrices Généralités sur l’inversion

Inversion : position du problème

Définition :L’inverse d’une matrice carréeA de profil (N,N)est une matrice A−1 de même dimension telle que A.A−1 =A−1.A=11.

C’est un problème important notamment car il permet de résoudre les systèmes linéaires deN équations à N inconnues. Il permet aussi de déterminer le déterminant d’une matrice.

Le problème posé peut sembler plus ardu que la multiplication, mais sa complexité algorithmique et le nombre d’opérations impliquées ne sont pas beaucoup plus grands. Par contre, il implique des divisions flottantes, plus longues que des multiplications, et qui peuvent poser des problèmes de précision (matrice mal conditionnée).

Il existe deux types de méthodes pour calculer l’inverse d’une matrice, ou montrer que la matrice est singulière :

les méthodes directes (pivot de Gauss et ses variantes) les méthodes itératives(Jacobi, Gauss-Seidel, Successive Over-Relaxation = SOR, ...)

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 14 / 40

Solution des systèmes linéaires et inversion des matrices La méthode de Gauss

Méthode du pivot de Gauss

Définition : C’est une forme systématique de la méthode « d’élimination », où l’on parcourt successivement toutes les lignes. À l’étape p, elle utilise des combinaisons linéaires de lignes pour annuler tous les éléments de la colonne p, à l’exception de l’élément diagonalapp, appelé « pivot ».

Matrice singulière :Si à un moment donné le(s) pivot(s) est (sont) nul(s) la matrice est singulière, mais le système réduit fournit une équation du sous-espace vectoriel des solutions.

Déterminant :C’est tout simplement le produit des pivots. Cette méthode enN3 est très économique par rapport au développement par rapport à une ligne qui serait enN!, soit pour N = 10 un gain d’un facteur 3000 environ !

Décomposition LU : Si, au lieu d’annuler tous les éléments non-diagonaux d’une colonne, on se limite à ceux qui sont sousla diagonale, on obtient une matrice triangulaire supérieure, et les éliminations étant effectuées en multipliant successivement à gauche par des matrices triangulaires inférieures, on réalise la décomposition LU.

Solution des systèmes linéaires et inversion des matrices La méthode de Gauss

Le principe de base (sans pivotage)

A l’étape np (oùp = 1,· · ·,N) on effectue les opérations suivantes :

1 division de la ligne p par le pivotapp, de sorte queapp ←1;

2 remplacement des lignesq 6=p par la combinaison linéaire de la ligne q et de la lignep : Lq ←LqaqpLp (soitaqraqraqp×apr) qui permet d’annuler les éléments apq pourq 6=p.

Comme indiqué précédemment, chacune de ces opérations sur les lignes est obtenue en multipliant à gauche la matrice à inverser A par une matrice « opérant sur les lignes ». Si l’on effectue cette opération en même temps sur A et sur la matrice identité11N, on obtient progressivement à la place de A la matrice 11N et à la place de11N, la matrice B=A−1.

(5)

Solution des systèmes linéaires et inversion des matrices La méthode de Gauss

Méthode de Gauss-Jordan (avec permutation de lignes)

A l’étape np (oùp= 1,· · · ,N) on effectue les opérations suivantes :

1 Recherche de l’élément maximum (en valeur absolue) dans la colonne p sur les lignesq >p; si nécessaire, permutation des lignesq etp pour mettre ce pivot sur la diagonale ; ce « pivotage » est un élément décisif pour la précision de la méthode de Gauss-Jordan.

2 Division de la lignep par le pivot, de sorte queapp= 1.

3 Remplacement de chaque ligneq 6=p par la combinaison linéaire des lignesq etp qui annule les éléments aqp pourq 6=p, soit :

Lq ←LqaqpLp ou encore aqraqraqp×apr . Chacune de ces « opérations sur les lignes » correspond à une

multiplication à gauche de A. Si on les effectue simultanément sur A et sur la matrice identité 11N, A devient progressivement 11N et 11N devient la matrice B=A−1.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 17 / 40

Solution des systèmes linéaires et inversion des matrices Exemple de la méthode de Gauss-Jordan

Un exemple avec pivotage partiel (1/3)

Considérons par exemple la matrice M ci-dessous. Le premier pivotest l’élémentm11, et on forme la matrice d’élimination L1 :

M=

1 2 3 2

−1 2 −2 −1 0 3 −1 1

−1 3 −2 0

⇒L1 =

1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1

,

dont on déduit les matrices M0 =L1·M et N0=L1·11 :

M0 =L1·M=

1 2 3 2 0 4 1 1 0 3 −1 1 0 5 1 2

, N0=L1·11=

1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1

Lesecond pivotest l’élémentm520 = 5, que l’on fait remonter à la seconde ligne à l’aide de matrice de permutation S(2,4) pour échanger les lignes.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 18 / 40

Solution des systèmes linéaires et inversion des matrices Exemple de la méthode de Gauss-Jordan

Exemple pivot de Gauss (2/3)

Les matrices S(2,4), S·M0 et L2 sont données par :

S=

1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0

, S·M0=

1 2 3 2 0 5 1 2 0 3 −1 1 0 4 1 1

, L2=

1 −2/5 0 0 0 1/5 0 0 0 −3/5 1 0 0 −4/5 0 1

d’où M00=L2.S(2,4).M0, N00=L2.S(2,4).N0 :

M00=

1 0 13/5 6/5 0 1 1/5 2/5 0 0 −8/5 −1/5 0 0 1/5 −3/5

, N00=

3/5 −2/5 0 0 1/5 1/5 0 0

−3/5 −3/5 1 0 1/5 −4/5 0 1

.

Le troisième pivotest alorsm330 =−8/5 (pas de permutation).

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 19 / 40

Solution des systèmes linéaires et inversion des matrices Exemple de la méthode de Gauss-Jordan

Exemple pivot de Gauss (3/3)

On obtient alors respectivementL3 ,M000=L3·M00 etN000 =L3·N00:

1 0 −13/8 0 0 1 −1/8 0 0 0 −5/8 0 0 0 −1/8 1

,

1 0 0 7/8 0 1 0 3/8 0 0 1 1/8 0 0 0 −5/8

,

−3/8 0 13/8 −11/8 1/8 0 1/8 1/8 3/8 0 −5/8 3/8 1/8 1 1/8 −7/8

.

Lequatrième pivotest alorsm044=−5/8, donc L4, M0000=11, et N0000M−1sont

1 0 0 −7/5 0 1 0 −3/5 0 0 1 −1/5 0 0 0 −8/5

,

1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

et M−1= 1 5

−1 7 9 −13

1 3 1 −2

2 1 −3 1

−1 −8 −1 7

.

Le déterminant est le produit des pivots :det(M) = 1×5×−85 ×−58 = 5 comme un calcul plus ordinaire mais plus laborieux nous l’aurait donné.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 20 / 40

(6)

Solution des systèmes linéaires et inversion des matrices Exemple de la méthode de Gauss-Jordan

Décompositions usuelles

Bien des opérations reposent sur différentes factorisations de la matrice, dont les facteurs se prêtent à une inversion simple :

Factorisation LU :met la matrice sous la forme A=P·L·U, où P est une matrice de permutation (cf exemple 2 ci-dessus)

L (lower) est triangulaire inférieure dont les éléments diagonaux sont égaux à 1,

U (upper) est triangulaire supérieure.

Elle s’obtient par une modification minime, mais efficace de la méthode de Gauss.

Factorisation de Cholesky :A=L·L ou A=U·U, et autres variantes, si A est symétrique définie positive.

Factorisation QR :A=Q·R où Q est une matrice orthogonale (ou unitaire si A est complexe) et R une matrice triangulaire supérieure.

et bien d’autres méthodes fondées sur la décomposition en valeurs singulières, ou la diagonalisation.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 21 / 40

Solution des systèmes linéaires et inversion des matrices Méthodes itératives

Introduction aux méthodes itératives

Principe

Itérerune application affine de matrice M et de vecteur de translation C sur le vecteur X :

X(k)=MX(k−1) +C

telle que lepoint fixesoit solution du système AX(∞)=B Critère d’arrêt :kX(k)−X(k−1)k6ηkX(k−1)k

Les méthodes se distinguent par le choix de la matrice M et du vecteur C.

La matrice A du système est décomposée en A=D+L+U D diagonale,

L triangulaire inférieure (stricte), U triangulaire supérieure (stricte).

D est supposée inversible (aii 6= 0∀i), donc D+L est inversible.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 22 / 40

Solution des systèmes linéaires et inversion des matrices Méthodes itératives

Méthode de Jacobi

En utilisant laieéquation du système AX=B,

ai1x1+· · ·+ai,i−1xi−1+aii xi +ai,i+1xi+1+· · ·+ainxn =bi calculer chaque composantei du nouveau vecteur X(k) en fonction des autres composantes (j 6=i) du vecteurantérieurX(k−1).

xi(k)=− 1 aii

j=i−1

X

j=1

aijxj(k−1)− 1 aii

j=n

X

j=i+1

aijxj(k−1)+ bi aii

X(k)=−D−1(L+U)X(k−1)+D−1B MJ =−D−1(L+U) et C=D−1B On vérifie que X(∞)=−D−1(L+U)X(∞)+D−1B implique DX(∞)=−(L+U)X(∞)+B, soit AX(∞)=B

Solution des systèmes linéaires et inversion des matrices Méthodes itératives

Méthode de Gauss-Seidel

La variante de Gauss-Seidel consiste à utiliser, dans laieéquation, les composantesdéjà calculées (j<i) du nouveauvecteur pour déterminer la composantei du nouveau vecteur.

xi(k) =− 1 aii

j=i−1

X

j=1

aijxj(k)− 1 aii

j=n

X

j=i+1

aijxj(k−1)+ bi

aii

X(k)=−(D+L)−1UX(k−1)+ (D+L)−1B MG =−(D+L)−1U et C= (D+L)−1B

On vérifie que X(∞)=−(D+L)−1UX(∞)+ (D+L)−1B implique (D+L)X(∞)=−UX(∞)+B, soit AX(∞) =B

(7)

Diagonalisation des matrices Généralités sur la diagonalisation

Diagonalisation : Position du problème

Définition : La diagonalisation d’une matricecarrée A de profil(N,N) est une décomposition de la matrice sous la forme A=VDV−1 où D est une matrice diagonale et V une matrice inversible, dite « matrice de passage ».

Éléments spectraux Lorsqu’une telle décomposition est réalisée, les éléments diagonaux de D sont les valeurs propres de A et les colonnes de V les vecteurs propres correspondants.

Existence Cette décomposition n’existe pas toujours, mais on montre que les matrices réelles symétriques sont diagonalisables de même que les matrices complexes hermitiques. De plus les matrices définies positives (ou négatives) sont toujours diagonalisables avec une matrice de passage qui est orthogonale réelle ou unitaire dans le cas complexe.

Décomposition de Schur Dans le cas général, une matrice n’est pas diagonalisable, et on se contente de cette décomposition A=U·T·U où U est unitaire et T est triangulaire supérieure avec les valeurs propres de A sur sa diagonale. La forme canonique de Jordan en est un cas particulier.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 25 / 40

Diagonalisation des matrices L’algorithme de Jacobi

L’algorithme de Jacobi

Une méthode de diagonalisation élémentaire des matrices symétriques est la méthode de Jacobi. C’est une méthodeitérativequi annule

successivement les éléments non-diagonaux.

En dimension 2, on peut retrancher à la matrice A à diagonaliser la matrice scalairetr(A)11/2, sans changer ses vecteurs propres. La matrice A0 ainsi obtenue est proportionnelle à une matrice de symétrie

S(θ) = cos 2θ sin 2θ

sin 2θ cos 2θ

!

, que l’on sait diagonaliser en utilisant la matrice de rotation d’angleθ.

En dimensionn On utilise la même approche, en annulant successivement les éléments non diagonaux apq. En considérant la sous-matrice

Apq= app apq

aqp aqq

!

, on peut construire comme en dimension 2 une rotation d’angleθ qui n’affecte que les vecteurs de baseXp et Xq.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 26 / 40

Diagonalisation des matrices L’algorithme de Jacobi

Algorithme de Jacobi en dimension n

A chaque étape, on doit ainsi multiplier A à gauche par la matrice Rpq

ci-dessous, et à droite par sa transposée, avec les notations précédentes, en posant c= cosθet s= sinθ :

A=

1· · · p · · · q · · ·n

1 .. .

p app apq

.. .

q aqp aqq

.. . n

Rpq=

1· · · p · · · q · · ·n

1

0...

0

0...

0

0 · · · c · · · s · · · 0

0

...

1

...

0

0 · · · s · · · c · · · 0

0

0...

0

0...

1

Bien sûr on ne calcule pas les produits de matrices, mais simplement : – 2 CL de lignes pour le produit à gauche

– 2 CL de colonnes pour le produit à droite.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 27 / 40

Diagonalisation des matrices L’algorithme de Jacobi

Itérations et convergence

Cette opération ne fait qu’annuler deux éléments non-diagonaux : on doit l’itérer, par exemple en choisissant à chaque pas l’élément non-diagonal le plus grand (en valeur absolue).

On peut montrer que lecaractère non-diagonal,E(A) = 2Pi<jaij2 diminue de 2apq2 à chaque itération, et en déduire que E tend vers zéro plus vite qu’une suite géométrique de raisonρ <1, dépendant bien sûr de la matrice A.

Le processus est donc convergent, on l’arrête en utilisant uncritère de convergence défini parE(A)6η2N(A)où N(A) =Pi,jaij2, et la tolérance η est choisie en fonction de la précision recherchée, mais aussi de façon à éviter d’accumuler des erreurs d’arrondi.

En définitive, la matrice A est devenue quasi-diagonale, et la matrice de passage est le produit des rotations utilisées.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 28 / 40

(8)

Bibliothèques de calcul scientifique Présentation générale

Bibliothèques : présentation

Les codes fondés sur des algorithmes et des procédures d’optimisation bien établis sont « consolidés » dans des bibliothèques.

Il existe un nombre considérable de bibliothèques, dédiées à de très nombreux types de calcul : AL, FFT et ondelettes, analyse spectrale, intégration, EDO, EDP et éléments finis, fonctions spéciales,

traitement d’images, CAO dans différents domainesetc.

On en recense près de 80 sur l’algèbre linéaire

http://www.netlib.org/utk/people/JackDongarra/la-sw.html Chaque fabriquant de processeurs ou éditeur de compilateurs orientés

« calcul scientifique » propose, moyennant finances, une bibliothèque mathématique qui intègre bien souvent des bibliothèques « open source », optimisées pour leur compilateur ou leurs microprocesseurs.

Voirhttp://en.wikipedia.org/wiki/List_of_numerical_analysis_software

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 29 / 40

Bibliothèques de calcul scientifique Présentation générale

Le couple Blas/Lapack

Choix d’une bibliothèque (library) du domaine public :

la bibliothèqueLapack (Linear Algebra PACKage), fondée elle-même sur la librairie Blas(Basic Linear Algebra Subprograms), qui fournit les manipulations élémentaires « de bas niveau ».

Avantages de ces bibliothèques :

gratuites⇒ intégrées dans de très nombreux programmes comme Maple, SciLab, Matlab, Octave etc

aussi des versions propriétaires de Intel, Sun, HP, NEC, Irix, NAG, etc Écrites au départ en Fortran77, elles ont été adaptées à de nombreux langages : Fortran 95, C, C++, Java, Pythonetc

Un programme fondé sur Lapackest aisément optimisé pour une nouvelle architecture (vectorisation, calcul parallèle, calcul distribué) en changeant uniquement la version de Blas sous-jacente.

Il existe aussi des extensions pour des types de matrices non pris en compte (matrices creuses ou par blocs etc).

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 30 / 40

Bibliothèques de calcul scientifique Présentation générale

Appels en Fortran 95 et en C

Les bibliothèques écrites en Fortran 77 sont directement utilisables depuis le Fortran 95 avec tous ses avantages grâce à des « wrappers » :

Le moduleblas95sécurise l’appel des subroutines de Blasen fournissant leur interface et simplifie les passages de tableaux ; Le packagelapack95simplifie l’appel des subroutines de Lapack, en utilisant de plus la généricité et les paramètres optionnels.

Leur utilisation en C rencontre plusieurs difficultés :

l’inter-opération du C et du Fortran (types de variables, passage des paramètres, absence de généricitéetc) ;

l’absence de vrais tableaux 2-D au sens où ils existent en Fortran ; l’ordre de rangement des éléments dans les tableaux de tableaux (A[i][j]) diffère de celui du Fortran.

Bibliothèques de calcul scientifique Présentation générale

Le problème spécifique du C

La solution aux problèmes spécifiques du C passe par :

la représentation des matrices dans leur forme aplatie (1-D); L’ajout, dans toutes les fonctions d’un paramètre

CblasRowMajor/RowMajorou CblasColumnMajor/ColumnMajor indiquant dans quel ordre sont rangés les éléments.

Une version deBlas réécrite en C,OpenBlas, qui est de plus optimisée automatiquement à la compilation ;

Une interface dédiée pour le langage C dénommée lapacke bien que moins puissante que celle du Fortran 95, elle décharge l’utilisateur de certaines tâches de bas niveau.

Dans le cas où on l’on utiliseRowMajor– à éviter – lapackese charge des transpositions nécessaires avec un algorithme optimisé.

Notonsqu’il faut utilisersoit des tableaux dynamiques 1D, soit les tableaux automatiques du C99, pour que les éléments soient contigus en mémoire.

(9)

Bibliothèques de calcul scientifique Usage deBlas

Blas

Blas est structuré en trois niveaux, selon la nature des opérations :

1 vectorielles du type : yαx+y, ou x·y,etc

2 matrices-vecteurs du type : yαA.x+βy et les résolutions de systèmes ;

3 matrices-matrices du type : C←αA.B+βC, les inversionsetc

Le nom des fonctions commesgemmpar exemple est formé par S-GE-MM où les lettres désignent :

1 le type de données:S= réel simple précision,D=double précision, C: complexe simple, Zcomplexe double

2 le type de matriceconcerné :GE=general, GB=general band, SY(SB/SP)=symmetric (band/packed),HE(HB/HP)=hermitian (band/packed),TR(TB/TP)=triangular (band/packed)

3 La nature de l’opération:AXPY=somme de vecteurs,MV=produit matrice-vecteur, MM=produit de matrices, SV/SMrésolution matrice-vecteur/matrice-matrice (Scomme solve).

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 33 / 40

Bibliothèques de calcul scientifique Usage deBlas

Exemple de multiplication avec GEMM en fortran 95

En fortran 77, l’interface deSGEMMcomporte 13 paramètres :

SGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) réalise l’opération C←αA.B+βC, où

TRANSA etTRANSB (des caractères prenant la valeurs’N’ou ’T’) indiquent s’il faut travailler surAet Bou leur transposée ;

M,N,Ksont les tailles des matrices A(M,N),B(N,K),C(M,K), LDA, LDB, LDCsont aussi des tailles :

LD=leading dimension=nbre de lignes

Enfortran 95 avecGEMM, seuls les 3 paramètresA,BetCsont obligatoires.

use l a _ p r e c i s i o n , o n l y : WP = > SP ! la p r e c i s i o n

use blas95 , o n l y : g e m m ! la f o n c t i o n

integer, p a r a m e t e r :: m =.. , n =.. , p =.. ! les t a i l l e s r e a l(k i n d= WP ) :: A ( m , n ) , B ( n , p ) , C ( m , p ) ! les m a t r i c e s

! ... r e m p l i s s a g e des m a t r i c e s A et B ...

c a l l G E M M ( A , B , C ) ! g é n é r i q u e

! en F77 : c a l l s g e m m ( ’ N ’ , ’ N ’ , M , P , N ,1.0 , A , M , B , N ,0.0 , C , M )

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 34 / 40

Bibliothèques de calcul scientifique Usage deBlas

Exemple de multiplication avec xGEMM

En C :on retrouve les difficultés habituelles, plus celles qui tiennent à ce que la bibliothèque est en Fortran, notamment :

Il faut utiliser la représentation aplatie,

La « Leading Dimension » dépend de l’ordre choisi pour les éléments : ce n’est pas en fait le nombre de lignes mais la taille de

l’enregistrement de base dans la matrice aplatie. EnCblasRowMajor, c’est donc la longueur d’une ligne, soit le nombre de colonnes !

⇒PréférerCblasColMajor!

Cela conduit à écrire par exemple, enCblasRowMajor:

# i n c l u d e < c b l a s . h > // en R o w M a j o r !

int M =.. , N =.. , P = . . ; // les t a i l l e s

f l o a t A [ M * N ] , B [ N * P ] , C [ M * P ]; // m a t r i c e s a p l a t i e s // ... r e m p l i s s a g e des m a t r i c e s A et B ...

c b l a s _ s g e m m ( C b l a s R o w M a j o r , C b l a s N o T r a n s , C b l a s N o T r a n s , M , P , N , 1.0 F , A , N , B , P , 0.0 F , C , P ) ;

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 35 / 40

Bibliothèques de calcul scientifique Usage deBlas

Gain de temps sur la multiplication avec xGEMM

Temps de calcul mesuré sur un Pentium (R) dual-core à 2.6 GHz sous Win64, pour le produit de 2 matrices aléatoires en double précision, à l’aide du produit « naïf » de la page 13 et avec DGEMM.

10 100 1000 10000

naive blas

10-6 10-5 10-4 10-3 10-2 10-1 10 102 103 104

1 T = 4 x 10-9 N3.1

T = 10-9 N2.8

Taille N de la matrice

Temps de calcul (s)

Produit de 2 matrices NxN par la méthode naïve et avec blas ( réel double précision, atlas, cblas_dgemm)

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 36 / 40

(10)

Bibliothèques de calcul scientifique Usage deBlas

Comparaison F et C pour xGEMM

Temps de calcul mesuré sur un Pentium (R) dual-core à 2.6 GHz sous Win64, pour le produit de 2 matrices aléatoires en double précision, à l’aide du produit « naïf » de la page 13 et avecDGEMM, etmatmul du fortran.

1e-006 0.0001 0.01 1 100 10000

10 100 1000 10000

naive(C) blas(C) naive blas matmul

pente 3

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 37 / 40

Bibliothèques de calcul scientifique Usage deBlas

Lapack : principe

Lapack offre des procédures de plus haut niveau en combinant les possibilités offertes parBlas.

Les fonctions deLapack sont elles-mêmes de 2 niveaux : les procédures decalcul (computational),

et les procédures pilotes (driver), qui utilisent les précédentes.

Par exemple

la procédurepilotexGESV(N,NRHS,A,LDA,IPIV,B,LDB,INFO)résout le système de Néquations à Ninconnues A.X=B, où l’inconnue X et le second membre B ontNRHS colonnes ;

xGESVappelle les procédures de calcul xGETRFpour la factorisation LU deA, puisxGETRS pour résoudre le système triangulaire ; chacune des deux procédures xGETRFelles-mêmes, utilisent les procédures Lapack xGETF2etxLASWP ainsi que la procédureBlas xTRSM.

MNCS — Noé Lahaye (UPMC) Algèbre linéaire 25 février 2015 38 / 40

Bibliothèques de calcul scientifique Usage deBlas

Lapack : exemple de résolution de système

En Fortran :

use l a _ p r e c i s i o n , o n l y: WP = > SP ! p r e c i s i o n use F 9 5 _ L A P A C K , o n l y: L A _ G E S V ! p r o c e d u r e integer, p a r a m e t e r :: m =.. , p =.. ! t a i l l e s r e a l( WP ) :: A ( m , m ) , X ( m , p ) , B ( m , p ) ! m a t r i c e s

i n t e g e r :: info , i p i v ( m ) ! erreurs , p e r m u t a t i o n s

! ... r e m p l i s s a g e de A et B ...

c a l l L A _ G E S V ( A , B , I N F O = Info , I P I V = i p i v )

En C :

# i n c l u d e < l a p a c k e . h >

int m =.. , p =.. ; // les t a i l l e s

f l o a t A [ m * m ] , X [ m * p ] , B [ m * p ] ; // m a t r i c e s

int info , i p i v [ m ]; // erreurs , p e r m u t a t i o n s // ... r e m p l i s s a g e de A et B ...

i n f o = L A P A C K E _ s g e s v ( C b l a s R o w M a j o r , M , P , A , M , ipiv , B , M ) ;

Attention :ici Aest remplacée par sa décomposition LU !

Bibliothèques de calcul scientifique Conclusion

Conclusion : intérêt des bibliothèques

L’utilisation des bibliothèques permet :

d’écrire ducode compact en s’appuyant sur des méthodes générales éprouvées, et de bénéficier d’une optimisation logicielle et matérielle maximale, pour se concentrer sur ce qui est spécifique,

de choisir parmi tout un arsenal la méthodela plus adaptée, notamment selon le type de la matrice (bandes, triangulaires,

symétriques ou hermitiennes) : nous n’avons utilisé dans les exemples que les procédures générales xGEyy, mais selon le problème considéré on pourra faire un choix optimal.

Ainsi, pour diagonaliser la matrice L1D du TE, on peut choisir : - soit la méthode générale xGEEV ,

- soitxSYEVqui exploite son caractère symétrique,

- soitxSTEVutilisant son caractère symétriqueet tridiagonal.

Références

Documents relatifs

UNIVERSITE PARIS-DAUPHINE DEMI2E 1ère année, 20 janvier 2010 Examen d’algèbre 1..

Trouve l’inverse des matrices suivantes, par la

Deux résultats peuvent être facilement retrouvés concernant les matrices involutives et les

Les petits génies en maths, non je blague, ceux qui observent les choses tout simplement, auront remarqué que la transposition d’une matrice revient à faire

Donner une base suivant laquelle la matrice de u se décompose en deux blocs

Plus généralement, on doit se rappeler qu’une matrice triangulaire est inversible si, et seulement si, ses éléments diagonaux sont non nuls.. Or, il n’est pas difficile

Nous pouvons, par exemple, essayer de conjecturer le résultat à partir de quelques matrices simples (ce n’est en rien une obligation !). Ce résultat serait-il valable quelle que

Le fait que la condition soit suffisante ne pose pas de difficulté particulière mais on notera le rôle déterminant joué par l’inversibilité de