Перекрестное произведение двух векторов в Python
Как я могу вычислить поперечное произведение двух векторов без использования библиотек программирования?
Например, заданные векторы a = (1, 2, 3)
и b = (4, 5, 6)
Ответы
Ответ 1
Вы спрашиваете о формуле для перекрестного продукта? Или как сделать индексацию и списки в python?
Основная идея заключается в том, что вы получаете доступ к элементам a и b как к [0], a [1], a [2] и т.д. (для x, y, z) и создаете новый список с помощью [element_0, element_1,...]. Мы также можем обернуть его в функцию.
На стороне вектора поперечное произведение является антисимметричным произведением элементов, которое также имеет хорошую геометрическую интерпретацию.
Во всяком случае, было бы лучше дать вам подсказки и позволить вам разобраться в этом, но это не так, так что...
def cross(a, b):
c = [a[1]*b[2] - a[2]*b[1],
a[2]*b[0] - a[0]*b[2],
a[0]*b[1] - a[1]*b[0]]
return c
Ответ 2
import numpy as np
a = np.array([1,0,0])
b = np.array([0,1,0])
print np.cross(a,b)
Ответ 3
Если вы хотите реализовать кросс-продукт самостоятельно, вы можете увидеть http://en.wikipedia.org/wiki/Vector_cross_product
или математическую/физическую книгу.
Вскоре (a1, a2, a3) X (b1, b2, b3) = (a2 * b3-a3 * b2, a3 * b1-a1 * b3, a1 * b2-a2 * b1)
Ответ 4
для нескольких измерений, это может сработать;
def crossProd(a,b):
dimension = len(a)
c = []
for i in range(dimension):
c.append(0)
for j in range(dimension):
if j <> i:
for k in range(dimension):
if k <> i:
if k > j:
c[i] += a[j]*b[k]
elif k < j:
c[i] -= a[j]*b[k]
return c
Ответ 5
старый, но если кому-то понадобится:
я сделал это следующим образом:
def cross_product (u, v):
dim = len(u)
s = []
for i in range(dim):
if i == 0:
j,k = 1,2
s.append(u[j]*v[k] - u[k]*v[j])
elif i == 1:
j,k = 2,0
s.append(u[j]*v[k] - u[k]*v[j])
else:
j,k = 0,1
s.append(u[j]*v[k] - u[k]*v[j])
return s