Matriisimuunnoksen Toteuttaminen Pythonilla
Lineaarisen yhtälöryhmän ratkaiseminen
Määritellään yhtälöryhmä:
2x+y=5x−y=1Tämä kirjoitetaan uudelleen seuraavasti:
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)
Tämä etsii x:n ja y: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 x kaksinkertaiseksi ja puristetaan y puoleen:
S = np.array([[2, 0],
[0, 0.5]])
scaled_v = S @ v
Tämä suorittaa laskennan:
S⋅v=[2000.5][23]=[41.5]Kierto
Kierretään vektoria 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:
R⋅v=[01−10][23]=[−32]Muunnosten visualisointi
Käyttämällä matplotlib-kirjastoa piirretään jokainen vektori origosta ja merkitään niiden koordinaatit:
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()
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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Matriisimuunnoksen Toteuttaminen Pythonilla
Pyyhkäise näyttääksesi valikon
Lineaarisen yhtälöryhmän ratkaiseminen
Määritellään yhtälöryhmä:
2x+y=5x−y=1Tämä kirjoitetaan uudelleen seuraavasti:
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)
Tämä etsii x:n ja y: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 x kaksinkertaiseksi ja puristetaan y puoleen:
S = np.array([[2, 0],
[0, 0.5]])
scaled_v = S @ v
Tämä suorittaa laskennan:
S⋅v=[2000.5][23]=[41.5]Kierto
Kierretään vektoria 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:
R⋅v=[01−10][23]=[−32]Muunnosten visualisointi
Käyttämällä matplotlib-kirjastoa piirretään jokainen vektori origosta ja merkitään niiden koordinaatit:
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()
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.
Kiitos palautteestasi!