Questions tagged «numerical-limitations»

2
向量之间的角度数值稳定计算方法
当对两个向量之间的角度应用经典公式时: α=arccosv1⋅v2∥v1∥∥v2∥α=arccos⁡v1⋅v2‖v1‖‖v2‖\alpha = \arccos \frac{\mathbf{v_1} \cdot \mathbf{v_2}}{\|\mathbf{v_1}\| \|\mathbf{v_2}\|} 人们发现,对于非常小的/锐角,会损失精度,结果也不准确。正如在解释这个堆栈溢出的答案,一个解决方案是使用反正切来代替: α=arctan2(∥v1×v2∥,v1⋅v2)α=arctan⁡2(‖v1×v2‖,v1⋅v2)\alpha = \arctan2 \left(\|\mathbf{v_1} \times \mathbf{v_2}\|, \mathbf{v_1} \cdot \mathbf{v_2} \right) 这确实提供了更好的结果。但是,我想知道这是否会给非常接近\ pi / 2的角度带来不好的结果π/2π/2\pi / 2。是这样吗 如果是这样,是否有任何公式可以精确计算角度而无需检查if分支内的公差?

2
要使SVD稳定添加多少正则化?
我一直在使用英特尔MKL的SVD(dgesvd通过SciPy的),并注意到,当我改变之间的精确结果是显著不同float32而float64当我的基质被严重空调/没有满秩。我应该添加一些关于最小化正则化的指南,以使结果对float32-> float64变化不敏感吗? 特别是 A = UdVŤA=UDVTA=UDV^{T}, 我看到 大号∞L∞L_\infty 规范 VŤXVTXV^{T}X当我在float32和之间更改精度时,会移动约1 float64。大号2L2L_2 规范 一个AA 是 10510510^5 在784个总数中,约有200个零特征值。 在做SVD λ 我+ AλI+A\lambda I + A 与 λ =10− 3λ=10−3\lambda=10^{-3} 使差异消失了。

2
高阶Zernike多项式的数值稳定性
我正在尝试为某些图像计算更高阶(例如m=0,n=46)的Zernike矩。但是,我遇到了一个关于径向多项式的问题(请参阅Wikipedia)。这是在间隔[0 1]上定义的多项式。请参阅下面的MATLAB代码 function R = radial_polynomial(m,n,RHO) R = 0; for k = 0:((n-m)/2) R = R + (-1).^k.*factorial(n-k) ... ./ ( factorial(k).*factorial((n+m)./2-k) .* factorial((n-m)./2-k) ) ... .*RHO.^(n-2.*k); end end 但是,这显然会遇到的数值问题RHO > 0.9。 我试着将其重构,polyval以为它可能具有一些更好的幕后算法,但这并没有解决任何问题。将其转换为符号计算确实可以创建所需的图形,但即使对于如图所示的简单图形,其速度也令人难以置信。 有没有一种数值稳定的方法来评估这种高阶多项式?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.