计算机中使用泰勒公式计算周期函数

 

计算机中使用泰勒公式计算周期函数

计算机只能算加法,那你有没有想过计算机是怎样计算象sinx这样的周期函数?

要想明白这个原理,那你必须知道泰勒公式(高等代数):

f(x) = f(x0) + f’(x0)/1!*(x-x0)1 + f’’(x0)/2!*(x-x0)2 + f’’’(x0)/3!*(x-x0)3 ……+ f(n)(x)/n!*(x-x0)n + Rn(x)

其中

Rn(x) = f(§)/(n+1)!*(x-x0)(n+1) x<§ <x0 x0<§ <x

f’(x), f’’(x), ……f(n)(x)导数

要想证明泰勒公式,你必须先知道拉革朗日中值定理;要想知道拉革朗日中值定理,你必须知道导数;要想知道导数,你又必须知道极限。所以说要想成为未来的电脑高手,学数学是很重要的。

说回来,你要想看证明,可以去买本高数的书来看。这里不证。

 

特殊的,我们令x0 = 0

于是,就得到了麦克劳林公式

f(x) = f(0) + f’(0)/1!*x1 + f’’(0)/2!*x2 + f’’’(0)/3!*x3 ……+ f(n)(0)/n!*xn + Rn(x)

其中

Rn(x) = f(§)/(n+1)!*x(n+1) x<§ <x0 x0<§ <x

f’(x), f’’(x), ……f(n)(x)导数

 

因为Rn(x)xn 的高阶无穷小,所以

f(x) f(0) + f’(0)/1!*x1 + f’’(0)/2!*x2 + f’’’(0)/3!*x3 ……+ f(n)(0)/n!*xn

 

n值越大,精确度越高。

这样,我们就将一个复杂的函数f(x)化成了计算机能计算的多项式。

 

例:sinx

实践证明,对于sin(x), n=5时,sin(x)[0, pi/2] 范围内已经很精确了。

f(0) = 0,

f’(0) = 1,

f’’(0) = 0,

f’’’(0) = -1,

f(4)(0) = 0,

f(5)(0) = 1

 

所以,sin(x) = x – 1/3!*x3 + 1/5!*x5  = x – 1/6*x3 + 1/120*x5

x的值不在[0, pi/2] 范围内时,可以根据sin(x)的周期性把x转换到[0, pi/2] 范围内。

 

代码:

const double PI = 3.1415926;

double my_sin(double r)

{

       double s = 1.0;

       while(r > 2*PI)

              r -= 2*PI;

       while(r < 0)

              r += 2*PI;

 

       if(r<= PI/2)

       {

              s = 1;

       }

       else if(r <= PI)

       {

              s = 1;

              r = PI - r;

       }

       else if(r <= PI*3/2)

       {

              s = -1;

              r = r - PI;

       }

       else if(r <= 2*PI)

       {

              s = -1;

              r = 2*PI - r;

       }

       else

       {

              return 2; // return error

       }

       return s*(r - (1.0/6.0)*pow(r,3) + (1.0/120.0)*pow(r,5));   //if you use pow(), you should include <cmath>

 

}

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值