Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Implementering av Matrise-Transformasjon i Python | Grunnleggende Lineær Algebra
Matematikk for Datavitenskap

bookImplementering av Matrise-Transformasjon i Python

Løsning av et lineært ligningssystem

Vi definerer et ligningssystem:

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

Dette kan skrives om som:

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

Dette finner verdiene til xx og yy 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 xx med 2 og komprimerer yy med 0,5:

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

scaled_v = S @ v

Dette utfører:

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}

Rotasjon

Vi roterer vektoren 90°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:

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}

Visualisering av transformasjonene

Ved å bruke matplotlib plottes hver vektor fra origo, med koordinatene merket:

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

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.

question mark

Hva er resultatet av denne operasjonen?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

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

bookImplementering av Matrise-Transformasjon i Python

Sveip for å vise menyen

Løsning av et lineært ligningssystem

Vi definerer et ligningssystem:

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

Dette kan skrives om som:

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

Dette finner verdiene til xx og yy 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 xx med 2 og komprimerer yy med 0,5:

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

scaled_v = S @ v

Dette utfører:

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}

Rotasjon

Vi roterer vektoren 90°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:

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}

Visualisering av transformasjonene

Ved å bruke matplotlib plottes hver vektor fra origo, med koordinatene merket:

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

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.

question mark

Hva er resultatet av denne operasjonen?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 6
some-alt