Problème entièrement résolu
-
Là où le Gram-Schmidt classique perd son angle droit 8 étapes
L'outil affiche trois colonnes espacées de 10⁻⁸ et la réponse du Gram-Schmidt classique pour elles. Exécutez l'algorithme à la main, trouvez l'unique arrondi qui lui coûte trente degrés, puis indiquez jusqu'où chaque version peut être poussée avant de cesser d'être utile.
Ouvrez ce problème dans l'outil
-
Chaque colonne est le vecteur (1, 0, 0, 0) avec un seul ε glissé dans un emplacement différent. AᵀA est la matrice 3 × 3 remplie de un, plus ε²I. Ses valeurs propres sont 3 + ε² une fois et ε² deux fois. Les valeurs singulières sont donc √(3 + ε²) et ε, et le conditionnement est exact plutôt qu'estimé. La première ligne du tableau affiche 1,7321 × 10⁸.
-
‖a₁‖² vaut 1 + ε², et ε² vaut 10⁻¹⁶. Un double stocke 1, et le nombre suivant qu'il peut représenter se trouve 2,2204 × 10⁻¹⁶ plus loin. Tout ce qui est inférieur à la moitié de cet écart, soit 1,1102 × 10⁻¹⁶, disparaît lorsqu'on l'ajoute à 1. Dix puissance moins seize se situe en dessous. La racine carrée vaut 1. Diviser par celle-ci ne change rien, et q₁ ressort comme la colonne elle-même, avec le ε² rayé des registres. Chaque autre arrondi dans ce problème coûte une unité sur la dernière décimale. Celui-ci coûte trente degrés.
-
Passons à la colonne 2. Les deux versions s'accordent ici puisqu'il n'y a qu'un seul vecteur derrière. Le coefficient de projection est q₁ᵀa₂ = 1. Soustraire cette valeur laisse (0, −ε, ε, 0), dont la longueur est ε√2 = 1,4142 × 10⁻⁸. La colonne 2 est arrivée avec une longueur de 1 pour autant qu'un double puisse en juger, et tout sauf 1,4142 × 10⁻⁸ était déjà couvert par q₁.
-
Colonne 3, version classique. Le coefficient sur q₁ est encore 1. Le coefficient sur q₂ est q₂ᵀa₃. Comme q₂ vit entièrement dans les positions 2 et 3 tandis que a₃ garde son ε dans la position 4, ce produit scalaire vaut 0. C'est ce qu'indique la ligne Ce que q₂ retire à la colonne 3. Soustraire q₁ seul laisse (0, −ε, 0, ε), de longueur ε√2 là encore. La ligne Ce qu'il reste de la colonne 3 affiche donc également 1,4142 × 10⁻⁸.
-
Les vecteurs q₂ et q₃ ont tous deux été construits en retirant q₁ d'une colonne qui partage son 1 initial. Ils portent donc tous les deux −1/√2 dans la position 2 et n'ont rien d'autre en commun. Leur produit scalaire est un demi. L'outil imprime 0,5000 et 60,00°, et la valeur qu'il stocke est 0,4999999999999999, à une unité près du demi donné par l'algèbre, car ±1/√2 n'est pas une fraction binaire. C'est la taille d'erreur dont cette arithmétique est capable. Ce ne sont pas les trente degrés. La ligne de perte classique indique 0,7071, ce qui correspond à √(2 × 0,5²) : le même demi compté une fois dans chaque coin de QᵀQ.
-
La version modifiée, sur la même colonne. Une fois la part de q₁ retirée, le reste est (0, −ε, 0, ε), et cette version mesure par rapport à ce reste plutôt qu'à a₃. Le produit scalaire avec q₂ donne ε/√2 = 7,0711 × 10⁻⁹, et non zéro. Retirez cela et ce qui reste est (0, −ε/2, −ε/2, ε), de longueur ε√(3/2) = 1,2247 × 10⁻⁸. q₂ᵀq₃ sort à 1,1102 × 10⁻¹⁶ au lieu d'un demi. La ligne de perte modifiée affiche 1,1547 × 10⁻⁸. Tout ce qui y reste est ce que q₁ n'a pas pu enlever : la soustraction laisse −ε² couché le long de q₁, et diviser par un reste long de seulement ε√2 retransforme cela en ε/√2.
-
Le même argument vaut pour chaque nombre de colonnes proposé par l'outil. Le Gram-Schmidt classique construit chaque q ultérieur en retirant q₁ d'une colonne qui partage son 1 initial. Chaque paire entre eux ressort donc à 60° : (n − 1)(n − 2)/2 paires, avec une perte d'orthogonalité égale à la racine carrée de la moitié de ce compte. Avec deux colonnes, il n'y a pas de telles paires. Ce qui reste est l'inclinaison de taille ε que les deux versions partagent.
-
La ligne ajustée du mode classique atteint une perte de 1 à κ = 2,35 × 10⁸, ce qui explique pourquoi la courbe classique est déjà plate à l'extrémité droite du panneau. Le mode modifié obtient une borne mesurée plutôt qu'extrapolée. Sa propre courbe s'infléchit au-delà de 10⁻⁸ et une ligne ajustée prolongée si loin serait réfutée par le panneau en dessous. Sur les 724 points du balayage, sa perte n'a jamais dépassé 1,25 epsilon machine fois κ, et cette borne n'atteint 1 qu'à κ = 3,60 × 10¹⁵. L'inverse de l'epsilon machine est 4,50 × 10¹⁵.
Réponse
Les trente degrés sortent d'une seule ligne. Le mode classique lit q₂ᵀa₃ = 0 là où le mode modifié lit q₂ᵀv₃ = 7,0711 × 10⁻⁹, et sur le papier, ces deux nombres sont identiques.
La séparation de 10⁻⁸ est le premier cran où ε² disparaît de 1 + ε², puisque √(moitié de l'epsilon machine) vaut 1,0537 × 10⁻⁸. De là vers le bas, la cellule affiche 60,00° peu importe jusqu'où vous glissez. Un cran en arrière, à 10⁻⁷, elle indique 89,24° et le mode classique a déjà perdu 1,88 × 10⁻² d'orthogonalité. L'effondrement commence bien avant que le curseur n'atteigne le cran qui le rend net.
Åke Björck a publié l'analyse de la version modifiée en 1967, et ce réordonnancement est devenu la norme depuis. Les deux méthodes exécutent le même nombre de multiplications. À cet écartement, la perte d'orthogonalité entre elles diffère d'un facteur de 6,1 × 10⁷. Le mode modifié conserve ses angles droits jusqu'à peu près au point où un double cesse de pouvoir distinguer les colonnes du tout ; le mode classique les abandonne sept ordres de grandeur plus tôt. -
Références (5)
- The matrix the tool is built on, and the name it carries: P. Läuchli, "Jordan-Elimination und Ausgleichung nach kleinsten Quadraten", Numerische Mathematik 3(1), 226–240, 1961. doi:10.1007/BF01386022
- The analysis of the modified variant that made it the default: Åke Björck, "Solving linear least squares problems by Gram-Schmidt orthogonalization", BIT 7(1), 1–21, 1967. doi:10.1007/BF01934122
- The corresponding rounding-error analysis of the classical variant: Luc Giraud, Julien Langou, Miroslav Rozložník and Jasper van den Eshof, "Rounding error analysis of the classical Gram-Schmidt orthogonalization process", Numerische Mathematik 101(1), 87–100, 2005. doi:10.1007/s00211-005-0615-4
- Gram's paper of 1883, where the process is set out for least squares: J. P. Gram, "Ueber die Entwickelung reeller Functionen in Reihen mittelst der Methode der kleinsten Quadrate", Journal für die reine und angewandte Mathematik 1883(94), 41–73. doi:10.1515/crll.1883.94.41
- And Schmidt's of 1907, where the form used today appears: Erhard Schmidt, "Zur Theorie der linearen und nichtlinearen Integralgleichungen", Mathematische Annalen 63, 433–476, 1907. doi:10.1007/BF01449770