• 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!
47
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 / 47

(2)

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 / 47

(3)

Introduction

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 3 / 47

(4)

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 calculs non-linéaires Problèmes spécifiques :

très gros volumes de données (ressources enN2) 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 etBlassont intégrés dans SciLab/MatLab, Maple, Octave etc

(5)

Notions fondamentales

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 5 / 47

(6)

Notions fondamentales

Matrices rectangulaires

A : matrice M lignes,N colonnes, ou de profil (shape) (M,N).

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 Matrice carrée : cas particulier N =M.

Vecteur colonneN = 1; vecteur ligneM = 1.

(7)

Représentation et informatique des matrices

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 7 / 47

(8)

Représentation et informatique des matrices

Stockage des matrices

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

indexés par défaut de1à Net de 1à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 de 0àM-1 et0à N-1,pascomme les matrices.

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

alloués dynamiquement aveccalloc(ou malloc)

(eg via la bibliothèquemnitab: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 8 / 47

(9)

Représentation et informatique des matrices

Ordre des éléments

En Fortran

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

| {z }

colonne1

a12 a22 · · · aM2

| {z }

colonne 2

· · · a1N a2N · · · aMN

| {z }

colonneN

Indice deligne(1erindice)→ indice rapide: stockage en «Column Major».

En C

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

| {z }

ligne1

a21 a22 · · · a2N

| {z }

ligne 2

· · · aM1 aM2 · · · aMN

| {z }

ligneM

Indice decolonne(2ndindice)→indice rapide : stockage en «Row Major».

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

(10)

Représentation et informatique des matrices

Matrice aplatie

Dans les deux langages, on peut aussi utiliser un tableau 1-DAppour représenter lamatrice A(M,N)« aplatie ». C’est en particulier nécessaire pour l’usage de Blaset de Lapacken langage C :

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

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

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

⇒ Écrire une fonction qui calcule l’indicekdans le tableau aplati de l’élément d’indicesiet jdans la représentation 2D.

(11)

Classification des matrices

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 11 / 47

(12)

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

(13)

Produit et autres manipulations

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 13 / 47

(14)

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ément Cij =produit scalaire de la lignei de la matrice A avec la colonnej de la matrice B.

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

ouM = 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.

(15)

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 15 / 47

(16)

Produit et autres manipulations Produit matriciel

Produit matriciel en C

Troisboucles imbriquées : indices extérieurs→ indices libres i et j boucle interne →somme sur k.

Exemple, matrices aplaties en RowMajor (déconseillé !) :

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 ; }

} }

3 boucles imbriquées ⇒ M ×N ×PN3 multiplications et autant d’accès non-contigusdans les tableaux.

(17)

Produit et autres manipulations Produit matriciel

Autres manipulations

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

En C 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 17 / 47

(18)

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 (enN3) 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).

(19)

Solution des systèmes linéaires et inversion des matrices

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 19 / 47

(20)

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

Inversion : position du problème

Définition :Inverse d’une matrice carrée A de profil(N,N) → matrice A−1 de même dimension telle que A.A−1=A−1.A=11.

permet de résoudre les systèmes linéaires deN ×N permet de calculer le déterminant d’une matrice.

L’inversion peut sembler plus ardue que la multiplication, mais sa

complexité algorithmique et le nombre d’opérations 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).

Deux types de méthodes pour inverser une matrice :

méthodes directes(pivot de Gauss et ses variantes dont LU) méthodes itératives (Jacobi, Gauss-Seidel, SOR, ...)

(21)

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

Méthode du pivot de Gauss

Définition :Forme systématique de la méthode « d’élimination » ; parcours successif de toutes les lignes.

Étapep : combinaisons linéaires de lignes→ annule tous les éléments de la colonne p sauf l’élément diagonalapp : pivot.

Matrice singulière : un pivot(s) nul(s)→ matrice singulière (système réduit fournit une équation du sous-espace vectoriel des solutions.)

Déterminant =produit des pivots ; méthode en N3 très économique (par rapport au développement selon une ligne enN!:N = 10→ gain d’un facteur 3000 environ !)

Décomposition LU (Lower Upper) : annuler seulement les éléments situés sous la diagonale →matrice triangulaire supérieure.

éliminations effectuées en multipliant successivement à gauche par des matrices triangulairesinférieures → décomposition LU.

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

(22)

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

Gauss-Jordan : principe de base

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

1 division de la ligne p par le pivotapp :app ←1;

2 éventuellement : recherche de l’élément max dans la colonnep sur les lignes en dessous dep (q>p), et permutation des lignes p et q

3 q6=p : Lq←LqaqpLp (soitaqraqraqp×apr) ⇒apq= 0 pour q6=p.

Chaque opération sur les lignes =multiplication à gauche de la matrice à inverser A par une matrice « opérant sur les lignes ».

Ensemble de ces opérations sur A⇒11N Ensemble de ces opérations sur11N ⇒B=A−1

(23)

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)

Premier pivot : élément m11; formation de 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

Second pivot :m520 = 5 →ligne 2 ← matrice de permutation S(2,4)

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

(24)

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 alors m330 =−8/5(pas de permutation).

(25)

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 alorsm440 =−5/8, donc L4, M0000=11, et N0000M−1 sont

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 25 / 47

