多项式(Polynomial)是基础数学中常用到的概念,多项式就是若干个单项式的和构成的式子。这里首先明确几个基本的概念。多项式中每个单项式称为多项式的项,多项式项的最高次数称为多项式的次数,不含字母的项称为常数项。
一 一维多项式的求值
对于一维多项式就是包含一个变量的多项式,一个普遍的一维多项式的形式如下:
P(x)=an−1xn−1+an−2xn−2+⋯+a1x+a0
一维多项式的求值就是对于上述多项式,计算在指定的x处的函数值。例如:
怎么求解
通用多项式的值的算法可以采用递推的形式,首先可以将上述多项式变成如下的等价形式:
P(x)=(⋯((an−1x+an−2)x+an−3)x+⋯+a1)x+a0
通过这个表达式可以看出,只要从里往外逐层按照如下的方式递推,可计算得到整个一维多项式的值:
Rn−1=an−1
Rk=Rk+1x+ak,k=n−2,n−3,⋯,1,0
通过逐层计算后,得到的R0便是多项式P(x)的值,我们依照这思路来编写一维多项式的算法,示例代码如下:
double polynomial1D(double a[],int n,double x)///1D表示一维的意思
{
double result;
result=a[n-1];
for(int i=n-2;i>=0;i--)///递推算法计算
{
result=result*x+a[i];
}
return result;返回计算结果
}
其中,输入参数 n 为多项式的项数,数组 a[ ]依次存放多项式的n个系数,x便是指定变量的值,函数返回的就是多项式在指定的x点的值:
应用举例:
#include<cstdio>
double polynomial1D(double a[],int n,double x)
{
double result;
result=a[n-1];
for(int i=n-2;i>=0;i--)
{
result=result*x+a[i];
}
return result;
}
int main()
{
static double a[7]={-15.0,-7.0,7.0,2.0,-3.0,7.0,3.0};
static double x[6]={-2.0,-0.5,1.0,2.0,3.7,4.0};
double result;
for(int i=0;i<6;i++)
{
result=polynomial1D(a,7,x[i]);
printf("x=%5.2lf时,p(x)=%13.7e\n",x[i],result);
}
return 0;
}
%13.7e:先留个问题吧大概
本文介绍了一维多项式的概念及其求值方法,并提供了一个简单的递推算法实现。通过实例演示了如何计算特定点上多项式的值。
4074

被折叠的 条评论
为什么被折叠?



