• Aucun résultat trouvé

Calcul matriciel (*)

Dans le document Calcul mathématique avec Sage (Page 42-47)

Analyse et algèbre avec 2 Sage

2.4 Calcul matriciel (*)

Cette formule remarquable a été obtenue le 19 septembre 1995 par Simon Plouffe en collaboration avec David Bailey et Peter Borwein.

Grâce à une formule dérivée de la formule BBP, le 4 000 000 000 000 000e chiffre de π en base 2 a été obtenu en 2001.

2.4 Calcul matriciel (*)

Dans cette section, on décrit les fonctions de base utiles en algèbre linéaire : opérations sur les vecteurs, puis sur les matrices. Pour plus de détails, on renvoie au chapitre8 pour le calcul matriciel symbolique et au chapitre13 pour le calcul matriciel numérique.

2.4.1 Résolution de systèmes linéaires

Pour résoudre un système linéaire, on peut utiliser la fonctionsolvedéjà rencontrée.

BR

OUILLON

Fonctions usuelles sur les vecteurs Déclaration d’un vecteur vector

Produit vectoriel cross_product Produit scalaire dot_product Norme d’un vecteur norm

Tableau 2.5– Calcul vectoriel.

Exercice 8 (*). (Approximation polynomiale du sinus) Déterminer le poly-nôme de degré au plus 5 qui réalise la meilleure approximation, au sens des moindres carrés, de la fonction sinus sur l’intervalle [−π, π] :

α5 = min Z π

−π

|sinxP(x)|2 dxP ∈R5[X]

.

2.4.2 Calcul vectoriel

Les fonctions de base utiles pour la manipulation des vecteurs sont résumées dans le tableau2.5.

On peut se servir des fonctions précédentes pour traiter l’exercice suivant.

Exercice 9. (Le problème de Gauss) On considère un satellite en orbite autour de la Terre et on suppose que l’on connaît trois points de son orbite :A1, A2 etA3. On souhaite déterminer à partir de ces trois points les paramètres de l’orbite de ce satellite.

On note O le centre de la Terre. Les points O, A1, A2 et A3 sont évi-demment situés dans un même plan, à savoir le plan de l’orbite du satellite.

L’orbite du satellite est une ellipse dontO est un foyer. On peut choisir un repère (O;−→ı ,−→) de telle sorte que l’équation polaire de l’ellipse en coor-données polaires soit dans ce repère r = 1−epcosϑedésigne l’excentricité de l’ellipse et p son paramètre. On notera −→ri = −−→

OAi et ri = k−→rik pour i∈ {1; 2; 3}. On considère alors les trois vecteurs suivants qui se déduisent de la connaissance deA1,A2 etA3 :

D =−→r1∧ −→r2 +−→r2∧ −→r3 +−→r3 ∧ −→r1,

S = (r1r3)· −→r2 + (r3r2)· −→r1 + (r2r1)· −→r3,

N =r3·(−→r1 ∧ −→r2) +r1·(−→r2 ∧ −→r3) +r2·(−→r3 ∧ −→r1). 1. Montrer que−→ı ∧−→

D=−1e−→

S et en déduire l’excentricité ede l’ellipse.

2. Montrer que−→ı est colinéaire au vecteur−→ S ∧−→

D.

3. Montrer que−→ı ∧−→ N = pe−→

S et en déduire le paramètre p de l’ellipse.

4. Exprimer le demi-grand axeade l’ellipse en fonction du paramètrep et de l’excentricitée.

BR

OUILLON

5. Application numérique :dans le plan rapporté à un repère orthonormé direct, on considère les points suivants :

A1(01), A2(22), A3(3.50 ), O(00).

Déterminer numériquement les caractéristiques de l’unique ellipse dont O est un foyer et qui passe par les trois pointsA1,A2 etA3.

2.4.3 Calcul matriciel

Pour définir une matrice, on utilise l’instruction matrix en précisant éventuellement l’anneau (ou le corps) de base :

sage: A = matrix(QQ,[[1,2],[3,4]]); A [1 2]

[3 4]

Pour trouver une solution particulière à l’équation matricielleAx=b (resp.

xA=b), on utilise la fonction la fonction solve_right(resp.solve_left).

Pour trouvertoutes les solutions d’une équation matricielle, il faut ajouter à une solution particulière la forme générale de l’équation homogène associée.

