Python中两个向量的叉积

27 投票
6 回答
105700 浏览
提问于 2025-04-15 17:30

我怎么能在不使用编程库的情况下计算两个向量的叉积呢?

比如给定向量 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

撰写回答