f(x)=∑ ​i=0 ​n ​​ (a[i]×x ​i ​​ )的计算方法

**


题干要求

其中n是多项式的阶数,a[]中存储系数,x是给定点。函数须返回多项式f(x)的值。 这里主要讲解自定义函数的原理:

一、涉及的数学知识

  1. 用到多项式的合并与展开
    简单 例子:3x^2+2x+1=x(3x+2)+1
  2. 本题假设我们输入 :n=3 ; x =2.0;
    a[0]=1 ; a[1]=1;a[2]=2 ;a[3]=3;
    则f(x)=a[0] * (x^0) + a[1] * (x^1)+ a[2] * (x ^2)+a[3] * (x^3)=
    x(x(a[3])x+a[2])+a[1])+a[0] ;
    用循环计算 x(x(a[3])x+a[2])+a[1])+a[0]; 然后依照先算括号里面的原则计算。
    用到的循环语句是 add = add * x + a[i];
    add 等于0是为了第一次计算引出a[3];

二、代码实现

#include <stdio.h>

#define MAXN 10

double f( int n, double a[], double x );

int main()
{
    int n, i;
    double a[MAXN], x;

    scanf("%d %lf", &n, &x);
    for ( i=0; i<=n; i++ )
        scanf(%lf”, &a[i]);
    printf("%.1f\n", f(n, a, x));
    return 0;
}
double f( int n, double a[], double x )
{
    double add = 0;
    for(int i = n; i > -1; i--)
    {
        add = add * x + a[i];
    }
    return add;
}

总结

我们要善用学的数学知识解决问题,本体关键是对多项式合并,然后利用循环从里往外算。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值