计算器使用什么样的算法来计算正弦值?

6
如果有人告诉我一个角度,比如38度,我该如何找到正弦函数的值,而不用实际制作一个含有38度角并测量两边的直角三角形呢?我知道我可以使用一些三角恒等式来接近这些值,但这将是费力的。
我相信计算器和电脑中使用的算法不会采取这种方式。例如,如果我需要找到pi,我会使用以下算法:
(图片省略)
而不是使用指南针和尺子画圆。
然而,我找不到任何此类正弦函数算法。
请问有人能帮助我吗?

一个多项式(泰勒)级数是一种方法,尽管我猜测实际上计算器使用的是更复杂的方法。 - Paul Draper
我认为表格查找、插值和三角函数或硬件更接近真相。http://lab.polygonal.de/?p=205 - duffymo
7
经典算法是CORDIC - Paul R
Sin(x) = x - x^3/3! + x^5/5! - ... + (-1)(n+1) * x^(2*n-1)/(2n-1)! - barak manos
3个回答

5
其中最常用的算法之一是使用正弦泰勒级数的前几项。更多项会得到更好的近似值。这里的x以弧度为单位,但可以很容易地从角度转换为弧度。如您所见,只需使用基本运算符号:+、-、*、/ 即可计算正弦值。
在具有浮点协处理器芯片的机器上,使用CORDIC算法(与其他几个模块一起)作为它也可以在硬件中实现。

2

改进 John 的答案:

创建一个表格,其中包含从 0 到 pi/2 不同弧度下的 sin(x)。

你可以使用以下插值方法:sin(x+dx) = sin(x) + dx*cos(x)

cos(x) = sin(pi/2-x)。

同样地,cos(x+dx) = cos(x) - dx*sin(x)。


1
我不知道任何计算器实际使用的是什么,但具有线性(或更高阶,如果需要)插值的查找表应该足够简单和准确,可达到3位精度,或者通过更密集的表格可获得更高精度。您只需要一个四分之一周期的表格,并且可以在适当的转换下将其用于所有正弦和余弦计算。如果您拥有足够的功率和精度,可以尝试迭代泰勒级数等方法,但舍入误差会积累。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接