| sin(∠(t_true,t_float))| ≤u+(2 /√3)u | csc(∠(t_1,t_2))|
其中t_true是将十字积t_1⊗t_2取无限精度后的正交向量,而t_float是使用浮点运算的叉积的结果,u是单位四舍五入。
我的问题:两个向量之和是否存在类似的不等式。也就是说,当要加的矢量之间的角度接近零或π时,浮点矢量和的距离是多远?在我的特定应用中,向量将是单位长度。
编辑:我应该补充说,作为两个向量之和的向量将被标准化。
答案 0 :(得分:2)
将c
作为计算出的v-w
,e
是c
与您想要计算的内容之间的差异,即(v+deltav) - (w+deltaw)
。在这里,e
说明了计算中的舍入误差和输入中的逼近误差。
将r
作为比率||e|| / ||c||
。这必须小于1,否则我们根本不知道真正的解决方案在哪里。
通过三角学,c
和c+e
之间的角度为arccos(c^T (c+e) / sqrt(c^T c (c+e)^T (c+e))) = arccos((1 + alpha r) / sqrt(1 + 2 alpha r + r^2)
,其中-1 <= alpha <= 1
是e^T c
与sqrt(c^T c e^T e)
的比率。当c
完全c+e
时,alpha
和-r
之间角度的余弦最小化,此时角度为arccos(sqrt(1 - r^2)) = arcsin(r)
。
你可以从正弦定律得到相同的结果。给定c
和||e||/||c||
上的约束,可以合理地c+e
的点位于以c
半径||e||
为中心的圆上。最差c+e
将在边界上,从原点到最差c+e
的线将与从c+e
到c
的直线成直角。因此,与c
相对的角度是直角。根据正弦定律,||e|| / sin(theta) = ||c||
,从中得到相同的结果。