Python中两个向量的叉积
import numpy as np
a = np.array([1,0,0])
b = np.array([0,1,0])
print np.cross(a,b)
'没有使用编程库'... – 2009-12-31 10:24:47
抱歉。 – fulmicoton 2009-12-31 10:28:58
虽然不是要求的答案,但保罗有一个观点: 如果你需要这样的事情,你真的*应该*看看numpy! 另外,如果您在学习中使用3D矢量,请查看VPython - 它使这些事情变得非常容易和有趣。 – 2009-12-31 10:51:12
你问的公式跨产品?或者如何在python中进行索引和列表?
其基本思想是,您可以将a和b的元素作为[0],a [1],[2]等(对于x,y,z)进行访问,并创建一个新列表与[element_0,element_1,...]。我们也可以将它包装在一个函数中。
在矢量方面,叉积是元素的反对称积,它也具有很好的几何解释。
无论如何,如果你想自己实现跨产品,你倒不如给你提示,让你看着办吧,但那不是真正的SO方式,所以...
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 2009-12-31 12:26:58
不客气(但没有必要感谢我们每个人)但是,你可以“接受”其中一个答案 - 提示,提示,... – 2009-12-31 12:55:59
可能会看到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)
感谢您的信息!欣赏它! – blur959 2009-12-31 12:26:15
,这可能会奏效;
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 2012-07-05 10:46:20
老了,但如果有一个人永远都需要: 我这样做是这样的:
高清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
了跨产品的配方可以在http://mathworld.wolfram.com/CrossProduct.html找到。如果您仍有编程问题,请在阅读完之后再回来。 – 2009-12-31 10:18:25