Pour résoudre une équation homogène de la formeAx= 0 (resp. xA= 0), on utilisera la fonction right_kernel (resp. left_kernel), comme dans l’exercice suivant.

Exercice 10. (Bases de sous-espaces vectoriels)

1. Déterminer une base de l’espace des solutions du système linéaire homogène associé à la matrice :

A=

2. Déterminer une base de l’espaceF engendré par les colonnes de A.

3. CaractériserF par une ou plusieurs équations.

Exercice 11. (Une équation matricielle) On rappelle le lemme de facto-risation des applications linéaires. Soient E, F, G des K-espaces vectoriels de dimension finie. Soientu∈ L(E, F) etv∈ L(E, G). Alors les assertions suivantes sont équivalentes :

i)il existew∈ L(F, G) tel que v=wu, ii)Ker(u)⊂Ker(v).

On cherche toutes les solutions à ce problème dans un cas concret. Soient A=

BR

OUILLON

Fonctions usuelles sur les matrices

Déclaration d’une matrice matrix

Résolution d’une équation matricielle solve_right, solve_left Noyau à droite, à gauche right_kernel, left_kernel Réduction sous forme échelonnée en ligne echelon_form

Sous-espace engendré par les colonnes column_space Sous-espace engendré par les lignes row_space

Concaténation de matrices matrix_block

Réduction des matrices

Valeurs propres d’une matrice matrix

Vecteurs propres d’une matrice eigenvectors_right Réduction sous forme normale de Jordan jordan_form

Polynôme minimal d’une matrice minimal_polynomial Polynôme caractéristique d’une matrice characteristic_polynomial

Tableau 2.6– Calcul matriciel.

2.4.4 Réduction d’une matrice carrée

Pour étudier les éléments propres d’une matrice, on dispose des fonctions résumées dans le tableau2.6.

Ces fonctions seront détaillées dans le chapitre 8. On se contente de donner ici quelques exemples simples d’utilisation.

Exemple. La matrice A=−42 −64 −33

3 3 1

est-elle diagonalisable ? trigonali-sable ?

On commence par définir la matrice A en indiquant le corps de base (QQ=Q), puis on détermine les éléments propres.

sage: A = matrix(QQ, [[2, 4, 3],[-4,-6,-3],[3,3,1]]) sage: A.characteristic_polynomial()

Le polynôme minimal de Apossède une racine simple et une racine double ; doncA n’est pas diagonalisable. Par contre, le polynôme minimal deA est scindé doncA est trigonalisable.

sage : A. eigenvectors_right ()

[(1,[(1,−1,1)],1),(−2,[(1,−1,0)],2)]

sage : A. jordan_form ( transformation = True )

BR

OUILLON

Exemple. Soit à diagonaliser la matrice A=−1/21 −1/2−1 .

On peut essayer de diagonaliser cette matrice en utilisant la fonction jordan_form:

sage: A = matrix(QQ, [[1,-1/2],[-1/2,-1]]) sage: A.jordan_form()

Traceback (most recent call last):

...

RuntimeError: Some eigenvalue does not exist in Rational Field.

Mais, ici une petite difficulté apparaît : les valeurs propres ne sont pas rationnelles.

sage: A = matrix(QQ, [[1,-1/2],[-1/2,-1]]) sage: A.minimal_polynomial()

x^2 - 5/4

Il faut donc changer de corps de base.

sage : R = QQ[ sqrt (5) ]

sage : A = A. change_ring (R)

sage : A. jordan_form ( transformation =True , subdivide = False )

Ce qui s’interprète ainsi : 1

Exemple. Soit à diagonaliser la matrice A= 2

Cette fois-ci, il faut travailler dans une extension de degré 4 du corps Q. On peut alors procéder comme suit.

sage : K.<sqrt2 > = NumberField (x^2 - 2) sage : L.<sqrt3 > = K. extension (x^2 - 3)

sage : A = matrix (L, [[2 , sqrt2 *sqrt3 , sqrt2 ], \

... [ sqrt2 *sqrt3 , 3, sqrt3 ], \

... [sqrt2 , sqrt3 , 1]])

sage : A. jordan_form ( transformation = True )

BR

OUILLON

Dans le document Calcul mathématique avec Sage (Page 42-47)