Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Matriisimuunnoksen Toteuttaminen Pythonilla | Lineaarialgebran Perusteet
Matematiikka Data-analytiikkaan

bookMatriisimuunnoksen Toteuttaminen Pythonilla

Lineaarisen yhtälöryhmän ratkaiseminen

Määritellään yhtälöryhmä:

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

Tämä kirjoitetaan uudelleen seuraavasti:

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

Tämä etsii xx:n ja yy:n arvot, jotka toteuttavat molemmat yhtälöt.

Merkitys: Yhtälöryhmien ratkaiseminen on keskeistä data-analytiikassa – esimerkiksi lineaaristen mallien sovittamisessa ja optimointirajoitteiden ratkaisemisessa.

Lineaaristen muunnosten soveltaminen

Määritellään vektori:

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

Sitten sovelletaan kahta muunnosta:

Skaalaus

Venytetään xx kaksinkertaiseksi ja puristetaan yy puoleen:

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

scaled_v = S @ v

Tämä suorittaa laskennan:

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}

Kierto

Kierretään vektoria 90°90° vastapäivään kiertomatriisin avulla:

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

rotated_v = R @ v

Tulos on:

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}

Muunnosten visualisointi

Käyttämällä matplotlib-kirjastoa piirretään jokainen vektori origosta ja merkitään niiden koordinaatit:

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

Miksi tämä on tärkeää: datatieteen työnkulut sisältävät usein muunnoksia, esimerkiksi:

  • Pääkomponenttianalyysi – kiertää dataa;
  • Ominaisuuksien normalisointi – skaalaa akseleita;
  • Ulottuvuuden vähentäminen – projisoinnit.

Visualisoimalla vektoreita ja niiden muunnoksia näemme, kuinka matriisit kirjaimellisesti siirtävät ja muokkaavat dataa avaruudessa.

question mark

Mikä on tämän operaation tuloste?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookMatriisimuunnoksen Toteuttaminen Pythonilla

Pyyhkäise näyttääksesi valikon

Lineaarisen yhtälöryhmän ratkaiseminen

Määritellään yhtälöryhmä:

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

Tämä kirjoitetaan uudelleen seuraavasti:

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

Tämä etsii xx:n ja yy:n arvot, jotka toteuttavat molemmat yhtälöt.

Merkitys: Yhtälöryhmien ratkaiseminen on keskeistä data-analytiikassa – esimerkiksi lineaaristen mallien sovittamisessa ja optimointirajoitteiden ratkaisemisessa.

Lineaaristen muunnosten soveltaminen

Määritellään vektori:

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

Sitten sovelletaan kahta muunnosta:

Skaalaus

Venytetään xx kaksinkertaiseksi ja puristetaan yy puoleen:

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

scaled_v = S @ v

Tämä suorittaa laskennan:

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}

Kierto

Kierretään vektoria 90°90° vastapäivään kiertomatriisin avulla:

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

rotated_v = R @ v

Tulos on:

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}

Muunnosten visualisointi

Käyttämällä matplotlib-kirjastoa piirretään jokainen vektori origosta ja merkitään niiden koordinaatit:

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

Miksi tämä on tärkeää: datatieteen työnkulut sisältävät usein muunnoksia, esimerkiksi:

  • Pääkomponenttianalyysi – kiertää dataa;
  • Ominaisuuksien normalisointi – skaalaa akseleita;
  • Ulottuvuuden vähentäminen – projisoinnit.

Visualisoimalla vektoreita ja niiden muunnoksia näemme, kuinka matriisit kirjaimellisesti siirtävät ja muokkaavat dataa avaruudessa.

question mark

Mikä on tämän operaation tuloste?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6
some-alt