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;
}
此题的解题重点在于:找到求解的递归关系,然后依据递归关系求解。