Algorithme d'Euclide étendu et calcul matriciel

Algorithme d'Euclide étendu

A la main nous savons exprimer le pgcd de deux "petits" nombres comme combinaison linéaire de ces nombres

Le but est de modifier l'algorithme d'Euclide afin d'obtenir cette combinaison linéaire

Questions

  1. Copier coller le code Python suivant de l'algorithme d'Euclide

    
    def pgcd(a,b):
        r1 = a
        r2 = b
        while r2 != 0:
            temp = r1 
            r1 = r2
            r2 = temp % r1
        return r1
        
    a = int(input('Entrez un entier ')
    b = int(input('Entrez un entier ')	
    print('le pgcd de ',a,' et ',b,' est :',pgcd(a,b))
    
    
  2. On souhaite modifier l'algorithme précédent pour obtenir la combinaison linéaire du Théorème de Bezout

    Sachant que r1 = r2 (r1//r2) + r1 % r2 (Théorème de la division euclidienne) et que r1 = au1+bv1 et r2 = au2 +bv2 en déduire une expression de r1 % r2 comme combinaison linéaire de a et b

    Compléter le code suivant attention ce sont des variables dans un programme

    
    def pgcd(a,b):
        r1 = a
        r2 = b
        #r1 = au1 + bv1 et r2 = au2 + bv2
        u1 = ...
        v1 = ...
        u2 = ...
        v2 = ...
        while r2 != 0:
            #r1 = au1 + bv1 et r2 = au2 + bv2
            temp = ...
            u2 = ...
            u1 = temp
            
            temp = ...
            v2 = ...
            v1 = temp
            
            temp = r1 
            r1 = r2
            r2 = temp % r1
            
        return r1,u1,v1
        
    a = int(input('Entrez un entier ')
    b = int(input('Entrez un entier ')	
    print('le pgcd de ',a,' et ',b,' est :',pgcd(a,b))
    
    

Algorithme d'Euclide étendu et calcul matriciel

Questions

  1. Ecrire le passage du vecteur (u1,u2) au suivant (u2,u1-(r1//r2)u2) dans le langage du calcul matriciel
  2. Nous allons découvrir à travers des exemples le calcul matriciel avec Python, on travaille à la console avec le module numpy

    On entre deux matrices carrées d'ordre 2, M et N puis on calcule le produit MN

    
    >>>import numpy as np
    >>>M = np.array([[1,2],[3,4]])
    >>>N = np.array([[-1,2],[-3,4]])
    >>>P = np.dot(M,N)
    
    
  3. Ecrire l'algorithme d'Euclide étendu sous forme matricielle