Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Реалізація Матричних Перетворень у Python | Основи Лінійної Алгебри
Математика для науки про дані

bookРеалізація Матричних Перетворень у Python

Розв'язання лінійної системи

Задаємо систему рівнянь:

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

Це переписується як:

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

Цей код знаходить значення xx та yy, які задовольняють обидва рівняння.

Чому це важливо: розв'язання систем рівнянь є основою для науки про дані — від побудови лінійних моделей до розв'язання оптимізаційних задач.

Застосування лінійних перетворень

Визначаємо вектор:

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

Далі застосовуємо два перетворення:

Масштабування

Розтягуємо xx у 2 рази та стискаємо yy у 0.5 разів:

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

scaled_v = S @ v

Це виконує обчислення:

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}

Обертання

Повертаємо вектор на 90°90° проти годинникової стрілки за допомогою матриці обертання:

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

rotated_v = R @ v

Результат:

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}

Візуалізація перетворень

За допомогою matplotlib будуємо кожен вектор з початку координат, підписуючи їх координати:

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

Чому це важливо: робочі процеси в науці про дані часто включають перетворення, наприклад:

  • Метод головних компонент — обертає дані;
  • Нормалізація ознак — масштабує осі;
  • Зниження розмірності — проєкції.

Візуалізуючи вектори та їхні перетворення, ми бачимо, як матриці буквально переміщують і змінюють форму даних у просторі.

question mark

Який результат цієї операції?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

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

bookРеалізація Матричних Перетворень у Python

Свайпніть щоб показати меню

Розв'язання лінійної системи

Задаємо систему рівнянь:

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

Це переписується як:

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

Цей код знаходить значення xx та yy, які задовольняють обидва рівняння.

Чому це важливо: розв'язання систем рівнянь є основою для науки про дані — від побудови лінійних моделей до розв'язання оптимізаційних задач.

Застосування лінійних перетворень

Визначаємо вектор:

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

Далі застосовуємо два перетворення:

Масштабування

Розтягуємо xx у 2 рази та стискаємо yy у 0.5 разів:

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

scaled_v = S @ v

Це виконує обчислення:

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}

Обертання

Повертаємо вектор на 90°90° проти годинникової стрілки за допомогою матриці обертання:

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

rotated_v = R @ v

Результат:

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}

Візуалізація перетворень

За допомогою matplotlib будуємо кожен вектор з початку координат, підписуючи їх координати:

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

Чому це важливо: робочі процеси в науці про дані часто включають перетворення, наприклад:

  • Метод головних компонент — обертає дані;
  • Нормалізація ознак — масштабує осі;
  • Зниження розмірності — проєкції.

Візуалізуючи вектори та їхні перетворення, ми бачимо, як матриці буквально переміщують і змінюють форму даних у просторі.

question mark

Який результат цієї операції?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 6
some-alt