Feuille d’exercices 7#
Objectifs
Vecteurs
Matrices
Résolution de systèmes linéaires
Exercice 1. Opérations élémentaires#
Question 1 : Effectuer les opérations élémentaires suivantes sur des vecteurs :
Créer le vecteur à coefficients réels \(v = (1.2, 0, -\sqrt{2})\).
Stocker dans \(w\) le vecteur nul (à coefficients réels) de longueur \(3\), puis effectuer le produit scalaire entre \(v\) et \(w\).
Créer le vecteur à coefficients réels \(u = (0.4, -1, \frac{\pi}{4})\), puis calculer \(v - 3u\).
v = vector(RR, [1.2, 0, -sqrt(2)])
print(v)
w = zero_vector(RR, 3)
print(w)
ps = v.inner_product(w)
print(ps)
u = vector(RR, [0.4, -1, pi/4])
print(v - 3 * u)
(1.20000000000000, 0.000000000000000, -1.41421356237310)
(0.000000000000000, 0.000000000000000, 0.000000000000000)
0.000000000000000
(-2.22044604925031e-16, 3.00000000000000, -3.77040805256544)
Question 2 : Effectuer les opérations élémentaires suivantes sur des matrices à coefficients rationnels :
Construire la matrice \(A = \begin{pmatrix} 2 & 0 \\ 1 & 1 \end{pmatrix}\) sur le corps des rationnels.
Calculer le déterminant de \(A\), puis l’inverse \(A^{-1}\) de \(A\).
Calculer la trace de \(A\) de deux manières : en utilisant la méthode
trace(), puis en sommant « à la main » les deux valeurs diagonales.Construire la matrice \(B = \begin{pmatrix} -1 & 3 & -1 \\ 0 & 2 & 4 \end{pmatrix}\).
Construire la matrice identité \(I_2\) de taille \(2 \times 2\) (que l’on stockera dans la variable
I2pour ne pas écraser le nombre complexe imaginaire pur)Calculer \(B^\top (A + 7 I_2)\).
A = matrix(QQ, [ [2, 0], [1, 1] ])
print(A)
[2 0]
[1 1]
print("Le déterminant vaut :", A.det())
print(A**(-1))
Le déterminant vaut : 2
[ 1/2 0]
[-1/2 1]
print("La trace vaut :", A.trace())
print("La trace vaut :", A[0,0] + A[1,1])
La trace vaut : 3
La trace vaut : 3
B = matrix(QQ, 2, 3, [-1, 3, -1, 0, 2, 4] )
print(B)
[-1 3 -1]
[ 0 2 4]
I2 = matrix.identity(QQ, 2)
print(I2)
[1 0]
[0 1]
C = B.transpose() * (A + 7 * I2)
print(C)
[-9 0]
[29 16]
[-5 32]
Exercice 2. Noyau, image et théorème du rang#
Question 1 : Construire la matrice à coefficients rationnels
puis calculer le noyau et l’image de l’application \(x \in \mathbf{Q}^4 \mapsto Mx \in \mathbf{Q}^3\).
M = matrix(QQ, 3, 4, [1, 1, 1, 1, 2, 3, 4, 5, -1, -2, -3, -4])
noyau = M.right_kernel()
image = M.column_space()
print("Matrice :")
print(M)
print("\nNoyau :")
print(noyau)
print("\nImage :")
print(image)
Matrice :
[ 1 1 1 1]
[ 2 3 4 5]
[-1 -2 -3 -4]
Noyau :
Vector space of degree 4 and dimension 2 over Rational Field
Basis matrix:
[ 1 0 -3 2]
[ 0 1 -2 1]
Image :
Vector space of degree 3 and dimension 2 over Rational Field
Basis matrix:
[ 1 0 1]
[ 0 1 -1]
Question 2 : Vérifier que le théorème du rang est bien satisfait pour la matrice \(M\).
print(M.rank() + M.right_kernel().dimension() == M.ncols())
True
Exercice 3. Résolution de systèmes linéaires#
Question 1 : Trouver une solution au système linéaire :
On vérifiera que la solution donnée par Sagemath est bien correcte.
A = matrix(3, 3, [-1, 0, 2, 0, 1, 1, 1, -2, -5])
b = vector([1, 2, 3])
x = A.solve_right(b)
print(x)
print(A*x == b)
(-17, 10, -8)
True
Question 2 : Décrire l’ensemble des solutions du système d’équations linéaires
A = matrix(3, 4, [-1, 0, 2, -1, 3, 2, 1, 2, 1, -2, -5, 0])
b = vector([1, 2, 3])
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 = (7/2, -43/8, 9/4, 0)
et v un élément de l'espace vectoriel engendré par
[
(0, 5, -2, -4)
]
Exercice 4 : transposée et matrice symétrique#
Question 1. Créer la matrice \(V\) de taille \(8 \times 8\) ayant comme coefficient \((i, j)\) l’entier \(j^{i-1}\) pour \(1 \le i \le 8\) et \(1 \le j \le 8\).
n = 8
L = [ [j**i for j in range(1, n+1)] for i in range(0, n) ]
V = matrix(QQ, L)
print(V)
[ 1 1 1 1 1 1 1 1]
[ 1 2 3 4 5 6 7 8]
[ 1 4 9 16 25 36 49 64]
[ 1 8 27 64 125 216 343 512]
[ 1 16 81 256 625 1296 2401 4096]
[ 1 32 243 1024 3125 7776 16807 32768]
[ 1 64 729 4096 15625 46656 117649 262144]
[ 1 128 2187 16384 78125 279936 823543 2097152]
Question 2. Calculer la transposée \(V^\top\) de la matrice \(V\). Puis, vérifier avec le mot-clef all que \(V_{i,j} = V^\top_{j ,i}\) pour tous \(1 \le i \le 8\) et \(1 \le j \le 8\).
Vt = V.transpose()
test = all( V[i,j] == Vt[j,i] for i in range(8) for j in range(8) )
print(test)
True
Question 3. Calculer \(S = V \cdot V^\top\) et vérifier que \(S\) est symétrique avec la méthode is_symmetric().
S = V * Vt
print(S.is_symmetric())
True
La matrice \(V\) est une matrice de Vandermonde. On sait donc théoriquement que son déterminant est
Question 4. Vérifier le résultat énoncé ci-dessus.
D = 1
for k in range(1, 9):
for j in range(k+1, 9):
D *= (j-k)
det = V.determinant()
print(det)
print(D)
print(D == det)
125411328000
125411328000
True
Exercice 5 : base et famille libre#
Soient \(u, v, w\) les trois vecteurs suivants :
Question 1 : Les trois vecteurs \(u\), \(v\) et \(w\) forment-ils une famille libre dans \(\mathbb{Q}^4\) ?
u = [-104, 242, -17, 330]
v = [322, -744, 90, -1119]
w = [-19, 43, -9, 76]
M = matrix(QQ, [u, v, w])
print(M.rank())
3
Le rang est \(3\), donc la famille est libre.
Question 2 (plus ouverte) : Compléter \((u, v, w)\) avec un vecteur \(z \in \mathbb{Q}^4\) pour former une base de \(\mathbb{Q}^4\), de sorte que la matrice \(M\) formée des \(4\) vecteurs \((u, v, w, z)\) soit de déterminant égal à \(1\).
Idée : on tire des vecteurs \(z\) aléatoires dans l’espace \(\mathbb{Q}^4\), puis on teste si \(z\) complète la famille libre \((u, v, w)\) en une base. Si ce n’est pas le cas, on recommence. si c’est le cas, il ne reste plus qu’à normaliser \(z\).
z = vector(QQ, [randint(-5, 5) for i in range(4)])
while (z in M.row_space()):
z = vector(QQ, [randint(-5, 5) for i in range(4)])
N = matrix(QQ, [u, v, w, z])
print(N.det())
z = z/N.det()
N = matrix(QQ, [u, v, w, z])
print(N)
print(N.det())
-33420
[ -104 242 -17 330]
[ 322 -744 90 -1119]
[ -19 43 -9 76]
[-1/8355 0 1/33420 -1/6684]
1