Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Implémentation de la Transformation Matricielle en Python | Fondements de l'Algèbre Linéaire
Mathématiques pour la Science des Données

Implémentation de la Transformation Matricielle en Python

Glissez pour afficher le menu

Résolution d’un système linéaire

Nous définissons un système d’équations :

2x+y=5xy=12x + y = 5 \\ x - y = 1

Ceci est réécrit comme suit :

123456789
import numpy as np A = np.array([[2, 1], # Coefficient matrix [1, -1]]) b = np.array([5, 1]) # Constants (RHS) x_solution = np.linalg.solve(A, b) print(x_solution)

Cela permet de trouver les valeurs de xx et yy qui satisfont les deux équations.

Pourquoi c'est important : la résolution de systèmes d'équations est fondamentale en science des données – de l'ajustement de modèles linéaires à la résolution de contraintes d'optimisation.

Application des transformations linéaires

On définit un vecteur :

v = np.array([[2], [3]])

Puis on applique deux transformations :

Mise à l'échelle

On étire xx par 2 et on comprime yy par 0,5 :

S = np.array([[2, 0],
              [0, 0.5]])

scaled_v = S @ v

Cela effectue :

Sv=[2000.5][23]=[41.5]S \cdot v = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} 4 \\ 1.5 \end{bmatrix}

Rotation

On fait tourner le vecteur de 90°90° dans le sens antihoraire à l'aide de la matrice de rotation :

theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])

rotated_v = R @ v

Ce qui donne :

Rv=[0110][23]=[32]R \cdot v = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} -3 \\ 2 \end{bmatrix}

Visualisation des transformations

À l'aide de matplotlib, chaque vecteur est tracé depuis l'origine, avec leurs coordonnées indiquées :

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define original vector v = np.array([[2], [3]]) # Scaling S = np.array([[2, 0], [0, 0.5]]) scaled_v = S @ v # Rotation theta = np.pi / 2 R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]]) rotated_v = R @ v # Vizualization origin = np.zeros(2) fig, ax = plt.subplots(figsize=(6, 6)) # Plot original ax.quiver(*origin, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original') # Plot scaled ax.quiver(*origin, scaled_v[0], scaled_v[1], angles='xy', scale_units='xy', scale=1, color='green', label='Scaled') # Plot rotated ax.quiver(*origin, rotated_v[0], rotated_v[1], angles='xy', scale_units='xy', scale=1, color='red', label='Rotated') # Label vector tips ax.text(v[0][0]+0.2, v[1][0]+0.2, "(2, 3)", color='blue') ax.text(scaled_v[0][0]+0.2, scaled_v[1][0]+0.2, "(4, 1.5)", color='green') ax.text(rotated_v[0][0]-0.6, rotated_v[1][0]+0.2, "(-3, 2)", color='red') # Draw coordinate axes ax.annotate("", xy=(5, 0), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.annotate("", xy=(0, 5), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.text(5.2, 0, "X", fontsize=12) ax.text(0, 5.2, "Y", fontsize=12) ax.set_xlim(-5, 5) ax.set_ylim(-5, 5) ax.set_aspect('equal') ax.grid(True) ax.legend() plt.show()

Pourquoi c'est important : les flux de travail en science des données incluent souvent des transformations, par exemple :

  • Analyse en Composantes Principales — rotation des données ;
  • Normalisation des caractéristiques — mise à l'échelle des axes ;
  • Réduction de dimensionnalité — projections.

En visualisant les vecteurs et leurs transformations, on observe comment les matrices déplacent et transforment littéralement les données dans l'espace.

question mark

Quel est le résultat de cette opération ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 6

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 4. Chapitre 6
some-alt