Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26556
  • 博文数量: 7
  • 博客积分: 170
  • 博客等级: 入伍新兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-07 23:44
文章分类

全部博文(7)

文章存档

2011年(7)

我的朋友

分类: C/C++

2011-09-15 08:29:40

计算多项式  p(x)=a(n-1)x(n-1)+a(n-2)x(n-2)+.....a1x+a0;

在指定点x处的函数值。

算法:

首先将多项式表述成如下嵌套的方式:

p(x)=(...((a(n-1)+a(n-2))x+a(n-3))x+....a1)x+a0;

然后依次从里向外算(因为x是已知的么),得到递推公式:

U(n-1)=a(n-1)

U(k)=U(k+1)x+a(k); K=n-2,n-3......1,0;

那当算到k=0时,得到的U(0)就是要求的值。

 

下面是用C语言实现的:

double plyv( double a[],double x,int n) //a[]是多项式的系数,n是数组长度。

{

      double u;//一直存放递归结果;

     Int i;

    for(i=n-2;i>=0;i--)

   {

         u=u*x+a[i];

   }

  return u;

}

 

#include

int main()

{

double a[3]={2,3,4};//根据多项式的形式定义数组长度以及个数,如果有的x项没有,则视系数为0;

double s;

double x;

s=plyv(a,x,3);//此为最后结果;

printf("%f",s);

return 0;

}

 

此题的解题重点在于:找到求解的递归关系,然后依据递归关系求解。

阅读(774) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~