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
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!