para - Producto cruzado de dos vectores en Python.
numpy tutorial español pdf (5)
¿Estás preguntando sobre la fórmula para el producto cruzado? ¿O cómo hacer indexación y listas en python?
La idea básica es que accedas a los elementos de a y b como a [0], a [1], a [2], etc. (para x, y, z) y que crees una nueva lista con [element_0, element_1, ...]. También podemos envolverlo en una función.
En el lado vectorial, el producto cruzado es el producto antisimétrico de los elementos, que también tiene una buena interpretación geométrica.
De todos modos, sería mejor darle sugerencias y dejar que lo descubran, pero esa no es la manera SO, así que ...
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
¿Cómo puedo calcular el producto cruzado de dos vectores sin el uso de bibliotecas de programación?
Por ejemplo, los vectores dados a = (1, 2, 3)
y b = (4, 5, 6)
Lo hice así:
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
Si desea implementar el producto cruzado usted mismo, puede ver http://en.wikipedia.org/wiki/Vector_cross_product o un libro de matemáticas / física. En breve (a1, a2, a3) X (b1, b2, b3) = (a2 * b3-a3 * b2, a3 * b1-a1 * b3, a1 * b2-a2 * b1)
para múltiples dimensiones, esto podría funcionar;
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
import numpy as np
a = np.array([1,0,0])
b = np.array([0,1,0])
print np.cross(a,b)