Как рассчитать кросс-произведение двух векторов без использования библиотек программирования?Перекрестное произведение двух векторов в Python
например, данные векторы a = (1, 2, 3)
и b = (4, 5, 6)
Как рассчитать кросс-произведение двух векторов без использования библиотек программирования?Перекрестное произведение двух векторов в Python
например, данные векторы a = (1, 2, 3)
и b = (4, 5, 6)
import numpy as np
a = np.array([1,0,0])
b = np.array([0,1,0])
print np.cross(a,b)
«без использования библиотек программирования» ... –
извините за это. – fulmicoton
Если вы не отвечаете требованиям, у Пола есть точка: Если вам нужны такие вещи, вы действительно * должны * смотреть в numpy! Кроме того, если вы играете с 3D-векторами в своих исследованиях, проверьте VPython - он делает визуализацию этих вещей чрезвычайно легкой и интересной. –
вы спрашиваете о формуле для сечения продукта? Или как сделать индексацию и списки в python?
Основная идея заключается в том, что вы получаете доступ к элементам a и b как [0], [1], [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
благодарит за тег! – blur959
Добро пожаловать (но не нужно благодарить каждого из нас отдельно). Однако вы можете «принять» один из ответов - подсказка, подсказка, ... –
Если вы хотите реализовать перекрестную продукт себе вас может видеть http://en.wikipedia.org/wiki/Vector_cross_product или математику/книгу физики. Вскоре (а1, а2, а3) Х (b1, b2, b3) = (а2 * Б3-а3 * b2, a3 * b1-a1 * b3, a1 * b2-a2 * b1)
благодарит за информацию! Оцените это! – blur959
для нескольких размеров , это может сработать;
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
Как насчет используя рекурсию для этого? ... Это было бы более элегантно. – Sardathrion
старый, но если кто-то будет когда-нибудь понадобится: я сделал это так:
Защиту cross_product (и, 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
Формула для поперечного продукта можно найти по адресу http://mathworld.wolfram.com/CrossProduct.html. Вернитесь после того, как прочтете, если у вас все еще есть проблемы с программированием. –