Перекрестное произведение двух векторов в 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