计算器遵循啥样的算法来查找正弦值?

Posted

技术标签:

【中文标题】计算器遵循啥样的算法来查找正弦值?【英文标题】:What kind of algorithm do calculators follow to find values of sine?计算器遵循什么样的算法来查找正弦值? 【发布时间】:2014-01-22 08:52:20 【问题描述】:

如果有人给我一个角度,比如 38 度,我将如何在不使用实际制作 38 度直角三角形并测量边的情况下找出正弦函数的值?我知道我可以使用一些三角恒等式来逼近这些值,但这会很费力。

我确信计算器和计算机中使用的算法不会这样做。就像如果我需要找到 pi,我会使用这样的算法:

而不是得到一个指南针和尺子和画圆圈。

但是,我找不到任何这样的正弦函数算法。

有人可以帮我解决这个问题吗?

【问题讨论】:

多项式 (Taylor) 级数是一种方法,但我猜计算器在实践中使用更复杂的方法。 我会说表格查找、插值和三角关系或硬件更接近事实。 lab.polygonal.de/?p=205 经典算法是CORDIC Sin(x) = x - x^3/3! + x^5/5! - ... + (-1)(n+1) * x^(2*n-1)/(2n-1)! 【参考方案1】:

对此最常见的算法之一是将泰勒级数的前几项用于正弦。

sin x = x - x3/3! + x5/5! - x7/7! + ...,

使用的项越多,得到的近似值就越好。 X 在此处以弧度表示,但您可以很容易地从度数中获得弧度。然后,如您所见,只有基本运算:+、-、*、/ 可用于计算正弦。

在带有浮点协处理器芯片的机器中使用 CORDIC 算法(带有一些其他模块),因为它也可以在硬件中实现。

【讨论】:

【参考方案2】:

改进约翰的回答:

为 x 以 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)。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于计算器遵循啥样的算法来查找正弦值?的主要内容,如果未能解决你的问题,请参考以下文章

CMOS图像传感器产生的信号如何处理?用啥样的电路?啥样的芯片?(我用的传感器是mt9m034

大数据在未来有啥样的发展趋势

啥是云主机,云主机是啥样的?

请问在Unity的像素Shader里返回的颜色的计算模式是啥样的?

ACM程序设计大赛的赛制是啥样的?

OBEX 协议是啥样的?