电脑是通过什么公式计算出三角函数的?

LSty

(其实是用的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位。如果继续计算,精度还会提高。

不仅仅是三角函数,还有很多其他复杂函数也是利用级数计算的。


IvanZhu

三角函数等价转换成极数数列表示,电脑计算三角函数是通过调用api库函数或类的方法进行的,底层应是采用迭代算法,在精度范围内计算出极数数列结果,具体实现可不用管,只需传入正确参数,然后调用函数或方法即可得到正确结果


分享到:


相關文章: