Vector 向量加法的误差估计

Vector 向量加法的误差估计,vector,floating-point,numerical-analysis,Vector,Floating Point,Numerical Analysis,Kahan在第14页中指出,当两个交叉向量之间的角度接近零或π时,实际叉积与使用浮点算法计算的叉积之间的角度会降低,该角度测量了交叉向量所跨越平面法线的浮点计算误差。随着奇点的接近,浮点法线的正交性变得更加复杂。根据Kahan的说法,错误是: |罪(∠(t_true,t_float))|≤ u+(2/√3) u | csc(∠(t_1,t_2))| 其中t_true是取叉积t_1后的真正交向量⊗t_2是无限精度,而t_float是使用浮点运算的叉积的结果,u是单位舍入 我的问题是:两个向量之和是

Kahan在第14页中指出,当两个交叉向量之间的角度接近零或π时,实际叉积与使用浮点算法计算的叉积之间的角度会降低,该角度测量了交叉向量所跨越平面法线的浮点计算误差。随着奇点的接近,浮点法线的正交性变得更加复杂。根据Kahan的说法,错误是:

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

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

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


编辑:我应该补充的是,两个向量之和的向量将被规范化

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

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


根据三角学,
c
c+e
之间的角度是
arccos(c^T(c+e)/sqrt(c^tc(c+e)^T(c+e))=arccos((1+alphar)/sqrt(1+2 alphar+r^2)
,其中,
-1似乎属于两个向量的和,每个分量最多会减少1/2 ulp。这是因为你按分量计算和,并且该边界适用于浮点加法。如果你在寻找与和有关的其他对象的边界,请这样说。Patrick,我考虑过math.stackexchange.com,但这里决定,因为这是一个浮点问题。Tmyklebu,在规范化两个单位向量之和的向量后,我想计算真实向量和浮点计算产生的向量之间的最大角度。我希望将其与Kahan给出的叉积误差计算相关联。我认为在这个计算中,相对于输入向量不会有太大的误差。但是,这些向量可能是其他计算和转换的结果。最糟糕的情况是,如果它们几乎处于相反的方向,但不是完全处于相反的方向。(小)总和将由它们现有的舍入误差决定,当你进行标准化时,舍入误差将被放大。tmyklebu,感谢你的见解。问题:1)“e”是常数吗?2)如果不存在输入误差,“e”是否为单位舍入?3) “c”是单位长度吗?如果不存在输入误差,你可以得到一个更强的界限,因为斯特本茨定理告诉你,任何分量的大小都不会发生误差,因为它的大小会显著减小
e
不是一个常数;它是一个向量,是舍入误差(每个组件中最多有半个ulp)与输入误差(取决于应用程序)之和。换句话说,
e
是你想要计算的东西和你实际计算的东西之间的向量差。tmyklebu,我最初的问题是两个单位向量的加法,但你的答案是向量v-w的减法。这对错误界限有影响吗?