Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Implementering av Matristransformation i Python | Grunder i Linjär Algebra
Matematik för datavetenskap

bookImplementering av Matristransformation i Python

Lösning av ett linjärt ekvationssystem

Vi definierar ett ekvationssystem:

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

Detta skrivs 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

Detta hittar värdena på xx och yy som uppfyller båda ekvationerna.

Varför detta är viktigt: att lösa ekvationssystem är grundläggande inom datavetenskap – från anpassning av linjära modeller till lösning av optimeringsvillkor.

Tillämpning av linjära transformationer

Vi definierar en vektor:

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

Sedan tillämpar vi två transformationer:

Skalning

Vi sträcker xx med 2 och komprimerar yy med 0,5:

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

scaled_v = S @ v

Detta utför:

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 roterar vektorn 90°90° moturs med hjälp av rotationsmatrisen:

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

rotated_v = R @ v

Detta ger:

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 transformationerna

Med hjälp av matplotlib ritas varje vektor från origo, med koordinaterna angivna:

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

Varför detta är viktigt: arbetsflöden inom datavetenskap inkluderar ofta transformationer, till exempel:

  • Principal Component Analysis – roterar data;
  • Funktionsnormalisering – skalar axlar;
  • Dimensionsreduktion – projektioner.

Genom att visualisera vektorer och deras transformationer ser vi hur matriser bokstavligen flyttar och omformar data i rummet.

question mark

Vad blir resultatet av denna operation?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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 Matristransformation i Python

Svep för att visa menyn

Lösning av ett linjärt ekvationssystem

Vi definierar ett ekvationssystem:

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

Detta skrivs 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

Detta hittar värdena på xx och yy som uppfyller båda ekvationerna.

Varför detta är viktigt: att lösa ekvationssystem är grundläggande inom datavetenskap – från anpassning av linjära modeller till lösning av optimeringsvillkor.

Tillämpning av linjära transformationer

Vi definierar en vektor:

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

Sedan tillämpar vi två transformationer:

Skalning

Vi sträcker xx med 2 och komprimerar yy med 0,5:

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

scaled_v = S @ v

Detta utför:

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 roterar vektorn 90°90° moturs med hjälp av rotationsmatrisen:

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

rotated_v = R @ v

Detta ger:

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 transformationerna

Med hjälp av matplotlib ritas varje vektor från origo, med koordinaterna angivna:

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

Varför detta är viktigt: arbetsflöden inom datavetenskap inkluderar ofta transformationer, till exempel:

  • Principal Component Analysis – roterar data;
  • Funktionsnormalisering – skalar axlar;
  • Dimensionsreduktion – projektioner.

Genom att visualisera vektorer och deras transformationer ser vi hur matriser bokstavligen flyttar och omformar data i rummet.

question mark

Vad blir resultatet av denna operation?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 6
some-alt