一维多项式求值

多项式(Polynomial)是基础数学中常用到的概念,多项式就是若干个单项式的和构成的式子。这里首先明确几个基本的概念。多项式中每个单项式称为多项式的项,多项式项的最高次数称为多项式的次数,不含字母的项称为常数项。

一 一维多项式的求值
对于一维多项式就是包含一个变量的多项式,一个普遍的一维多项式的形式如下:

P(x)=an1xn1+an2xn2++a1x+a0

一维多项式的求值就是对于上述多项式,计算在指定的 x 处的函数值。例如:

P(x)=3x6+7x5+2x3+7x27x15

怎么求解
通用多项式的值的算法可以采用递推的形式,首先可以将上述多项式变成如下的等价形式:

P(x)=(((an1x+an2)x+an3)x++a1)x+a0

通过这个表达式可以看出,只要从里往外逐层按照如下的方式递推,可计算得到整个一维多项式的值:

Rn1=an1

Rk=Rk+1x+ak,k=n2,n3,,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:先留个问题吧大概

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值