sin() 和 cos() 等函数的简单逼近 您所在的位置:网站首页 sin函数表达式 sin() 和 cos() 等函数的简单逼近

sin() 和 cos() 等函数的简单逼近

2023-03-03 13:18| 来源: 网络整理| 查看: 265

Programming 课程布置的作业中要自己实现 sin(),cos(),exp() 等函数。这些函数都可以使用泰勒级数来逼近,如下图所示:

sin() 函数的逼近

由于用泰勒级数实现比较麻烦,需要迭代很多次。又在网上找到了一个简单又快速的实现方法。简单来说就是使用一元二次方程的公式,及一些已知点的值。如下所示:

=>

=> if(x>0) {

} => else{

}

逼近的效果还不错,如下所示:

实现代码如下所示:

float mysin(float x) { const float B = 1.2732395447; // 4/pi const float C = -0.4052847346; // -4/(pi^2) float y = 0; //always wrap input angle to -PI..PI if (x < -3.14159265) x += 6.28318531; else if (x > 3.14159265) x -= 6.28318531; if(x > 0) y = B*x + C*x*x; else y = B*x - C*x*x; return y; }cos() 函数的逼近

有了 sin() 函数的实现,cos() 的实现就容易多了,毕竟两者之间是有转换公式的:

实现代码如下:

float mycos(float x) { const float Q = 1.5707963268; // pi/2 const float PI =3.1415926536; x += Q; if(x > PI) x -= 2 * PI; return( mysin(x)); }exp() 函数的逼近

使用下面的泰勒级数,可以发现当 n = 256 时,逼近的效果会非常好。

逼近结果如下图所示:

实现代码如下:

float myexp(float x) { x = 1.0 + x/256; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; return x; }参考

[1]. [译]一种简单,快速,精准的sin/cos函数模拟,及as3实现 [2]. https://gist.github.com/geraldyeo/988116 [3]. exp()近似计算,exp快速算法,C语言实现exp



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有