(其实是用的cordic算法,但稍复杂,说一个容易理解的)
级数。
以上就是计算各种三角函数的公式。
什么是级数?级数就是按照一定规律,把一串的数字累加起来的函数。有一些级数,一直加啊加啊加,加到最后,会无限接近某一个值,这个值也就是这个级数和的极限,有极限的级数就是收敛的级数。
对于复杂的,没办法直接算的函数,计算机处理起来往往都是把这个函数先转化成一个极限为该函数的级数,然后计算。
值得注意的是,虽说理论上讲,级数需要累加到无穷多项才能和其极限“无穷接近”,但实际上我们也不需要这么的接近。以sin x为例:
sin1 = 0.8414709848079
(注:这里的1是弧度制的1,不是角度制的1°。弧度制,1 ≈57.32484076°)
用级数计算:
一项: 1 = 1
两项:1 - 1/6 = 0.83333333
三项:1 - 1/6 + 1/120 = 0.841677777
四项:1 - 1/6 + 1/120 - 1/5040 = 0.841468254
五项:1 - 1/6 + 1/120 - 1/5040 +1/362880 = 0.8414710097
这才计算了5项,结果就已经精确到了小数点后8位。如果继续计算,精度还会提高。
不仅仅是三角函数,还有很多其他复杂函数也是利用级数计算的。