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