Feuille d’exercices 7 – avancé#
Objectifs
Vecteurs
Matrices
Résolution de systèmes linéaires
Avertissement
Ces exercices sont prévus pour les étudiant·e·s ayant déjà réussi la feuille d’exercices « classiques ».
Exercice 6 : interprétation géométrique de certaines applications linéaires#
Les deux lignes suivantes permettent de déclarer dans une variable T un triangle de couleur bleue, sont les sommets sont les vecteurs de coordonnées \((1, 1), (1, 2), (3, 1)\) présents dans la liste L.
L = [vector([1,1]), vector([1, 2]), vector([3, 1])]
T = polygon(L, color="blue")
Question 1 : Exécutez la cellule ci-dessus, puis afficher ce triangle dans une figure pour laquelle les abscisses et les ordonnées varient entre \(-4\) et \(4\). Pour cela, on utilisera la méthode .show() de l’objet T, avec les arguments optionnels usuels : xmin=-1, xmax=4, ymin=-4 et ymax=4.
T.show(xmin=-4, xmax=4, ymin=-4, ymax=4)
Question 2 : On considère la matrice
Déclarer la matrice \(R\) pour \(\theta = \pi/3\)
Appliquer la matrice \(R\) à chacun des vecteurs de la liste
L, pour former ainsi une listeL2de \(3\) vecteurs.Créer puis afficher le triangle
T2correspondant à la listeL2, en rouge, et sur la même figure queT. Pour cette dernière étape, on suivra la syntaxe suivante :
FIG = T + T2
FIG.show(xmin=-4, xmax=4, ymin=-4, ymax=4)
Quelle transformation géométrique a été opérée sur le triangle ?
theta = pi/3
R = matrix([[cos(theta), -sin(theta)], [sin(theta), cos(theta)]])
L2 = [R*u for u in L]
T2 = polygon(L2, color="red")
FIG = T + T2
FIG.show(xmin=-4, xmax=4, ymin=-4, ymax=4)
On observe une rotation du triangle, d’angle \(\pi/3\), autour du point \((0, 0)\).
Question 3 : On considère la matrice
Déclarer la matrice \(S\)
Appliquer la matrice \(S\) à chacun des vecteurs de la liste
L, pour former ainsi une listeL3de \(3\) vecteurs.Créer puis afficher le triangle
T3correspondant à la listeL3, en vert, et sur la même figure queT.Quelle transformation géométrique a été opérée sur le triangle ?
S = matrix([[0, -1], [-1, 0]])
L3 = [S*u for u in L]
T3 = polygon(L3, color="green")
FIG = T + T3
FIG.show(xmin=-4, xmax=4, ymin=-4, ymax=4)
On observe une symétrie axiale d’axe la droite d’équation \(y = -x\).
Question 4 : On considère la matrice
Déclarer la matrice \(A\)
Appliquer la matrice \(A\) à chacun des vecteurs de la liste
L, pour former ainsi une listeL4de \(3\) vecteurs.Créer puis afficher le triangle
T4correspondant à la listeL4, en jaune, et sur la même figure queT.Quelle transformation géométrique a été opérée sur le triangle ?
A = matrix([[0.5, 0], [0, 0.5]])
L4 = [A*u for u in L]
T4 = polygon(L4, color="yellow")
FIG = T + T4
FIG.show(xmin=-4, xmax=4, ymin=-4, ymax=4)
On observe une homothétie de centre le point \((0,0)\) et de rapport \(1/2\).
Exercice 7 : modélisation d’un système linéaire#
Question 1. Déterminer l’ensemble des matrices à coefficients rationnels, de taille \(2 \times 2\), dont la trace vaut \(2\), et qui admettent le vecteur \((1, 3)\) dans leur noyau à gauche.
Les matrices recherchées sont de la forme \(M = \begin{pmatrix} a & b \\ c & d \end{pmatrix}\) où \((a, b, c, d)\) forme le vecteur des inconnues. Pour trouver l’ensemble des matrices \(M\) qui sont de trace égale à \(1\) et qui admettent \((1, 3)\) dans leur noyau à gauche, il faut expliciter les équations :
Il ne reste plus qu’à résoudre ce système de \(3\) équations à \(4\) inconnues.
A = matrix(QQ, [ [1, 0, 0, 1], [1, 0, 3, 0], [0, 1, 0, 3] ])
b = vector(QQ, [1, 0, 0])
x = A.solve_right(b)
K = A.right_kernel()
print("Les solutions de la forme x + v avec")
print("x = ", x)
print("et v un élément de l'espace vectoriel engendré par ")
print(K.basis())
Les solutions de la forme x + v avec
x = (1, 0, -1/3, 0)
et v un élément de l'espace vectoriel engendré par
[
(1, 3, -1/3, -1)
]
On en déduit que les matrices recherchées sont de la forme
Exercice 9 : matrice des pgcd#
On considère une matrice \(M_n\) de taille \(n \times n\), à coefficients entiers (donc rationnels), dont le coefficient d’indice \((i, j)\) est \({\rm pgcd}(i, j)\).
Question 1. Écrire une fonction matrice_pgcd(n) qui construite la matrice \(M\) pour la taille \(n\).
def matrice_pgcd(n):
L = [ [gcd(i+1, j+1) for j in range(n)] for i in range(n) ]
return matrix(QQ, L)
Question 2. Vérifier que \(M_n\) est symétrique pour toutes les valeurs de \(n\) entre \(1\) et \(20\).
print( all( matrice_pgcd(n).is_symmetric() for n in range(1, 21) ) )
True
Question 3. Combien vaut \({\rm Tr}(M_n)\) ? Vérifier le résultat avec Sagemath, pour des valeurs de \(n\) entre \(1\) et \(20\).
print( all( matrice_pgcd(n).trace() == n*(n+1)/2 for n in range(1, 21) ) )
True
Question 4. On note \(\phi(k)\) l’indicatrice d’Euler, c’est-à-dire le nombre d’entiers entre \(1\) et \(k\) qui sont premiers avec \(k\). Voir https://fr.wikipedia.org/wiki/Indicatrice_d%27Euler pour des détails. Écrire une fonction indicatrice_euler(k) qui prend en entrée un entier \(k\) et retourne \(\phi(k)\).
def indicatrice_euler(n):
return len([x for x in range(1, n+1) if gcd(x, n) == 1])
print(indicatrice_euler(12))
4
Question 5. Vérifier que \({\rm det}(M_n) = \prod_{i=1}^n \phi(k)\), pour des valeurs de \(n\) entre \(1\) et \(20\).
determinants = [ matrice_pgcd(n).det() for n in range(1, 21) ]
produits = [ 1 ]
for n in range(2, 21):
produits.append(produits[n-2]*indicatrice_euler(n))
print( all( determinants[n] == produits[n] for n in range(20) ) )
True