12.07.2015 Views

Algorithmes de calcul formel - Free

Algorithmes de calcul formel - Free

Algorithmes de calcul formel - Free

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>de</strong> la matrice initiale M par (R i,i /(R i−1,i−1 ) n−i . Donc :<strong>de</strong>t(R) = <strong>de</strong>t(M)n∏R i,ii=1R n,n= <strong>de</strong>t(M)= <strong>de</strong>t(M)n−1∏(R i,i /(R i−1,i−1 ) n−ii=1n−1∏R i,ii=1Pour les matrices à coefficients entiers, on peut aussi utiliser une métho<strong>de</strong> modulaire: on <strong>calcul</strong>e une borne à priori sur le déterminant et on <strong>calcul</strong>e le déterminantmodulo suffisamment <strong>de</strong> petits nombres premiers pour le reconstruire par lesrestes chinois. L’avantage <strong>de</strong> cet algorithme est qu’il est facile à paralléliser.On utilise souvent la borne d’Hadamard sur le déterminant :| <strong>de</strong>t(M)| ≤ ∏ √ ∑|m i,j | 21≤i≤n1≤j≤nPreuve <strong>de</strong> la borne : on majore le déterminant par le produit <strong>de</strong>s normes <strong>de</strong>s vecteurscolonnes <strong>de</strong> M.Remarque :Si on veut juste prouver l’inversibilité d’une matrice à coefficients entiers, il suffit<strong>de</strong> trouver un nombre premier p tel que le déterminant <strong>de</strong> cette matrice modulo psoit non nul.Développement par rapport à une ligne ou une colonneOn a tendance à oublier ce type <strong>de</strong> métho<strong>de</strong> car le développement complet dudéterminant (faisant intervenir une somme sur toutes les permutations du groupesymétrique) nécessite d’effectuer n! produits <strong>de</strong> n coefficients et n! additions cequi est gigantesque. Or on peut "factoriser" une partie <strong>de</strong>s <strong>calcul</strong>s et se ramenerà n.2 n opérations élémentaires au lieu <strong>de</strong> n.n!. Remarquons aussi que le nombred’opérations élémentaires n’a guère <strong>de</strong> sens si on ne tient pas compte <strong>de</strong> la complexité<strong>de</strong>s expressions, l’avantage principal <strong>de</strong> la métho<strong>de</strong> <strong>de</strong> développement étantd’éviter d’effectuer <strong>de</strong>s divisions.Calcul du déterminant par développement <strong>de</strong> LaplaceOn <strong>calcul</strong>e d’abord tous les mineurs 2x2 <strong>de</strong>s colonnes 1 et 2 que l’on place dansune table <strong>de</strong> mineurs, puis on <strong>calcul</strong>e les mineurs 3x3 <strong>de</strong>s colonnes 1 à 3 en développantpar rapport à la colonne 3 et en utilisant les mineurs précé<strong>de</strong>nts, puisles mineurs 4x4 avec les mineurs 3x3, etc.. On évite ainsi <strong>de</strong> re<strong>calcul</strong>er plusieursfois les mêmes mineurs. Cf. par exemple l’implémentation en C++ dans giac/xcas(www-fourier.ujf-grenoble.fr/~parisse/giac.html) qui utilise letype générique map <strong>de</strong> la librairie standard C++ (STL) pour stocker les tables<strong>de</strong> mineurs (fonction <strong>de</strong>t_minor du fichier vecteur.cc).Nombre d’opérations élémentaires : il y a ( n 2 ) mineurs d’ordre 2 à <strong>calcul</strong>er nécessitantchacun 2 multiplications (et 1 addition), puis ( n 3 ) mineurs d’ordre 3 nécessitant3 multiplications et 2 additions, etc. donc le nombre <strong>de</strong> multiplications est <strong>de</strong>2( n 2 ) + 3(n 3 ) + ... + n(n n), celui d’additions est ( n 2 ) + 2(n 3 ) + ... + (n − 1)(n n) soit unnombre d’opérations élémentaires majoré par n.2 n .On observe "expérimentalement" que cet algorithme est intéressant lorsque lenombre <strong>de</strong> paramètres dans le déterminant est grand et que la matrice est plutôt81

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!