用倍角公式解三角函数, 反三角函数.

研究出一个非常有意义的方法,虽然速度很慢,以sin函数为例:精度取32,

sin(1.23e-15) = 1.2299999999999999999999999999997E-15

sin(1.23e-16) = 1.23E-16

sin(1.23e-31) = 1.23E-31,这个计算结果表明,当自变量足够小时(和精度直接相关),sin(x)的值就是x本身,假如用三倍角公式( sin3x=3sinx-4(sinx)^3)作为运算公式,先把x分解到足够小,此时不需要泰勒公式运算,只需要把x的值直接作为返回值用倍角公式还原,就可得到正确答案,

自变量分解方法:x分解是不断除以3分解,这里为了提高效率改为除以3^n,n为正整数,返回运算才用到倍角公式,不要理解错了啊!!!

  x=x/(3^n);                                        '一般来说,n的值越大,你所获精度越高,计算时间也越长。

还原方法:

 For i = 1 To n                      '倍角公式返回后运算部分,n为倍角公式分解次数。
       x=3x-4x^3
 Next

只是精度越高返回运算工作量越大,运行速度不理想。但这种算法本质上脱离了用泰勒公式解三角函数,而且是高精度算法(不是近似算法),并且还适用于其它相似的函数,如反正切函数等等。

在不使用高精度算法(实数高精加减乘除支持)时也可直接用cpu的加减乘除,浮点数除获得简单不错的效果。

这个算法的本质,我认为是三角函数的角和它的倍角之间存在着有规律的联系,这样我们才能根据其中的小角度值,获得我们所需精度的大角度值。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值