Algèbre effective : autour de l'algorithme d'Euclide

Algèbre effective : autour de l'algorithme d'Euclide

I Décimales des rationnels

Algorithme d'Euclide → I Décimales des rationnels

Voici le développement décimal de quelques rationnels :

= 000 ...

= 000 ...

= 000 ...


La première remarque est que ces développements semblent périodiques à partir d'un certain rang (cliquer sur l'étoile pour en voir d'autres).

I-1 Périodicité


Voici maintenant quelques développements à dénominateur fixé.
=
=
=
=
=

Que pouvez-vous conjecturer ? Comment prévoir la taille des décalages ?

I-2 Dénominateur fixé


Et maintenant, comment calculer un chiffre quelconque du développement décimal :

I-3 Calculer un chiffre quelconque

Algorithme d'Euclide → I Décimales des rationnels

I-1 Périodicité

Théorème

Le développement décimal d'un rationnel (positif) est périodique à partir d'un certain rang. Plus précisément, écrivons le rationnel
comme une fraction irréductible avec p et q des entiers positifs et q premier à 10p. Soit n0 = max(a, b) et soit P l'ordre de 10 modulo q, c'est-à-dire le plus petit entier strictement positif tel que
Alors, le développement décimal de x est de la forme bm ... b0,a1 ... an ... avec pour n > n0.

Exercice


Développement périodique mixte
Périodicité et ordre de 10

I-2 Dénominateur fixé

Algorithme d'EuclideI Décimales des rationnels → I-2 Dénominateur fixé

Pouvez-vous prévoir de combien est le décalage quand il y en a un ? Pourquoi pour certains dénominateurs, le motif en vert se retrouve-t-il sur chaque ligne alors que pour d'autres dénominateurs cela n'est pas le cas ? Dans le tableau de droite, on a calculé les valeurs des puissances de 10 modulo . Cela peut peut-être vous aider à répondre.

Résultat

Soit r le reste de la division euclidienne de 10i par b. Le développement décimal de est obtenu en décalant la virgule (ou le point ici !) de i positions vers la droite dans le développement de et en prenant la partie fractionnaire du nombre obtenu.

Démonstration
On écrit 10i = r + q b avec r un entier positif strictement inférieur à b. Donc,
La partie fractionnaire du développement décimal de est égale au développement décimal de et il ne reste plus qu'à réfléchir à l'effet de la multiplication par une puissance de 10 sur le développement ...

Remarque

Supposons le dénominateur b premier à 10. Si P est l'ordre de 10 modulo b, le nombre de valeurs différentes que prend 10i modulo b pour i entier est égale à P.
En utilisant cette remarque et en regardant simplement les développements décimaux à gauche, on peut deviner quel est l'ordre de 10 modulo . Bien sûr, cela se voit aussi avec les valeurs de droite.

Algorithme d'EuclideI Décimales des rationnels → I-2 Dénominateur fixé

I-3 Calculer un chiffre quelconque

Algorithme d'EuclideI Décimales des rationnels → I-3 Calculer un chiffre quelconque

Objectif

Comment calculer un chiffre quelconque du développement décimal de par exemple le n-ième, alors qu'on ne possède qu'une calculette avec peu de chiffres après la virgule ?

Résultat

  • Pour amener ce chiffre en première position après la virgule, on multiplie par .
    Par exemple, 105 times 0.098795181 =9879.5181
  • On écrit avec r un entier positif strictement inférieur à b. Donc,
    Le premier chiffre après la "virgule" de est donc égal au premier chiffre après la virgule de . Il suffit donc de calculer le premier chiffre (sur la gauche) du quotient de 10r par b.

Exercice


Arithmétique du développement
Arithmétique du développement, suite
Calculer le développement
Algorithme d'EuclideI Décimales des rationnels → I-3 Calculer un chiffre quelconque

II Application de l'algorithme de Bezout

Algorithme d'Euclide → II Application de l'algorithme de Bezout
Algorithme d'Euclide → II Application de l'algorithme de Bezout

II-1 Retrouver une fraction à partir de son développement décimal

Algorithme d'EuclideII Application de l'algorithme de Bezout → II-1 Retrouver une fraction à partir de son développement décimal

