gpt4 book ai didi

ruby - 为什么 Ruby cross_product 返回的值与纸上的叉积不同

转载 作者:数据小太阳 更新时间:2023-10-29 07:32:04 28 4
gpt4 key购买 nike

u = [1, -2, 1] # u = i -2j + k
v = [3, 1, -2] # v = 3i + j -2k

理论上,当我对 u x v 进行叉积时,我得到 3i + 5j + 7k 应该是 [3, 5, 7]

但是当我在 IRB 上这样做时,我得到 -(u x v)

irb(main):081:0> u
=> Vector[1, -2, 1]
irb(main):082:0> v
=> Vector[3, 1, -2]
irb(main):083:0> u.cross_product v
=> Vector[-3, -5, -7]

这是 v 和 u 的叉积 v x u 的答案。

Ruby 中的 u.cross_product vv x u 吗?

我很困惑。

最佳答案

这是 cross_product 函数的源代码 (from here):

# File matrix.rb, line 1764
def cross_product(v)
Vector.Raise ErrDimensionMismatch unless size == v.size && v.size == 3
Vector[ v[1]*@elements[2] - v[2]*@elements[1],
v[2]*@elements[0] - v[0]*@elements[2],
v[0]*@elements[1] - v[1]*@elements[0] ]
end

从这个来源看来,计算认为 v 在叉积计算左侧的向量上,而调用该方法的向量被认为在右侧边。这会产生您所看到的结果,因为在叉积计算中交换边会给您一个大小相同但指向相反方向的向量。因此,如果你切换通话,你会得到你在纸上得到的结果:

v.cross_product u

关于ruby - 为什么 Ruby cross_product 返回的值与纸上的叉积不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831320/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com