Alors c 1,1 = u 1 , c 1,2 = u 7 , c 2,1 = u 4 , c 2,2 = u 5 .Cet algorithme utilise 7 multiplications et 15 additions ce qui économise 1 multiplicationet permet en appliquant récursivement cet algorithme pour <strong>de</strong>s matricesblocs <strong>de</strong> réduire la complexité d’un produit <strong>de</strong> gran<strong>de</strong>s matrices normalement enO(n 3 ) à O(n ln(7) ) (la preuve est analogue à celle <strong>de</strong> la multiplication <strong>de</strong>s polynômespar l’algorithme <strong>de</strong> Karatsuba).La plupart <strong>de</strong>s algorithmes d’algèbre linéaire “numérique” ont une utilité en<strong>calcul</strong> exact : par exemple la factorisation LU (avec les variations décrites dansla section réduction <strong>de</strong> Gauß), la factorisation QR (et donc la métho<strong>de</strong> <strong>de</strong> Gram-Schmidt, ici pour <strong>de</strong>s raisons d’efficacité on orthogonalise d’abord la base <strong>de</strong> départet on la normalise à la fin seulement), Cholesky,.... On peut aussi facilement programmerla recherche <strong>de</strong> la décomposition t PDP d’une matrice symétrique et endéduire la signature d’une forme quadratique. Citons enfin l’algorithme LLL (cf.Cohen) qui est utile dans <strong>de</strong> nombreux domaines (il permet <strong>de</strong> trouver <strong>de</strong>s vecteursassez courts dans un réseau, ce ne sont pas les plus courts, mais en contrepartie onles trouve très vite).10.4 Quelques références– Comme toujours on renvoie à l’excellent livre <strong>de</strong> Henri Cohen : A Course inComputational Algebraic Number Theory– Gantmacher : Théorie <strong>de</strong>s matrices– Pour une implémentation <strong>de</strong>s algorithmes <strong>de</strong> forme normale <strong>de</strong> Smith ou <strong>de</strong>Frobenius, cf. le source <strong>de</strong> MuPAD ouhttp://www.mapleapps.com/maplelinks/share/normform.html– Ferrard, Lemberg : Mathématiques Concrètes, Illustrées par la TI 92 et la TI89Présente aussi <strong>de</strong>s algorithmes plus numériques, et le lien avec la diagonalisationnumérique <strong>de</strong> matrices.– Press et al. : Numerical recipies in Fortran/C/Pascal.Pour <strong>de</strong>s algorithmes numériques (sur les matrices et autres).10.5 Bézout et les p-adiques.Soit n et a/b une fraction irréductible d’entiers tels que b est premier avec net |a| < √ n/2 et 0 ≤ b ≤ √ n/2. Il s’agit <strong>de</strong> reconstruire a et b connaissantx = a × (b −1 ) (mod n) avec x ∈ [0, n[.UnicitéS’il existe une solution (a, b) vérifiant |a| < √ n/2 et 0 ≤ b ≤ √ n/2, soit (a ′ , b ′ )une solution <strong>de</strong> x = a × (b −1 ) (mod n) et vérifiant |a ′ | < √ n et 0 ≤ b ′ ≤ √ n,alors :ab ′ = a ′ b (mod n)Comme |ab ′ | < n/2, |a ′ b| < n/2, on en déduit que ab ′ = a ′ b. Donc a/b = a ′ /b ′donc a = a ′ et b = b ′ car a/b et a ′ /b ′ sont supposées irréductibles.Reconstruction lorsqu’on sait qu’il y a une solutionOn suit l’algorithme <strong>de</strong> <strong>calcul</strong> <strong>de</strong>s coefficients <strong>de</strong> Bézout pour les entiers n et x.On pose :α k n + β k x = r k94
où les r k sont les restes successifs <strong>de</strong> l’algorithme d’Eucli<strong>de</strong>, avec la conditioninitiale :α 0 = 1, β 0 = 0, α 1 = 0, β 1 = 1, r 0 = n, r 1 = xet la relation <strong>de</strong> récurrence :β k+2 = β k − q k+2 β k+1 , q k+2 = r k − r k+2r k+1On a β k x = r k (mod n) pour tout rang mais il faut vérifier les conditions <strong>de</strong>taille sur β k et r k pour trouver le couple (a, b). Montrons par récurrence que :β k+1 r k − r k+1 β k = (−1) k n (33)Au rang k = 0, on vérifie l’égalité, on l’admet au rang k, alors au rang k + 1, ona :β k+2 r k+1 − r k+2 β k+1 = β k r k+1 − q k+2 r k+1 β k+1 − r k+2 β k+1= β k r k+1 − (r k − r k+2 )β k+1 − r k+2 β k+1= β k r k+1 − r k β k+1= −(−1) k nOn vérifie aussi que le signe <strong>de</strong> β k est positif si k est impair et négatif si k est pair,on déduit donc <strong>de</strong> (33) :|β k+1 |r k < n(avec égalité si r k+1 = 0)Considérons la taille <strong>de</strong>s restes successifs, il existe un rang k tel que r k ≥ √ net r k+1 < √ n. On a alors |β k+1 | < n/r k ≤ √ n.Donc l’algorithme <strong>de</strong> Bézout permet <strong>de</strong> reconstruire l’unique couple solutions’il existe.ExempleOn prend n = 101, a = 2, b = 3, a/b = 68 (mod 101). Puis on effectue Bézoutpour 68 et 101 en affichant les étapes intermédiaires (par exemple avec IEGCD surune HP49 ou exercice avec votre système <strong>de</strong> <strong>calcul</strong> <strong>formel</strong>) := alpha*101+beta*68101 1 068 0 1 L1 - 1*L233 1 -1 L2 - 2*L32 -2 3 ...On s’arrête à la première ligne telle que le coefficient <strong>de</strong> la 1ère colonne est inférieurà √ 101, on retrouve bien 2 et 3. Quand on programme l’algorithme <strong>de</strong> reconstruction,on ne <strong>calcul</strong>e bien sûr pas la colonne <strong>de</strong>s α, ce qui donne par exemplele programme xcas ou mupad suivant :// Renvoie a/b tel que a/b=x mod n et |a|,|b|