Matrixtransformatie Implementeren in Python
Oplossen van een lineair stelsel
We definiëren een stelsel van vergelijkingen:
2x+y=5x−y=1Dit wordt herschreven als:
123456789import 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)
Hiermee worden de waarden van x en y 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 x uit met 2 en comprimeren y met 0,5:
S = np.array([[2, 0],
[0, 0.5]])
scaled_v = S @ v
Dit voert uit:
S⋅v=[2000.5][23]=[41.5]Rotatie
We roteren de vector 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:
R⋅v=[01−10][23]=[−32]Visualisatie van de transformaties
Met behulp van matplotlib
plotten we elke vector vanuit de oorsprong, met hun coördinaten gelabeld:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import 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()
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.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 1.96
Matrixtransformatie Implementeren in Python
Veeg om het menu te tonen
Oplossen van een lineair stelsel
We definiëren een stelsel van vergelijkingen:
2x+y=5x−y=1Dit wordt herschreven als:
123456789import 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)
Hiermee worden de waarden van x en y 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 x uit met 2 en comprimeren y met 0,5:
S = np.array([[2, 0],
[0, 0.5]])
scaled_v = S @ v
Dit voert uit:
S⋅v=[2000.5][23]=[41.5]Rotatie
We roteren de vector 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:
R⋅v=[01−10][23]=[−32]Visualisatie van de transformaties
Met behulp van matplotlib
plotten we elke vector vanuit de oorsprong, met hun coördinaten gelabeld:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import 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()
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.
Bedankt voor je feedback!