matlab点和两个向量的交叉积

时间:2014-10-07 17:18:24

标签: matlab

我不明白Matlab 2013a中的某些行为,功能是点和交叉。

我有2个向量作为平面的基础: v1 = [-0.3134,0.0079,0.0072] v2 = [-0.1132,1.1473,0.1586]

如果我计算C = v1xv2(叉积),那么我将得到由v1和v2形成的平面的法向量: C =交叉(v1,v2) C = [ - 0.0070,0.0489,-0.3587]

但是当我探测这个向量必须是正交的时,C和v1不是。

点(C,v1)= 4.3368e-19 dot(C,v2)= 0

我手动验证C点v1的点积,实际上不是零

有什么问题,我的matlab版本?还是我的电脑架构(Intel I7)?

1 个答案:

答案 0 :(得分:3)

交叉积C及其与v1和v2的点积都会受到少量舍入误差的影响。您可以使用MATLAB eps功能(请参阅http://www.mathworks.com/help/matlab/ref/eps.html)估算此类错误的大小,该功能会返回您机器的浮点精度。测试浮点数是否为零的最有意义的方法是"零"是通过以下方式将它与eps进行比较:

dot(C,v1)<eps