有关计算中的三角学的更多信息


在哈布雷(Habré)上,有很多文章在非常必要时专门讨论快速三角函数,但是我想在其中补充一点有关学校三角函数的小注释。


有时可能没有三角函数的硬件实现,有时可能还有其他原因需要发明一些方法来加快计算速度。


数学


让我们回想一下学校课程中的一些简单公式。


让我们从简单的开始:
(1)


  • sin x = cos (90° - x)
  • cos x = sin (90° - x)
  • sin -x = -sin x
  • cos -x = cos x
  • 在一般情况下, sin (90°N ± x) = ±cos x表示奇数N, ±sin x表示偶数。 该符号是根据圆的相应四分之一中的自变量的符号得出的。

下一个:
(2)


  • cos (x + y) = cos x cos y - sin x sin y
  • sin (x + y) = sin x cos y + cos x sin y

并且:
(3)


  • sin x = x - x^3/3! + x^5/5! - ...
  • cos x = 1 - x^2/2! + x^4/4! - ...

使用第一组公式,可以将任何角度的余弦/正弦值减小为0°到45°范围内的参数。


对于小角度,如果丢弃的项故意超出放电网格,则可以将三角函数简化为渐近展开。


通过以某个步骤将大角度求和即可获得所有中间角度(对于它们而言,三角学可以视为表格形式),并且残差会早晚给出线性分解。


申请书


假设我们正在使用IEEE-754单精度数字,它们的名称为float,single等。 尾数有23个字符,这意味着我们需要获得2^-23的相对误差。
让我们评估一下构建参数表所需的深度。


对于正弦,我们将丢弃三次项,因此我们需要它与线性项的关系小于允许的误差,这意味着: 1 - (x - x^3/3!) / x = x^2/6 2/6 2 ^ -23,由此得出结论,对于不超过0.000846弧度的自变量,正弦近似计算的精度对我们而言已足够。 对于余弦,如果放弃二次项,则需要大约2倍的精度-0.000488弧度。
因此,我们不需要参数的表格式值小于0.000488弧度。


要构建表,请对输入自变量重新规格化,以使值0对应于0°的角度,而值1则对应于45°的角度,即pi/4=0.78539816弧度。 然后,以上获得的最小角度将转换为0.0006217弧度,或大约为1/1600 1/2048 = 2^-11大于1/2048 = 2^-11


接下来,您将需要根据我们希望如何分配计算来选择表格的步骤,将指数11分为几部分。 例如,您可以将其分为两部分:11 = 6 + 5,那么我们需要两个大小为64和32记录(总共96个)的表,或者三个部分:11 = 4 + 4 + 3(表的大小为16 + 16 + 8 = 40个条目),但是会有更多的乘法运算-具体选择取决于任务和可用资源。


注意:表条目是一对正弦和余弦参数。 如果以单精度存储,则记录大小为8个字节。


例子


让我们以分解4 + 4 + 3为例,然后进行概括。


因此,任务是:为任意x计算sin x的值。


步骤1.将参数x带入标度,将其除以常数pi/4 (我们称其为x' )。


步骤2.根据参数x'的值x'使用公式(1)选择所需的函数,以使其参数的范围为0到1(含0)(让我们调用x'' 。在此步骤中,您还需要标记结果的符号。


[例如,假设正弦为]


第3步。我们将使用这些表(我会提醒您其中有3个表),而表中的索引将是参数x''的二进制表示形式中的“位字段”-小数点后的前4位,然后是4位和3位,其余为业务位将进入其余部分。


表正弦称为S1,S2,S3,表余弦为C1,C2,C3。


由于我们将角度除以pi/4 ,为了得到剩余的弧度,必须将其乘以相同的量。 乘以pi/4的“位”余数用A表示。那么它的正弦等于A,余弦-1。


步骤4.结合发生的一切:


 C12 = C1 C2 - S1 S2 S12 = S1 C2 + C1 S2 C123 = C12 C3 - S12 S2 S123 = S12 C3 + C12 S3 

|sin x| = S123 + C123 A |sin x| = S123 + C123 A (如果您在步骤2中得到正弦)
|sin x| = C123 - S123 A |sin x| = C123 - S123 A (如果您在步骤2中收到余弦)


步骤5.如果在步骤2中我们认为结果应为负,则应将此负值输入结果。


结论


类似的方法既可以用于计算任何大小的实数,也可以用于实现专门的定点算法。 实际上,一次只是使我朝这个方向深入研究的最后一项任务,但这是很久以前的事了。

Source: https://habr.com/ru/post/zh-CN466015/


All Articles