(26)

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 : A=P·L·U, où

P : matrice de permutation (cf exemple 2 ci-dessus)

L (lower) : triangulaire inférieure, éléments diagonaux égaux à 1, U (upper) : triangulaire supérieure.

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 (A symétrique définie positive).

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

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

(27)

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

Introduction aux méthodes itératives

Principe

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

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

telle que lepoint fixe soit 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 27 / 47

(28)

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 vecteur antérieur X(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

(29)

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 la ie équation, les composantesdéjà calculées (j <i) du nouveau vecteur pour déterminer la composante i 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

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

(30)

Diagonalisation des matrices

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 30 / 47

(31)

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

Diagonalisation : Position du problème

Définition :A→A=VDV−1 (A matrice carrée, D matrice diagonale et V matrice inversible, dite « matrice de passage ».)

Éléments spectraux Éléments diagonaux de D→ valeurs propres de A ; colonnes de V→ vecteurs propres correspondants.

ExistenceCette décomposition n’existe pas toujours, mais les matrices réelles symétriques et complexes hermitiques sont diagonalisables.

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 SchurCas général : matrice non diagonalisable, on se contente de cette décomposition : A=U·T·U

(U unitaire, T triangulaire supérieure avec les valeurs propres de A sur la diagonale. Cas particulier : forme canonique de Jordan.)

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

(32)

Diagonalisation des matrices L’algorithme de Jacobi

L’algorithme de Jacobi

Algorithme de Jacobi : méthode de diagonalisation élémentaire des matrices symétriques.

Méthode itérative : annule successivement les éléments non-diagonaux En dimension 2, on peut retrancher à la matrice A à diagonaliser la matrice scalaire tr(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 base Xp et Xq.

(33)

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 posantc= 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 33 / 47

(34)

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 le caractère non-diagonal,E(A) = 2Pi<jaij2 diminue de2a2pq à 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 convergencedéfini parE(A)6η2N(A) oùN(A) =Pi,ja2ij, 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.

(35)

Bibliothèques de calcul scientifique

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 35 / 47

(36)

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

(37)

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 librairieBlas(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, Octaveetc

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

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

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

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

(38)

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 module blas95sécurise l’appel des subroutines deBlasen fournissant leur interface et simplifie les passages de tableaux ; Le package lapack95simplifie l’appel des subroutines deLapack, 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.

(39)

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/RowMajorouCblasColumnMajor/ColumnMajor indiquant dans quel ordre sont rangés les éléments.

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

Une interface dédiée pour le langage C dénomméelapacke 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.

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

(40)

Bibliothèques de calcul scientifique Usage deBlas

Blas

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

1 vectorielles du type :yαx+y, oux·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 fonctionscommesgemm par exemple est formé parS-GE-MMoù les lettres désignent :

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

2 letype 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).

(41)

Bibliothèques de calcul scientifique Usage deBlas

Exemple de multiplication avec GEMM en fortran 95

En fortran 77, l’interface de SGEMMcomporte 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ù

TRANSAet TRANSB(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

En fortran 95avecGEMM, seuls les 3 paramètres A,Bet Csont 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 41 / 47

(42)

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. En CblasRowMajor, c’est donc la longueur d’une ligne, soit le nombre de colonnes !

⇒ PréférerCblasColMajor!

Cela conduit à écrire par exemple, en CblasRowMajor:

# 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 ) ;

(43)

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 14 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 43 / 47

(44)

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 14 et avec DGEMM, et matmuldu fortran.

1e-006 0.0001 0.01 1 100 10000

10 100 1000 10000

naive(C) blas(C) naive blas matmul

pente 3

(45)

Bibliothèques de calcul scientifique Usage deBlas

Lapack : principe

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

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édure pilotexGESV(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 ont NRHS colonnes ;

xGESVappelle les procédures de calculxGETRFpour la factorisation LU de A, puis xGETRSpour résoudre le système triangulaire ; chacune des deux procéduresxGETRFelles-mêmes, utilisent les procéduresLapack xGETF2etxLASWPainsi que la procédure Blas xTRSM.

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

Références

Documents relatifs

Hyperplans vectoriels comme noyaux de formes linéaires Un sous-espace vectoriel d'un espace vectoriel E de dimension finie non nulle est un hyperplan vectoriel si et seulement s'il

Temps de calcul mesuré sur un I5 (R) quad-core à 2.9 GHz sous linux 64 bits, pour le produit de 2 matrices aléatoires N×N en simple précision, via le produit « naïf », avec MATMUL

Temps de calcul pour le produit de 2 matrices aléatoires N×N en simple et double précision, à l’aide du produit « naïf », avec MATMUL et avec GEMM de openblas en

Définition : La diagonalisation d’une matrice carré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

La méthode du gradient conjugué est plus rapide lorsqu’on s’approche du minimum, car l’approximation quadratique est alors bien meilleure. NB : On peut donc chercher à combiner

« Moins mauvaise » solution obtenue en cherchant non plus à annuler Ap − b, mais à minimiser sa norme kA · p − bk, par des méthodes directes ou itératives selon la nature

Ainsi, la matrice échelonnée (réduite ou non) obtenue à partir de la matrice augmentée d’un système d’équations linéaires en appliquant les opérations élémentaires sur

Matrice d’une famille dans une