Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Matrixtransformatie Implementeren in Python | Grondslagen van Lineaire Algebra
Wiskunde voor Data Science

bookMatrixtransformatie Implementeren in Python

Oplossen van een lineair stelsel

We definiëren een stelsel van vergelijkingen:

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

Dit wordt herschreven als:

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)
copy

Hiermee worden de waarden van xx en yy gevonden die aan beide vergelijkingen voldoen.

Waarom dit belangrijk is: het oplossen van stelsels vergelijkingen is fundamenteel in data science – van het fitten van lineaire modellen tot het oplossen van optimalisatiebeperkingen.

Lineaire transformaties toepassen

We definiëren een vector:

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

Vervolgens passen we twee transformaties toe:

Schalen

We rekken xx uit met 2 en comprimeren yy met 0,5:

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

scaled_v = S @ v

Dit voert uit:

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}

Rotatie

We roteren de vector 90°90° tegen de klok in met behulp van de rotatiematrix:

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

rotated_v = R @ v

Dit levert op:

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}

Visualisatie van de transformaties

Met behulp van matplotlib plotten we elke vector vanuit de oorsprong, met hun coördinaten gelabeld:

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()
copy

Waarom dit belangrijk is: data science-workflows omvatten vaak transformaties, bijvoorbeeld:

  • Hoofcomponentenanalyse - roteert data;
  • Kenmerk-normalisatie - schaalt assen;
  • Dimensionaliteitsreductie - projecties.

Door vectoren en hun transformaties te visualiseren, zien we hoe matrices data letterlijk verplaatsen en hervormen in de ruimte.

question mark

Wat is de uitvoer van deze bewerking?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 6

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 1.96

bookMatrixtransformatie Implementeren in Python

Veeg om het menu te tonen

Oplossen van een lineair stelsel

We definiëren een stelsel van vergelijkingen:

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

Dit wordt herschreven als:

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)
copy

Hiermee worden de waarden van xx en yy gevonden die aan beide vergelijkingen voldoen.

Waarom dit belangrijk is: het oplossen van stelsels vergelijkingen is fundamenteel in data science – van het fitten van lineaire modellen tot het oplossen van optimalisatiebeperkingen.

Lineaire transformaties toepassen

We definiëren een vector:

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

Vervolgens passen we twee transformaties toe:

Schalen

We rekken xx uit met 2 en comprimeren yy met 0,5:

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

scaled_v = S @ v

Dit voert uit:

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}

Rotatie

We roteren de vector 90°90° tegen de klok in met behulp van de rotatiematrix:

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

rotated_v = R @ v

Dit levert op:

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}

Visualisatie van de transformaties

Met behulp van matplotlib plotten we elke vector vanuit de oorsprong, met hun coördinaten gelabeld:

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()
copy

Waarom dit belangrijk is: data science-workflows omvatten vaak transformaties, bijvoorbeeld:

  • Hoofcomponentenanalyse - roteert data;
  • Kenmerk-normalisatie - schaalt assen;
  • Dimensionaliteitsreductie - projecties.

Door vectoren en hun transformaties te visualiseren, zien we hoe matrices data letterlijk verplaatsen en hervormen in de ruimte.

question mark

Wat is de uitvoer van deze bewerking?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 6
some-alt