正文

勒让得多项式2007-03-16 03:25:00

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

分享到:

////////////////////////////////////////////////////////////////////////////////
/*勒让得多项式:                                                              */
/*                                                                            */
/*                           1                                   n=0;         */
/*           Pn(x) = {       x                                   n=1;         */
/*                     ((2n-1)xPn-1(x)-(n-1)Pn-2(x))/n           n>1;         */
/*                                                                            */
/* 其中x为未知量,n为项数!!                                                 */
/* 函数原形:float Prrande(float x,unsigned n);                               */
/* 时间:2007\03\16                    by:jun                                 */
/*code:                                                                       */
////////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>

float Prrande(float x,unsigned n)
{/*递归实现,由多项式定义可写:*/
  
      if(n==0)
            return 1;
      else
          if(n==1)
            return x;
      else
          if( n>1 )
            return (float)((2*n-1)*x*Prrande(x,n-1)-(n-1)*Prrande(x,n-2))/n;//very long!             

}

float _Prrande(float x,unsigned n)
{/*非递归实现:先计算前n-1,n-2项的值,再计算第n项的值*/

      float sum,t,_t;
      unsigned i;
     
      t = 1;               
      sum = x;             //初始化
      for(i=2;i<=n;i++)
      {
         
          _t = sum;                 //保存前n-1项值。
          sum = ((2*i-1)*x*_t-(i-1)*t)/i; 
          t = _t;                    //前n-1项变为下一运算的前n-2项!

      }
     
      if(n==0)
         return t;
      else  
         return sum;

}

int main(int argc,char *argv[])
{
   
      float x,sum1,sum2;
      unsigned n;
     
      scanf("%f%u",&x,&n);
      sum1 = Prrande(x,n);
      sum2 = _Prrande(x,n);
      printf("sum1 = %g\tsum2 = %g\n",sum1,sum2);
     
      system("pause");
      return 0;
 
}

阅读(2594) | 评论(0)


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

评论

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