Python中两个向量的叉积
我怎么能在不使用编程库的情况下计算两个向量的叉积呢?
比如给定向量 a = (1, 2, 3)
和 b = (4, 5, 6)
6 个回答
2
如果你想自己实现叉乘,可以看看这个链接:http://en.wikipedia.org/wiki/Vector_cross_product,或者找一本数学或物理书。简单来说,两个三维向量(a1, a2, a3)和(b1, b2, b3)的叉乘结果是这样的: (a2*b3 - a3*b2, a3*b1 - a1*b3, a1*b2 - a2*b1)。
42
import numpy as np
a = np.array([1,0,0])
b = np.array([0,1,0])
#print the result
print(np.cross(a,b))
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
61
你是在问叉乘的公式吗?还是想了解在Python中如何进行索引和列表操作?
基本的想法是,你可以通过a[0]、a[1]、a[2]等方式来访问a和b的元素(分别对应x、y、z),然后用[element_0, element_1, ...]的方式创建一个新列表。我们也可以把这个过程放在一个函数里。
从向量的角度来看,叉乘是元素的反对称乘积,这个概念在几何上也有很好的解释。
不过,其实给你一些提示让你自己去想会更好,但这不是Stack Overflow的风格,所以……
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