Un algorithme de calcul d'un inverse
Bonjour
Je dispose d'un algorithme de calcul dont je souhaite démontrer la validité.
Pour l'illustrer, je considère l'exemple de la détermination de l'inverse de $\bar8$ dans $\mathbb{Z}/37\mathbb{Z}.$
Je dispose d'un algorithme de calcul dont je souhaite démontrer la validité.
Pour l'illustrer, je considère l'exemple de la détermination de l'inverse de $\bar8$ dans $\mathbb{Z}/37\mathbb{Z}.$
Au début de son livre, Arithmétique, François Liret utilise l'équivalence $$a=bq+r~\Longleftrightarrow~ \begin{bmatrix} b \\ r \end{bmatrix}=\begin{bmatrix} 0 & 1 \\ {\color{Blue}1} & -q \end{bmatrix}.\begin{bmatrix} a \\ b \end{bmatrix}.$$Ici,$$\begin{bmatrix} 2 \\ 1 \end{bmatrix}=\begin{bmatrix} 0 & 1 \\ 1 & -1 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -1 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -1 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -4 \end{bmatrix}.\begin{bmatrix} 37 \\ 8 \end{bmatrix}.$$
On obtient successivement :
\begin{align*}\begin{bmatrix} 2 \\ 1 \end{bmatrix}&=\begin{bmatrix} 1 & -1 \\ {\color{Blue}-1}& 2 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -1 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -4 \end{bmatrix}.\begin{bmatrix} 37 \\ 8 \end{bmatrix}\\[1mm]
\begin{bmatrix} 2 \\ 1 \end{bmatrix}&=\begin{bmatrix} -1 & 2 \\ {\color{Blue}2} & -3 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -4 \end{bmatrix}.\begin{bmatrix} 37 \\ 8 \end{bmatrix} \\[1mm]
\begin{bmatrix} 2 \\ 1 \end{bmatrix}&=\begin{bmatrix} 2 & -9 \\ {\color{Blue}-3} & (-3)\times(-4)+2 \end{bmatrix}.\begin{bmatrix} 37 \\ 8 \end{bmatrix}\end{align*}
L'algorithme que je propose consiste simplement à écrire :
On obtient successivement :
\begin{align*}\begin{bmatrix} 2 \\ 1 \end{bmatrix}&=\begin{bmatrix} 1 & -1 \\ {\color{Blue}-1}& 2 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -1 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -4 \end{bmatrix}.\begin{bmatrix} 37 \\ 8 \end{bmatrix}\\[1mm]
\begin{bmatrix} 2 \\ 1 \end{bmatrix}&=\begin{bmatrix} -1 & 2 \\ {\color{Blue}2} & -3 \end{bmatrix}.\begin{bmatrix} 0 & 1 \\ 1 & -4 \end{bmatrix}.\begin{bmatrix} 37 \\ 8 \end{bmatrix} \\[1mm]
\begin{bmatrix} 2 \\ 1 \end{bmatrix}&=\begin{bmatrix} 2 & -9 \\ {\color{Blue}-3} & (-3)\times(-4)+2 \end{bmatrix}.\begin{bmatrix} 37 \\ 8 \end{bmatrix}\end{align*}
L'algorithme que je propose consiste simplement à écrire :
37..........8...........5..............3...............2....................1
..............-4..........-1............-1.............-1
................a.........−3...........2...............−1..................1..........0
..............-4..........-1............-1.............-1
................a.........−3...........2...............−1..................1..........0
Sur la première ligne, on écrit d'abord "37..........8........" puis les restes des divisions euclidiennes successives.
Sur la deuxième ligne, on écrit les quotients des divisions euclidiennes successives.
Puis on écrit les opposés des quotients toujours sur la deuxième ligne (d'où les -).
Enfin, sur la troisième ligne, on commence par la droite en écrivant "1........0" et on complète progressivement vers la gauche en faisant successivement :
(-1)*1+0=-1
(-1)*(-1)+1=2
(-1)*2+(-1)=-3
et enfin a=(-4)*(-3)+2, qui fournit l'inverse de $\bar8$ dans $\mathbb{Z}/37\mathbb{Z}$.
Sur la deuxième ligne, on écrit les quotients des divisions euclidiennes successives.
Puis on écrit les opposés des quotients toujours sur la deuxième ligne (d'où les -).
Enfin, sur la troisième ligne, on commence par la droite en écrivant "1........0" et on complète progressivement vers la gauche en faisant successivement :
(-1)*1+0=-1
(-1)*(-1)+1=2
(-1)*2+(-1)=-3
et enfin a=(-4)*(-3)+2, qui fournit l'inverse de $\bar8$ dans $\mathbb{Z}/37\mathbb{Z}$.
Je me suis efforcé d'être le plus clair possible ainsi que d'utiliser la couleur bleue de $\rm\LaTeX$ pour commencer à faire le lien entre la méthode exposée par François Liret et l'algorithme exposé. Me reste à achever, avec votre aide j'espère, la démonstration de la validité de l'algorithme.
Cordialement.
________________________
Remarque : j'avais déjà exposé cet algorithme dans un autre post mais comme il était noyé parmi d'autres informations, je me permets de le reposter ici.
Cordialement.
________________________
Remarque : j'avais déjà exposé cet algorithme dans un autre post mais comme il était noyé parmi d'autres informations, je me permets de le reposter ici.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
37..........8...........5..............3...............2....................1
..............-4..........-1............-1.............-1
................a.........−3...........2...............−1..................1..........0
que j'ai expliqué dans mon post.
Aussi, je ne considère pas que la réponse que j'attends y soit "entièrement détaillée".
Par ailleurs, j'ai parfaitement compris que l'écriture matricielle n'est qu'une autre présentation de l'algorithme d'Euclide, ce qui n'est pas difficile à comprendre.
Ce que j'écris dans mon papier revient à écrire
\begin{eqnarray*} a & = & 37\\ b & = & 8\left(q=4\right)\\ a-4b & = & 5\left(q=1\right)\\ -a+5b & = & 3\left(q=1\right)\\ 2a-9b & = & 2\left(q=1\right)\\ -3a+14b & = & 1 \end{eqnarray*} donc l'inverse de $\overline{8}$ dans $\mathbb{Z}/37\mathbb{Z}$ est $\overline{14}$. La présentation matricielle de ce que je viens d'écrire c'est ce que tu écris mais ça n'apporte rien au calcul précédent et ça cache le fonctionnement de l'algorithme (qui consiste juste à diminuer le plus vite possible une combinaison de $a$ et de $b$ pour obtenir la plus petite). Je pense que toute autre méthode ou présentation revient à faire les mêmes calculs mais en plus long... (sauf si on fait la petite variante consistant à autoriser des restes négatifs) qui donnerait : \begin{eqnarray*}a & = & 37\\ b & = & 8\left(q=5\right)\\ a-5b & = & -3\left(q=-3\right)\\ 3a-14b & = & -1 \end{eqnarray*} donc l'inverse de $\overline{8}$ dans $\mathbb{Z}/37\mathbb{Z}$ est $\overline{14}$. Bref, deux lignes suffisent
un défi :
1261........23........19..........4..........3........1
.................-54......-1..........-4.........-1
..................a.........-6............5........-1........1.......0
L'inverse de 23 dans Z/1261 est -54. (exemple pris au plus grand des hasards)
ça reste performant ?
\begin{eqnarray*}a & = & 1261\\ b & = & 23\left(q=54\right)\\ a-54b & = & 19\left(q=1\right)\\ -a+55b & = & 4\left(q=5\right)\\ 6a-329b & = & -1 \end{eqnarray*} Bref, 3 lignes : l'inverse est 329 (modulo 1261).
C'est exactement le même algorithme que toi, t'en rends-tu compte ? (mis à part que j'autorise des restes négatifs pour descendre le plus vite possible). Dans les pièces jointes, on démontre que l'algorithme donne une relation de Bézout, et on montre sa performance (qu'on majore en fonction du nombre de chiffres de $b$).
Si les deux algorithmes sont les mêmes, tant mieux; mais je t'avoue qu'avec tes $a$ et tes $b$ et tes $q$ non explicités, je ne m'en rends pas compte. Je lirai à tête reposée tes pièces jointes. En particulier le calcul de performance m'intéresse.
Al-Kashi