TP 9— ALGÈBRE LINÉAIRE
http://www.liafa.jussieu.fr/∼nath/tpcaml/tp9/tp9.pdf
Si vous utilisez OCaml, vous pouvez utiliser la bibliothèque num qui implémente l’arithmétique exacte sur les
nombres rationnels (entrer #load "nums.cma";; open Num;; au début du programme). Les opérations usuelles
sur les rationnels sont notées +/,-/,*/et //. Le symbole =/ désigne le test d’égalité entre rationnels et la
fonction num_of_int permet de convertir un entier ordinaire en rationnel de dénominateur 1.
Si vous utilisez Caml light, vous pouvez utiliser des flottants.
PARTIE I : Polynôme caractéristique et interpolation de Lagrange
Soit M∈ Mn(Q). Le polynôme caractéristique de Mest χM= det(M−XIn)∈Qn[X]. On étudie un algorithme
de calcul de χMreposant sur le calcul d’un déterminant par la méthode du pivot de Gauss et sur la théorie de
l’interpolation de Lagrange.
A - Calcul d’un déterminant par opérations élémentaires
On peut calculer det(M)en transformant Men une matrice triangulaire supérieure à l’aide d’opérations sur
les lignes selon l’algorithme qui suit.
Traitement de la colonne j
Supposons avoir obtenu M′=A B
0Cavec A∈ Mj−1(Q)triangulaire supérieure de
diagonale (1,...,1) et λ∈Qtels que det(M) = λdet(M′) = λdet(C)(on est dans ce cas
initialement avec j= 1,M′=Met λ= 1).
– Si j=nalors det(M) = λ.
– Sinon, si la première colonne de Cest nulle (c’est-à-dire si M′
ij = 0 pour tout i≥j)
alors det(C) = 0 et donc det(M) = 0.
– Sinon, soit M′
ij 6= 0 avec i≥j:
1. si i > j, échanger les lignes iet jde M′et changer λen −λ;
2. diviser la ligne jde M′par M′
jj (maintenant non nul) et changer λen λM′
jj ;
3. pour tout i > j, retrancher M′
ij fois la ligne jde M′à la ligne ide M′;
4. passer alors à la colonne j+ 1.
Programmer cet algorithme. On écrira une fonction det qui prend une matrice Mcomme argument et qui
retourne son déterminant. Cette fonction devra procéder en premier lieu à une copie de la matrice Mde façon
à ne pas la modifier.
B - Calcul du polynôme caractéristique
On peut théoriquement calculer χMpar la méthode précédente en remplaçant Mpar M−XIn, mais ceci
impose de travailler avec des matrices à coefficients dans le corps Q(X)et non dans Q, ce qui est délicat. Une
méthode plus efficace consiste à calculer χM(λ)dans Qpour n+ 1 valeurs rationnelles distinctes de λet à en
déduire les coefficients de χMpar interpolation de Lagrange.
1. Interpolation de Lagrange
Soit x1,...,xn, y1,...,yn∈Qtels que les xisoient deux à deux distincts et Pnl’unique polynôme de Qn−1[X]
tel que pour tout i,Pn(xi) = yi. On note Qn= (X−x1)...(X−xn)et on a les relations de récurrence :
Pn+1 =Pn+yn+1 −Pn(xn+1)
Qn(xn+1)Qn
Qn+1 = (X−xn+1)Qn
Écrire une fonction lagrange qui prend en argument deux tableaux xet ycontenant respectivement les xi
et les yiet qui retourne un tableau pcontenant les coefficients du polynôme Pn(pest indexé par {0,...,n−1}et
p.(i)est le coefficient de Xidans Pn). On programmera les calculs de Pn(xn+1)et Qn(xn+1)efficacement.
2. Polynôme caractéristique
Écrire une fonction poca prenant une matrice Men argument et retournant son polynôme caractéristique,
sous forme de tableau de coefficients.
1