多项式求值c语言函数 c语言求多项式的值

C语言多项式求值问题

应该是计算机上浮点数导致的吧。因为浮点数比较跟整数比较不一致的。

创新互联建站专注于企业营销型网站、网站重做改版、永定网站定制设计、自适应品牌网站建设、H5场景定制商城开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为永定等各大城市提供网站开发制作服务。

#include

stdio.h

double

polynomial(double

x)

{

return

4*x*x*x

-

x*x

+

7;

}

const

double

EPS=1e-5;

main()

{

double

x,

minx=1,

maxx=2,

step=0.1;

for(x

=

minx;

x

maxx+EPS;

x+=step)

{

printf("polynomial(%.2f)

=

%.2f\n",

x,

polynomial(x));

}

}

C:\test.exe

polynomial(1.00)

=

10.00

polynomial(1.10)

=

11.11

polynomial(1.20)

=

12.47

polynomial(1.30)

=

14.10

polynomial(1.40)

=

16.02

polynomial(1.50)

=

18.25

polynomial(1.60)

=

20.82

polynomial(1.70)

=

23.76

polynomial(1.80)

=

27.09

polynomial(1.90)

=

30.83

polynomial(2.00)

=

35.00

C语言中一维多项式求值

计算多项式 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;

}

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

c语言计算多项式的值?

思路:

因为这是个加法的多项式,用变量s累加,s的最初值是0,第1次向上加1!,第2次加2!,...,第n磁加n! s+=jc;阶乘变量jc在循环中计算。

每项用循环变量i控制,第1次循环取值1,第2次循环取值2,...,第20次循环取值20,这个变量就是要求的阶乘数,i的值每次加1

阶乘是个累乘的运算,用变量jc,初始值是1,第1次向上乘以循环变量值1,就是1!,第2次是前边计算好的1!*2=2!,...,第20次就是19!*20=20!,jc*=i;

由于20!数据比较大,对于32bit的int型变量存放不下,可以考虑用double型数据计算,省得溢出。

因此程序主体算法为:

int i;

double s,jc;

s=0; jc=1;

for ( i=1;i=20;i++ ) { jc*=i; s+=jc; }

printf("%lf\n",s);


本文名称:多项式求值c语言函数 c语言求多项式的值
分享地址:http://scjbc.cn/article/dopsgpj.html

其他资讯