gpt4 book ai didi

floating-point - 如何以度为单位计算正确舍入的三角函数?

转载 作者:行者123 更新时间:2023-12-04 06:36:49 27 4
gpt4 key购买 nike

我如何定义以度为单位而不是通常的弧度为参数的三角函数,并为这些参数计算正确的舍入结果?

将参数乘以 M_PI/180.0在将其传递给以弧度为单位的相应函数之前不起作用,因为 M_PI/180.0不是 π/180。 Handbook of Floating-Point Arithmetic 的第 5.5 节提供了一种计算参数的正确舍入乘积 π/180 的方法,但有些参数仍然会使得该乘积接近两个连续可表示浮点数之间的中点,然后即使以弧度应用正确舍入的函数也会产生错误的最终结果。

两种可以单独或组合使用的策略是使用更高的精度和使用 sinpi , cospi , tanpi来自 CRlibm 的三角函数,分别计算sin(πx) , cos(πx)tan(πx) .

对于后一种策略,仍然存在除以 180 的问题,这对于许多参数来说并不准确。

关于更高精度的策略(将参数乘以 π/180 的扩展精度表示,然后以弧度应用扩展精度函数),“精确”情况可能仍然存在问题。该定理指出 sin 的唯一有理结果, costan对于有理论证在 0 中获得仅适用于弧度版本。它显然不适用于度数版本,如果对于某些浮点输入 x,sindeg(x) 恰好是两个连续可表示的浮点数之间的中点,那么再多的中间精度都不足以保证最终的结果正确四舍五入。

最佳答案

唯一的理性q其中cosdeg(360q)有理数以 1、2、3、4 或 6 作为分母。 This paper Joerg Jahnel 在第 6 节中包含使用场论的简短而优美的证明。(实际上,作者使用欧拉的整体函数刻画了代数数 cosdeg(360q) 的度数。)所以没有浮点 q使得 cosdeg(360q)位于两个相邻浮点数的中间。

所以我想答案是“与您实现 sin 和弧度的 friend 的方式大致相同”,尽管@gnasher729 提出了一个很好的观点,即度数的参数减少要好得多。

关于floating-point - 如何以度为单位计算正确舍入的三角函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25104904/

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