Objectif

On connaît un nombre rationnel positif par son développement décimal à près. On sait d'autre part que son dénominateur est borné par T. Calculer x.

Analyse

Soit N = 10k. Soit b la partie entière de Nx. Elle est inférieure à N. Disons que l'approximation était donnée par défaut. on a donc
et donc
On peut donc écrire s N - t b = r avec r un entier vérifiant 0 < r < t < T. On cherche donc des solutions de l'équation
vérifiant certaines inégalités.

Résultat

On fait tourner l'algorithme de Bezout sur N et b. Soit ri le premier reste inférieur ou égal à T. On obtient une équation

Si , alors a bien les propriétés voulues pour x.

Algorithme d'EuclideII Application de l'algorithme de Bezout → II-1 Retrouver une fraction à partir de son développement décimal

II-2 Un exemple à partir d'un rationnel

Algorithme d'EuclideII Application de l'algorithme de Bezout → II-2 Un exemple à partir d'un rationnel

Exemple

Dans l'exemple ci-dessous que vous pouvez changer,
le nombre rationnel choisi à l'avance est et son développement décimal à près est 0,.
  • Voyez-vous le rationnel ?
  • A-t-on la majoration 2 2 < 10-9.223372 × 1018 ? Vous pouvez augmenter ou diminuer la précision.
Algorithme d'EuclideII Application de l'algorithme de Bezout → II-2 Un exemple à partir d'un rationnel

II-3 Est-ce un rationnel ?

Exemple



Vous pouvez ici donner

Vous cherchez un rationnel dont le développement décimal est donné à près par 0,372677724. Si vous voulez le trouver à coup sûr ou être sûr qu'il n'existe pas, vous devez imposer que son dénominateur est borné par . Voyez-vous le rationnel ? Existe-t-il ?

Pour voir la solution théorique, voir ce théorème .

Exercice

Recherche d'un rationnel

II-4 Un théorème pour pouvoir répondre

Algorithme d'EuclideII Application de l'algorithme de Bezout → II-4 Un théorème pour pouvoir répondre
Algorithme d'EuclideII Application de l'algorithme de Bezout → II-4 Un théorème pour pouvoir répondre

II-4-1 L'algorithme de Bezout

Soient a et b des entiers positifs avec . Définissons
  • les entiers r0, ... , et q1, ... , qm avec de la manière suivante : a = r0, b = r1, ... , avec et ; les qi sont strictement positifs.
  • les entiers s0, s1, ... , et t0, t1, ... , par s0 = 1, t0 = 0, s1 = 0, t1 = 1 et
Alors
  1. ri = si a + ti b pour tout i = 0 ... m+1 ;
  2. ;
  3. pgcd(si,ti) = 1 pour tout i = 0 ... m+1 ;
  4. et pour tout i = 0 ... m ; et pour tout i = 1 ... m
  5. et pour tout i = 1 ... m+1.

On peut disposer les calculs précédents de la manière suivante :
q3 est par exemple le quotient de r2 par r3 et où la ligne L4 est obtenue comme la ligne L2 - q3 fois la ligne L3.
Démonstration
On peut supposer . On définit et comme précédemment, ainsi que les suites définies par récurrence :
  • t0 = 0, t1 = 1, , .
  • s0 = 1, s1 = 1, , .
Alors pour tout
et on peut voir l'algorithme d'Euclide étendu comme une suite d'opérations élémentaires sur les lignes de ce système; donc, pour tout , on a
où la dernière matrice est l'identité. On en déduit que et donc
Mais cet inverse est aussi le produit des
dont tous les coefficients sont positifs, donc tous ses coefficients sont positifs ! On en déduit
Donc , et en particulier
  
  
et
  
  

(Rappelons que ri est strictement décroissante avec rm = pgcd (a, b) et .)
Les ti sont de signe alterné, ce qui se voit en comparant les matrices égales
On a donc . Comme qi > 0, nécessairement . On fait de même pour les si.

On démontre que le coût est en pour a et b inférieurs à N.

II-4-2 Le théorème en vue


