Скалярное произведение в Python — это математическая операция, которая применяется к двум последовательностям чисел одинаковой длины (обычно это координатные векторы). Результатом операции является одно число.

Скалярное произведение может быть использовано во многих областях, например, для расчёта проекции одного вектора на другой или для определения угла между двумя векторами.

В Python скалярное произведение можно вычислить разными способами. Если вы работаете с массивами или списками чисел, вы можете воспользоваться циклом или пониманием списка для перемножения соответствующих элементов и сложения результатов. Вот пример:

a = [1, 2, 3] 
b = [4, 5, 6] 
dot_product = sum(i*j for i, j in zip(a, b)) 
print(dot_product)  # Outputs: 32

В этом примере функция zip() объединяет соответствующие элементы массивов a и b в пары. Выражение i*j в функции zip(a, b) умножает каждый элемент пары, а функция sum() складывает полученные произведения. Это позволяет вычислить скалярное произведение.

Если вы работаете с векторами в математике или науке, вы можете предпочесть использовать библиотеку NumPy. В ней есть функция dot(), которая вычисляет скалярное произведение двух массивов.

import numpy as np 
 
a = np.array([1, 2, 3]) 
b = np.array([4, 5, 6]) 
dot_product = np.dot(a, b) 
print(dot_product)  # Outputs: 32

В этом примере функция np.array() создаёт массивы NumPy на основе списков чисел, а функция np.dot(a, b) вычисляет скалярное произведение.

Содержание

Скалярное произведение без Numpy

Скалярное произведение, также известное как скалярное произведение, двух векторов a и b определяется как сумма произведений их соответствующих компонентов. Если a = [a1, a2, …, an] и b = [b1, b2, …, bn], скалярное произведение равно a1*b1 + a2*b2 + … + an*bn.

В Python это можно реализовать без использования NumPy, используя цикл:

a = [1, 2, 3] 
b = [4, 5, 6] 
 
dot_product = sum(a[i] * b[i] for i in range(len(a))) 
 
print(f"Dot product of {a} and {b} is {dot_product}")

Вы можете увидеть результат, как показано ниже.

Скалярное произведение в Python без Numpy

Двух списков

Скалярное произведение двух списков в Python можно выполнить с помощью функции zip, что делает код еще чище:

a = [1, 2, 3] 
b = [4, 5, 6] 
 
dot_product = sum(x * y for x, y in zip(a, b)) 
 
print(f"Dot product of {a} and {b} is {dot_product}")

Скалярное произведение двух векторов

Если вы работаете с более сложными математическими векторами, вам может пригодиться библиотека numpy. Numpy – это мощный инструмент для выполнения числовых вычислений на языке Python.

import numpy as np 
 
a = np.array([1, 2, 3]) 
b = np.array([4, 5, 6]) 
 
dot_product = np.dot(a, b) 
 
print(f"Dot product of {a} and {b} is {dot_product}")

Двух векторов без Numpy

Вы можете найти скалярное произведение двух векторов, не используя библиотеку numpy. По сути, это то же самое, что и скалярное произведение двух списков, ведь векторы можно представить как списки.

a = [1, 2, 3] 
b = [4, 5, 6] 
 
dot_product = sum(x * y for x, y in zip(a, b)) 
 
print(f"Dot product of {a} and {b} is {dot_product}")

Перекрестное произведение

Перекрестное произведение двух векторов a и b представляет собой вектор, перпендикулярный обоим a и b. Перекрестное произведение можно рассчитать только для трехмерных векторов. Если a = [a1, a2, a3] и b = [b1, b2, b3], векторное произведение c равно [a2*b3 — a3*b2, a3*b1 — a1*b3, a1*b2 — a2*b1 ].

Используя numpy, это можно легко сделать:

import numpy as np 
 
a = np.array([1, 2, 3]) 
b = np.array([4, 5, 6]) 
 
cross_product = np.cross(a, b) 
 
print(f"Cross product of {a} and {b} is {cross_product}")

Перекрестное произведение без Numpy

Без использования numpy вы можете рассчитать векторное произведение, используя приведенную ниже формулу в Python:

a = [1, 2, 3] 
b = [4, 5, 6] 
 
cross_product = [ 
    a[1] * b[2] - a[2] * b[1], 
    a[2] * b[0] - a[0] * b[2], 
    a[0] * b[1] - a[1] * b[0] 
] 
 
print(f"Cross product of {a} and {b} is {cross_product}")
Добавить комментарий