gpt4 book ai didi

math - 连续坐标旋转中的浮点误差

转载 作者:行者123 更新时间:2023-12-01 23:33:56 25 4
gpt4 key购买 nike

我有代码(Python),必须对曲线的反射段之间的距离执行一些操作。

为了让思路和代码更清晰,我在执行实际计算之前应用了两次旋转(使用矩阵乘法)。我想可以在没有任何旋转的情况下执行计算,但是代码和思维会更加尴尬。

我要问的是:由于四舍五入的浮点误差,这三个旋转是否对精度损失造成了太大的损失?有没有办法估计这个误差的大小?

谢谢阅读

最佳答案

作为数值计算的经验法则——只认真对待前 12 位数字:)

现在,假设 3D 旋转,并且三角函数的结果无限精确,矩阵乘法将涉及旋转向量中每个元素的 3 次乘法和 2 次加法。由于您进行了两次旋转,因此每个元素相当于 6 次乘法和 4 次加法。

如果您阅读 this (你应该每天从头到尾阅读),或 this , 或 this ,您会发现 IEEE 754 的各个算术运算保证精确到 ULP 的一半以内(=最后一位小数位)。

应用于您的问题,这意味着结果向量中每个元素的 10 次操作将精确到 5 个 ULP 以内。

换句话说——假设你正在旋转一个单位向量。旋转向量的元素将精确到 0.000000000000005——我想说这没什么好担心的。

包括触发函数中的错误,嗯,这有点复杂……这实际上取决于您的编程语言和/或编译器的版本等。但我保证它可以与 5 个 ULP 相媲美。

如果您确实认为这种精度不够,那么我建议您一次执行两次旋转。解析计算矩阵乘法,并将旋转实现为单个矩阵乘法。或者:查看 quaternions (虽然我怀疑这对你的情况来说有点矫枉过正)。

关于math - 连续坐标旋转中的浮点误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com