Soient R, T, N, b des entiers strictement positifs tels que . On fait tourner l'algorithme d'Euclide étendu avec comme entrées a = N et b. Soit l'unique indice i compris entre 1 et m + 1 tel que
[ ti est alors non nul]. On pose

Théorème

Soient R, T, N, b des entiers strictement positifs tels que Soient trois entiers r, s, t tels que r = s N + t b, , . Alors, avec les notations précédentes, le triplet (r, s, t) est un multiple entier de (r', s', t').
Attention, on n'affirme pas qu'il y a une solution, il faut ensuite vérifier que et que est inférieur à T. Par contre, si (r',s',t') ne fournit pas une solution sous les conditions de l'énoncé , c'est qu'il n'y en a pas.
Démonstration
Soient r, s, t trois entiers relatifs vérifiant
Les trois vecteurs , et appartiennent au plan d'équation x = N y + b z. On a donc
Comme , les coefficients m et n sont entiers.
  • Supposons m et n de même signe (ou nuls). Si n est non nul, , (car ri, sont positifs), ce qui est impossible. Donc
  • Si m et n sont de signe contraire, nécessairement puisque ti et sont de signe différent et que . Donc
    et

    Les trois vecteurs colonne de la matrice sont liés, leur déterminant est nul et le déterminant de est congru à 0 modulo N :
    Finalement ri t - r ti = 0. Le vecteur v est combinaison linéaire de vi et de . Comme v et vi appartiennent à un plan qui ne contient pas e, ils sont colinéaires.

Ce qui termine la démonstration.

Exercice

Montrer que le théorème précédent donne un algorithme pour déterminer un rationnel connaissant une borne pour son dénominateur et le début de son développement décimal sous certaines conditions. Montrer que le coût de cet algorithme de recherche d'un rationnel est en . Il est donc au pire quadratique en la taille de N.
Démonstration
On se donne donc une puissance de 10, N = 10n. On cherche un rationnel inférieur à 1 dont on connaît le développement décimal à l'ordre n (par défaut ou par excès) et dont on sait que son dénominateur est inférieur à T.
On applique le théorème précédent avec R = T. On suppose que . Si le rationnel existe, il s'agit de avec . Mais il faut vérifier que . Si cela n'est pas le cas, c'est qu'il n'y a pas de solution.
On a prouvé en particulier qu'il existe au plus un seul rationnel dont le développement décimal à l'ordre n est donné et de dénominateur borné par .

II-5 Retrouver un entier par ses classes résiduelles, même si certaines sont fausses


Objectif

On a codé un entier x en calculant ses classes résiduelles modulo des entiers N1, ... , Nr premiers entre eux deux à deux : c(x) = (x1, ... , xr). L'entier est supposé plus grand que x. Mais dans la transmission de c(x), des erreurs sont survenues. Pas trop quand même, au plus L des (x1, ... , xr) sont faux. Retrouver cependant x.

Résultat

On suppose que x est inférieur à un entier Z fixé. Soit P une borne supérieure pour le produit de L parmi les entiers N1, ... , Nr (par exemple, le produit des L plus grands). On suppose que N > 4P2 Z.
Soit c1(x) = (y1, ... , yr) les classes transmises effectivement. Par le lemme chinois, il existe un entier y vérifiant
pour tout i. On applique l'algorithme d'Euclide étendu à l'entier N et à y. Soit i le plus grand entier tel que le reste ri obtenu par l'algorithme soit inférieur ou égal à Z P. On pose r' = ri, s' = si, t' = ti.

Théorème

Si t' divise r', est une solution possible.

On démontre que le coût est en .
Démonstration
Soit t le produit des Ni pour lesquels la transmission de xi est fausse. On ne connaît bien sûr pas encore t. Par définition de P, t est inférieur ou égal à P.
Posons r = t zz est l'entier cherché (le vrai message). Par hypothèse, z est inférieur à Z, donc
D'autre part
En effet, r et t y sont tous deux congrus à 0 modulo Ni si Ni est mauvais, (dans ce cas, Ni divise t) ; pour Ni bon, comme , r = t x et t y sont bien congrus modulo Ni. Soit s l'entier tel que
Comme , et , on peut appliquer le théorème : (r, s, t) est un multiple entier de (r', s', t') et
Si t' divise r', l'entier est la solution cherchée. Sinon, c'est qu'il y a d'autres fautes dans la transmission du message.

Exercice

Erreur dans un message Vous pouvez regarder l'exemple avant.

II-6 Un exemple


On sait que le message est inférieur à NaN et qu'il y a au plus deux erreurs. Les classes résiduelles transmises sont
  • mod 3
  • mod 4
  • mod 7
  • mod 11
  • mod 17
  • mod 23
  • mod 29

Par le lemme chinois, on trouve que l'entier transmis est . L'algorithme d'Euclide appliqué à 3×17×4×7×11×29×23 = et donne
Regardons la première ligne où le reste (colonne de gauche) est strictement inférieur à NaN =. Le nombre cherché est .

III Fractions rationnelles

Algorithme d'Euclide → III Fractions rationnelles

Maintenant, nous allons voir quelques analogies du côté des fractions rationnelles.

III-1 Approximant de Padé

III-2 Un exemple

III-3 Séries de Laurent

III-4 Les coefficients

Algorithme d'Euclide → III Fractions rationnelles

III-1 Approximant de Padé

Algorithme d'EuclideIII Fractions rationnelles → III-1 Approximant de Padé

Définition

Soit F un corps et f une série formelle
avec fi dans F. Un (k, n - k)-approximant de Padé de f est une fraction rationnelle telle que
  • x ne divise pas t
  • ,
Soit f un polynôme de degré strictement inférieur à n et k un entier strictement inférieur à n. On exécute l'algorithme d'Euclide étendu pour xn et f. Soient ri les restes successifs obtenus. La suite des est strictement décroissante. Soit j le plus petit entier tel que . On pose r' = rj, s' = sj, t' = tj avec les notations de l'algorithme :

Théorème

Avec les notations précédentes, les polynômes r' et t' vérifient
  • , .
Pour tous polynômes s et t tels que r = s xn + t f avec , , on a (r, s, t) = w (r', s', t') pour w un polynôme.
Ainsi, si est irréductible, c'est un (k, n - k)-approximant de Padé.
Démonstration
Exercice !

Exercice

Approximant de Padé

Algorithme d'EuclideIII Fractions rationnelles → III-1 Approximant de Padé

III-2 Un exemple

Exemple



Les égalités suivantes permettent de déterminer des approximants de Padé du polynôme de Taylor de ch(x) d'ordre 4 :
Dans le dessin qui suit, on a représenté sur l'intervalle [-2,2] la différence entre ch(x) et un approximant de Padé

III-3 Séries de Laurent

Algorithme d'EuclideIII Fractions rationnelles → III-3 Séries de Laurent

Définition

  • Une série formelle à coefficients dans un anneau R est une expression formelle de la forme f = a0 + a1 X + ... an Xn + ... avec les
  • Une série de Laurent est une expression formelle de la forme pour un entier relatif m.
  • Une série de Laurent renversée est une expression formelle de la forme .

On peut définir le degré d'une série de Laurent inversée f comme le plus grand entier m tel que am soit non nul ; et le coefficient dominant comme am ; on peut aussi définir la somme et le produit de deux séries de Laurent renversées

Définition

L'ensemble des séries de Laurent renversées forme un anneau appelé anneau des séries de Laurent renversées et noté

Remarque

Une série de Laurent renversée avec a un inverse si et seulement si son coefficient dominant am est inversible dans l'anneau des coefficients. Autrement dit, si F est un corps, est un corps.

L'analogie avec le développement décimal des réels est clair.
Pour voir une fraction rationnelle comme une série de Laurent renversée lorsque F est un corps, on écrit le numérateur et le dénominateur en mettant en facteur leur terme de plus haut degré, puis on fait le quotient.

Algorithme d'EuclideIII Fractions rationnelles → III-3 Séries de Laurent

III-4 Les coefficients

Algorithme d'EuclideIII Fractions rationnelles → III-4 Les coefficients

On désire calculer le développement d'une fraction rationnelle : par exemple, étant donné k un entier positif, on veut calculer le coefficient de .

Résultat

On calcule avec .
Le coefficient de est le résidu de : si , c'est le quotient des coefficients dominants de h et de t ; si , c'est 0.

Démonstration
Le coefficient cherché est le résidu (c'est-à-dire coefficient de ) de . Comme , on a


Exemple


On a

Le coefficient de dans vu comme élément de est .

Exercice

Trouver un coefficient
Algorithme d'EuclideIII Fractions rationnelles → III-4 Les coefficients

IV L'algorithme d'Euclide : son coût

Algorithme d'Euclide → IV L'algorithme d'Euclide : son coût
.
Avant de commencer, rappelons quelques notations et coûts des opérations élémentaires

IV-1 Combien ça coûte ?


Les nombres de Fibonacci permettent d'analyser le coût de l'algorithme d'Euclide.

IV-2 Nombres de Fibonacci

IV-3 Analyse de l'algorithme d'Euclide


L'algorithme du pgcd étendu permet d'obtenir des relations du type Bezout :

IV-4 Pgcd étendu

Algorithme d'Euclide → IV L'algorithme d'Euclide : son coût

IV-1 Combien ça coûte ?


Pour , on note
la taille de a. Justification: le nombre de chiffres de a, écrit en base B est , donc la taille est liée au nombre de chiffres, sans pour autant dépendre de la base de numération, ni de la représentation des entiers. On rajoute 1 pour assurer que et donc pouvoir écrire qu'une constante est . Remarquons aussi que implique .
Si , alors les algorithmes de l'école primaire (en comptant les opérations élémentaires sur les chiffres) montrent que
  • le calcul de a un coût
  • le calcul de a un coût
  • le calcul de (q,r), quotient et reste de la division euclidienne de a par b ( ), a un coût soit .

IV-2 Nombres de Fibonacci


Les Fi sont les nombres de Fibonacci définis par la récurrence linéaire

Les équations
permettent de calculer les nombres de Fibonacci.

Analyse [calcul récursif de Fn.]

Soit Cn une majoration du coût du calcul d'un Fi pour et mn une majoration de celui nécessaire pour multiplier deux entiers inférieurs à . Les équations précédentes impliquent que
pour tout . Comme , il a O(n) chiffres, et la multiplication naïve donne
En choisissant , on obtient Cn = O(n2).
Plus généralement, sous l'hypothèse pour , on obtient
car n = O(mn).

Remarque

Si on pose , alors les relations de récurrences ci-dessus montrent que Tn se calcule facilement en fonction de  :
et

Si tn majore le coût du calcul de , on a (la multiplication par 2 est une addition).

Gros avantage : l'option remember n'est plus nécessaire, puisque aucun résultat n'est calculé plusieurs fois. Le coût en mémoire est bien moindre.

IV-3 Analyse de l'algorithme d'Euclide

Algorithme d'EuclideIV L'algorithme d'Euclide : son coût → IV-3 Analyse de l'algorithme d'Euclide

Pour , on définit le pgcd (a,b) de a et b comme le générateur positif de l'idéal . En particulier (0,0) = 0.

Algorithme

Étant donnés , l'algorithme calcule leur pgcd (a,b).
  1. Fini?. Si b = 0, renvoyer a.
  2. division euclidienne. Poser (dans cet ordre) , a := b, b := r, et revenir à l'étape 1.

Démonstration
Les valeurs successives de b forment une suite décroissante (bi) dans . Cette suite est strictement décroissante tant que . Il existe donc i tel que bi = 0 (sinon on aurait une suite strictement décroissante dans ). Donc l'algorithme termine. On vérifie facilement que la valeur de retour est (a,b).

La formulation récursive est plus élégante, mais bien sûr équivalente:

Algorithme

Étant donnés , l'algorithme calcule leur pgcd (a,b).
  1. Si b = 0, renvoyer a.
  2. Renvoyer pgcd .

Théorème

Soit et a, b deux entiers a > b > 0 tels que l'algorithme d'Euclide appliqué à (a,b) nécessite exactement n divisions, et tels que a soit minimal pour ces conditions. Alors
où les Fi sont les nombres de Fibonacci définis par la récurrence linéaire
F0 = 0, F1 = 1.

Démonstration
En appliquant Euclide au couple proposé, on obtient successivement
soit exactement n divisions. Réciproquement, soit (a,b) satisfaisant les conditions de l'énoncé et notons , xn = b, ... , x0 = 0 la suite des 2 données, suivies des n restes calculés par Euclide. Par récurrence, on a pour tout . Soit le quotient de la division euclidienne de par xi; on a
On en déduit que pour tout par récurrence. Comme a est minimal, on en déduit , puis que les quotients successifs sont tous égaux à 1. Ainsi xi = Fi, et en particulier b = Fn.

Lemme

Soit Fn le n-ème nombre de Fibonacci, défini ci-dessus, et
les solutions de l'équation x2 = x+1. On a

Démonstration
L'équation caractéristique de la récurrence x2 = x + 1 admet pour solution le nombre d'or et son conjugué. Donc, il existe des constantes universelles a et b telles que
En posant F0 = 0, F1 = 1, on trouve

Corollaire

Si a > b > 0, le nombre d'étapes d'Euclide appliqué à (a,b) est majoré par

Démonstration
Si on a n - 1 divisions, on obtient
soit
(puisque ) et

Corollaire

Si , le coût du calcul de (a,b) est

En fait, on peut facilement faire mieux :

Lemme

Si , le coût du calcul de (a,b) est

Démonstration
On peut supposer que a > b > 0. Supposons, qu'on ait exactement n divisions; on sait que . On note , xn = b, , x0 = 0, la suite des restes successifs, puis pour i=1, ... , n, la suite des quotients successifs correspondants; autrement dit,
pour . Le coût des divisions est dominé par
et on remarque ensuite que
Soit finalement un coût .
Algorithme d'EuclideIV L'algorithme d'Euclide : son coût → IV-3 Analyse de l'algorithme d'Euclide

IV-4 Pgcd étendu


Algorithme

Étant donnés deux entiers positifs a et b, l'algorithme calcule d = (a,b), et des entiers relatifs s et t tels que a s + b t = d.
  1. Si a = 0, renvoyer d = b, s = 0, t = 1.
  2. On pose x = a, y = b, sx = 0, ty = 1.
  3. Tant que
    1. trouver q, r réalisant la division euclidienne x = q y + r.
    2. remplacer (tx, ty) par (ty, tx - qty).
    3. remplacer (x, y) par (y, x - q y)
  4. Renvoyer d = x, , et t = tx.

Démonstration
(x,y) prennent les mêmes valeurs que dans l'algorithme d'Euclide, donc l'algorithme étendu termine après le même nombre de boucles. La démonstration de l'assertion du (3) est immédiate par récurrence. On en déduit qu'en (4), , donc . Le résultat suit.

Tout au long de l'algorithme d'Euclide étendu, on a
En particulier les coefficients de l'identité de Bezout s a + t b = d obtenus satisfont et .

Corollaire

Si a et b sont inférieurs à N, le coût d'obtention du pgcd de a et b et des coefficients de Bezout est .

Démonstration
Le coût est dominé par
en majorant , et comme dans la section précédente. On a majoré le coût des soustractions par

V Tous les exercices WIMS

Algorithme d'Euclide → V Tous les exercices WIMS
  • Développement périodique mixte
  • Périodicité et ordre de 10
  • Arithmétique du développement
  • Arithmétique du développement, suite
  • Calculer le développement
  • Recherche d'un rationnel
  • Erreur dans un message
  • Approximant de Padé
  • Trouver un coefficient
Algorithme d'Euclide → V Tous les exercices WIMS

document autour des rationnels et de l'algorithme d'Euclide du point de vue algorithmique.
: rational_number,euclidean_algorithm,algorithmics, interactive mathematics, interactive math, server side interactivity

The most recent version

Cette page n'est pas dans son apparence habituelle parce que WIMS n'a pas pu reconnaître votre navigateur web.
Afin de tester le navigateur que vous utilisez, veuillez taper le mot wims ici : puis appuyez sur ``Entrer''.

Veuillez noter que les pages WIMS sont générées interactivement; elles ne sont pas des fichiers HTML ordinaires. Elles doivent être utilisées interactivement EN LIGNE. Il est inutile pour vous de les ramasser par un programme robot.