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)
../_images/80eb9689871d298dda50fd4cf9217a1b825b2440ca882c77730909d7a9aad87d.png

Question 2 : On considère la matrice

\[\begin{split} R = \begin{pmatrix} \cos(\theta) & -\sin(\theta) \\ \sin(\theta) & \cos(\theta) \end{pmatrix} \end{split}\]
  1. Déclarer la matrice \(R\) pour \(\theta = \pi/3\)

  2. Appliquer la matrice \(R\) à chacun des vecteurs de la liste L, pour former ainsi une liste L2 de \(3\) vecteurs.

  3. Créer puis afficher le triangle T2 correspondant à la liste L2, en rouge, et sur la même figure que T. Pour cette dernière étape, on suivra la syntaxe suivante :

FIG = T + T2
FIG.show(xmin=-4, xmax=4, ymin=-4, ymax=4)
  1. 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)
../_images/fbffff96cf37f491bba1a862cd24b3b869b99a986731b5fa33a1f70437fbcf41.png

On observe une rotation du triangle, d’angle \(\pi/3\), autour du point \((0, 0)\).

Question 3 : On considère la matrice

\[\begin{split} S = \begin{pmatrix} 0 & -1 \\ -1 & 0 \end{pmatrix} \end{split}\]
  1. Déclarer la matrice \(S\)

  2. Appliquer la matrice \(S\) à chacun des vecteurs de la liste L, pour former ainsi une liste L3 de \(3\) vecteurs.

  3. Créer puis afficher le triangle T3 correspondant à la liste L3, en vert, et sur la même figure que T.

  4. 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)
../_images/cffc05531d9d8d47dfb0812d2202cc853f8daa8a0012fec0de8995355169640a.png

On observe une symétrie axiale d’axe la droite d’équation \(y = -x\).

Question 4 : On considère la matrice

\[\begin{split} A = \begin{pmatrix} 1/2 & 0 \\ 0 & 1/2 \end{pmatrix} \end{split}\]
  1. Déclarer la matrice \(A\)

  2. Appliquer la matrice \(A\) à chacun des vecteurs de la liste L, pour former ainsi une liste L4 de \(3\) vecteurs.

  3. Créer puis afficher le triangle T4 correspondant à la liste L4, en jaune, et sur la même figure que T.

  4. 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)
../_images/ffad8e2a80f10723d485cbf2ad656c3a575c810c811a80e2165f3d8a1eee2d73.png

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}\)\((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 :

\[\begin{split} \begin{array}{ll} {\rm Tr(M) = 1} & \iff \; a + d = 1 \\ {\rm (1, 3)} \in {\rm Ker_g(M)} &\iff (1, 3) \cdot M \\ ~ & \iff a + 3c = 0 \;\text{ et } \; b + 3d = 0 \end{array} \end{split}\]

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

\[\begin{split} \begin{pmatrix} 1 & 0 \\ -1/3 & 0 \end{pmatrix} + \lambda \begin{pmatrix} 1 & 3 \\ -1/3 & -1 \end{pmatrix}, \quad \text{ pour } \lambda \in \mathbb{Q} \end{split}\]

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