Implementering av Matrise-Transformasjon i Python
Løsning av et lineært ligningssystem
Vi definerer et ligningssystem:
2x+y=5x−y=1Dette kan skrives om som:
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)
Dette finner verdiene til x og y som oppfyller begge ligningene.
Hvorfor dette er viktig: Å løse ligningssystemer er grunnleggende i data science – fra tilpasning av lineære modeller til løsning av optimeringsbetingelser.
Anvendelse av lineære transformasjoner
Vi definerer en vektor:
v = np.array([[2], [3]])
Deretter anvender vi to transformasjoner:
Skalering
Vi strekker x med 2 og komprimerer y med 0,5:
S = np.array([[2, 0],
[0, 0.5]])
scaled_v = S @ v
Dette utfører:
S⋅v=[2000.5][23]=[41.5]Rotasjon
Vi roterer vektoren 90° mot klokken ved å bruke rotasjonsmatrisen:
theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]])
rotated_v = R @ v
Dette gir:
R⋅v=[01−10][23]=[−32]Visualisering av transformasjonene
Ved å bruke matplotlib
plottes hver vektor fra origo, med koordinatene merket:
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()
Hvorfor dette er viktig: datasvitenskapsarbeidsflyter inkluderer ofte transformasjoner, for eksempel:
- Hovedkomponentanalyse – roterer data;
- Funksjonsnormalisering – skalerer akser;
- Dimensjonsreduksjon – projeksjoner.
Ved å visualisere vektorer og deres transformasjoner, ser vi hvordan matriser bokstavelig talt flytter og omformer data i rommet.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain how the solution to the system of equations is calculated?
How does the scaling and rotation transformation affect the original vector?
Can you walk me through the visualization code and what each part does?
Awesome!
Completion rate improved to 1.96
Implementering av Matrise-Transformasjon i Python
Sveip for å vise menyen
Løsning av et lineært ligningssystem
Vi definerer et ligningssystem:
2x+y=5x−y=1Dette kan skrives om som:
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)
Dette finner verdiene til x og y som oppfyller begge ligningene.
Hvorfor dette er viktig: Å løse ligningssystemer er grunnleggende i data science – fra tilpasning av lineære modeller til løsning av optimeringsbetingelser.
Anvendelse av lineære transformasjoner
Vi definerer en vektor:
v = np.array([[2], [3]])
Deretter anvender vi to transformasjoner:
Skalering
Vi strekker x med 2 og komprimerer y med 0,5:
S = np.array([[2, 0],
[0, 0.5]])
scaled_v = S @ v
Dette utfører:
S⋅v=[2000.5][23]=[41.5]Rotasjon
Vi roterer vektoren 90° mot klokken ved å bruke rotasjonsmatrisen:
theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]])
rotated_v = R @ v
Dette gir:
R⋅v=[01−10][23]=[−32]Visualisering av transformasjonene
Ved å bruke matplotlib
plottes hver vektor fra origo, med koordinatene merket:
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()
Hvorfor dette er viktig: datasvitenskapsarbeidsflyter inkluderer ofte transformasjoner, for eksempel:
- Hovedkomponentanalyse – roterer data;
- Funksjonsnormalisering – skalerer akser;
- Dimensjonsreduksjon – projeksjoner.
Ved å visualisere vektorer og deres transformasjoner, ser vi hvordan matriser bokstavelig talt flytter og omformer data i rommet.
Takk for tilbakemeldingene dine!