向量加法的误差估计

时间:2014-12-09 21:44:57

标签: vector floating-point numerical-analysis

第14页的Cross中的Kahan表明,当两个交叉向量之间的角度接近零或π时,真实叉积与使用浮点运算计算的角度之间的角度会降低,此角度测量由交叉向量跨越的平面法线的浮点计算误差。随着接近奇点,浮点法线的正交性变得更加妥协。根据Kahan的说法,错误是:

| sin(∠(t_true,t_float))| ≤u+(2 /√3)u | csc(∠(t_1,t_2))|

其中t_true是将十字积t_1⊗t_2取无限精度后的正交向量,而t_float是使用浮点运算的叉积的结果,u是单位四舍五入。

我的问题:两个向量之和是否存在类似的不等式。也就是说,当要加的矢量之间的角度接近零或π时,浮点矢量和的距离是多远?在我的特定应用中,向量将是单位长度。

编辑:我应该补充说,作为两个向量之和的向量将被标准化。

1 个答案:

答案 0 :(得分:2)

c作为计算出的v-wec与您想要计算的内容之间的差异,即(v+deltav) - (w+deltaw)。在这里,e说明了计算中的舍入误差和输入中的逼近误差。

r作为比率||e|| / ||c||。这必须小于1,否则我们根本不知道真正的解决方案在哪里。

通过三角学,cc+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 <= 1e^T csqrt(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+ec的直线成直角。因此,与c相对的角度是直角。根据正弦定律,||e|| / sin(theta) = ||c||,从中得到相同的结果。