正文

幂极数在近似计算上的应用2005-07-08 21:29:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/rickone/2676.html

分享到:

今天数学分析考完了,趋着这两天数学感觉还在,就简单谈谈极数在计算机中近似计算的简单应用吧。

极数是一种和的形式,注意只是一种形式,至于它到底是否具有和的意义,还需要数学上的证明,如

∑x^n=1+x+x^2+x^3+...+x^n+...
n=0
也称为无穷极数。

它的意义一般不用管,这是数学研究的人的事,我们只记住它的形式,即一般是具有和的意义的。

极数的一个性质就是收敛或发散,收敛是我们想要的,如

∑(1/2)^n就是我们中学熟悉的等比数列的和,它的和极限是存在的,
n=0
也就是说它收敛于S。

还有x项的级数叫函数项级数,它收敛于一个函数S(x),反过来我们称极数是S(x)的极数展开,正如泰勒公式一样,将一个函数展开成多项式的和。

形如

∑an(x-x0)^n
n=0
的极数称为幂级数,也就是一个在x=x0点展开的多项式,对于计算机来说多项式意味着只需做加法和乘法,而它却可以表示很多比较复杂的初等函数。

对幂级数来说,收敛半径R指的是它的收敛范围,如果它是在x0点展开,则当x取(x0-R,x0+R)时一定收敛于S(x),若x取(-∞,x0-R)和(x0+R,+∞)时一定发散,如果取端点x0±R则不一定,需进一步判断。

R如何求,我不讨论,我只介绍用这样的方法算几个函数的展开。

1、求exp(x)的值,即以e为底,x为指数的函数值。
按泰勒级数展开:
exp(x)=1+x+x^2/2+...+x^n/n!+...

=∑x^n/n!
n=0
所以可以用来近似计算:
double exp(double x)
{
int tag=0;//标记x
double s=0.0,a=1.0,n=1.0;
if(x<0){tag=1;x=-x;}//若x<0,进行标记
while(1)
{
  s+=a;//累加求和
  a=a/n*x;//递推法
  if(a<1e-10)break;//精确值
  n+=1.0;
}
if(tag)s=1/s;//若x<0,exp(x)=1/exp(-x)
return s;
}
它的收敛半径是无穷大,什么数都能对付。
2、求ln(x)的值,即以e为底,x的对数函数值。
按ln(x)在x=1点的泰勒级数展开:
ln(x)=(x-1)-(x-1)^2/2+...+(-1)^(n-1)(x-1)^n/n+...
按这个级数展开有一个麻烦,就是它的收敛半径是1,解决的方法是若x>1,先求出1/x的对数,再在结果前加个负号即可,即若x>1,ln(x)=-ln(1/x),这样就可以保证一定在收敛范围内求值。程序略。

阅读(10170) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册