Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Implementering af Matrixtransformation i Python | Grundlæggende Lineær Algebra
Quizzes & Challenges
Quizzes
Challenges
/
Matematik for Datavidenskab

bookImplementering af Matrixtransformation i Python

Løsning af et lineært ligningssystem

Vi definerer et ligningssystem:

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

Dette omskrives 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 finder værdierne af xx og yy, der opfylder begge ligninger.

Hvorfor dette er vigtigt: Løsning af ligningssystemer er grundlæggende i datavidenskab – fra tilpasning af lineære modeller til løsning af optimeringsbetingelser.

Anvendelse af lineære transformationer

Vi definerer en vektor:

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

Derefter anvendes to transformationer:

Skalering

Vi strækker xx med 2 og komprimerer yy med 0,5:

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

scaled_v = S @ v

Dette udfø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}

Rotation

Vi roterer vektoren 90°90° mod uret ved hjælp af rotationsmatricen:

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

rotated_v = R @ v

Dette giver:

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 af transformationerne

Ved brug af matplotlib plottes hver vektor fra origo, med deres koordinater markeret:

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 vigtigt: datastrømsarbejdsgange omfatter ofte transformationer, for eksempel:

  • Principal Component Analysis – roterer data;
  • Feature-normalisering – skalerer akser;
  • Dimensionalitetsreduktion – projektioner.

Ved at visualisere vektorer og deres transformationer ser vi, hvordan matricer bogstaveligt talt flytter og omformer data i rummet.

question mark

Hvad er outputtet af denne operation?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

bookImplementering af Matrixtransformation i Python

Stryg for at vise menuen

Løsning af et lineært ligningssystem

Vi definerer et ligningssystem:

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

Dette omskrives 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 finder værdierne af xx og yy, der opfylder begge ligninger.

Hvorfor dette er vigtigt: Løsning af ligningssystemer er grundlæggende i datavidenskab – fra tilpasning af lineære modeller til løsning af optimeringsbetingelser.

Anvendelse af lineære transformationer

Vi definerer en vektor:

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

Derefter anvendes to transformationer:

Skalering

Vi strækker xx med 2 og komprimerer yy med 0,5:

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

scaled_v = S @ v

Dette udfø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}

Rotation

Vi roterer vektoren 90°90° mod uret ved hjælp af rotationsmatricen:

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

rotated_v = R @ v

Dette giver:

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 af transformationerne

Ved brug af matplotlib plottes hver vektor fra origo, med deres koordinater markeret:

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 vigtigt: datastrømsarbejdsgange omfatter ofte transformationer, for eksempel:

  • Principal Component Analysis – roterer data;
  • Feature-normalisering – skalerer akser;
  • Dimensionalitetsreduktion – projektioner.

Ved at visualisere vektorer og deres transformationer ser vi, hvordan matricer bogstaveligt talt flytter og omformer data i rummet.

question mark

Hvad er outputtet af denne operation?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 6
some-alt