В этой статье блога мы углубимся в мир 2D-векторов в Python. Векторы — это математические объекты, которые имеют как величину, так и направление, и они широко используются в различных приложениях, таких как физика, компьютерная графика и машинное обучение. Мы рассмотрим различные методы работы с 2D-векторами в Python, попутно предоставляя примеры кода.
Содержание:
- Создание 2D-векторов
- Основные операции
2.1. Сложение и вычитание
2.2. Скалярное умножение
2.3. Скалярное произведение
2.4. Перекрестное произведение - Свойства вектора
3.1. Магнитуда
3.2. Нормализация
3.3. Угол между векторами - Расширенные операции
4.1. Проекция
4.2. Рефлексия
4.3. Ротация - Визуализация 2D-векторов
5.1. Matplotlib
5.2. Сюжетно - Заключение
Создание 2D-векторов.
Для представления 2D-векторов в Python мы можем использовать различные структуры данных, такие как списки, кортежи или пользовательские классы. Вот пример использования кортежей:
# Creating a 2D vector using tuples
vector = (3, 4)
Основные операции:
- Сложение и вычитание.
Сложение векторов включает в себя сложение соответствующих компонентов двух векторов. Аналогично, векторное вычитание вычитает соответствующие компоненты. Вот пример:
# Vector addition
vector1 = (2, 3)
vector2 = (1, -1)
result = tuple(a + b for a, b in zip(vector1, vector2))
print(result) # Output: (3, 2)
# Vector subtraction
vector1 = (5, 7)
vector2 = (3, 2)
result = tuple(a - b for a, b in zip(vector1, vector2))
print(result) # Output: (2, 5)
- Скалярное умножение.
Скалярное умножение масштабирует вектор на скалярное значение. Вот пример:
# Scalar multiplication
vector = (2, 3)
scalar = 2
result = tuple(scalar * a for a in vector)
print(result) # Output: (4, 6)
- Скалярное произведение:
Скалярное произведение вычисляет сумму произведений соответствующих компонентов двух векторов. Вот пример:
# Dot product
vector1 = (2, 3)
vector2 = (4, 5)
result = sum(a * b for a, b in zip(vector1, vector2))
print(result) # Output: 23
- Взаимное произведение.
Взаимное произведение определяется только для 3D-векторов. Поскольку мы работаем с 2D-векторами, мы не будем рассматривать это в этой статье.
Свойства вектора:
- Амплитуда.
Амплитуда вектора представляет его длину или размер. Вот пример:
import math
# Magnitude
vector = (3, 4)
magnitude = math.sqrt(sum(a * a for a in vector))
print(magnitude) # Output: 5.0
- Нормализация.
Нормализация масштабирует вектор до величины 1, сохраняя при этом его направление. Вот пример:
import math
# Normalization
vector = (3, 4)
magnitude = math.sqrt(sum(a * a for a in vector))
normalized = tuple(a / magnitude for a in vector)
print(normalized) # Output: (0.6, 0.8)
- Угол между векторами:
Угол между двумя векторами можно рассчитать с помощью скалярного произведения и величин векторов. Вот пример:
import math
# Angle between vectors
vector1 = (2, 3)
vector2 = (4, 5)
dot_product = sum(a * b for a, b in zip(vector1, vector2))
magnitude1 = math.sqrt(sum(a * a for a in vector1))
magnitude2 = math.sqrt(sum(a * a for a in vector2))
angle = math.acos(dot_product / (magnitude1 * magnitude2))
print(math.degrees(angle)) # Output: 14.8018 degrees
Расширенные операции:
- Проекция:
Проекция одного вектора на другой представляет собой компонент первого вектора, лежащий в направлении второго вектора. Вот пример:
# Projection
vector1 = (3, 4)
vector2 = (1, 2)
dot_product = sum(a * b for a, b in zip(vector1, vector2))
magnitude2 = math.sqrt(sum(a * afor a in vector2))
projection = tuple((dot_product / (magnitude2 2)) * b for b in vector2)
print(projection) # Output: (1.2, 2.4)
- Отражение:
Отражение вектора представляет собой его зеркальное отражение относительно линии или плоскости. Вот пример:
# Reflection
vector = (2, 3)
normal = (1, 1)
dot_product = sum(a * b for a, b in zip(vector, normal))
reflection = tuple(2 * dot_product * a - b for a, b in zip(normal, vector))
print(reflection) # Output: (-2, -1)
- Вращение.
Вращение вектора предполагает изменение его направления с сохранением его величины. Вот пример поворота вектора против часовой стрелки на угол 45 градусов:
import math
# Rotation
vector = (3, 4)
angle = math.radians(45)
rotated_x = math.cos(angle) * vector[0] - math.sin(angle) * vector[1]
rotated_y = math.sin(angle) * vector[0] + math.cos(angle) * vector[1]
rotated_vector = (rotated_x, rotated_y)
print(rotated_vector) # Output: (0.525, 5.657)
Визуализация 2D-векторов.
Для визуализации 2D-векторов мы можем использовать такие библиотеки, как Matplotlib или Plotly, для создания графиков или графиков. Вот пример использования Matplotlib:
import matplotlib.pyplot as plt
# Visualization with Matplotlib
vector = (3, 4)
plt.quiver(0, 0, vector[0], vector[1], angles='xy', scale_units='xy', scale=1)
plt.xlim(-5, 5)
plt.ylim(-5, 5)
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.show()
В этой статье блога мы рассмотрели различные методы работы с 2D-векторами в Python. Мы рассмотрели создание векторов, базовые операции, такие как сложение, вычитание, скалярное умножение, скалярное произведение, а также сложные операции, такие как проецирование, отражение и вращение. Мы также обсудили свойства векторов, такие как величина, нормализация и вычисление угла между векторами. Также была продемонстрирована визуализация векторов с использованием таких библиотек, как Matplotlib или Plotly. С помощью этих методов вы сможете эффективно работать с 2D-векторами в Python и применять их в широком спектре приложений.