求一元和二元多项式结果

本文介绍了一种优化多项式计算的方法,包括一元多项式和二元多项式的计算过程。通过改进算法减少运算量,提高计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

形如f(x)= a0+a1x+a2x+…+an-1x+anx,为一元多项式,当给定x后,求f(x)。系数矩阵为一维数组array[] ={a0,a1,a2,a3········,an}(顺序一定)
传统方式,先写一个x的n次幂的函数,然后主义与系数相乘,求和。代码如下:

    //求x的N次幂
    private static double power(double x,int times){
        while(times>0){
            x*=x;
            times--;
        }
        return x;
    }

    //求一元多项式结果
    public double polynomial_1(double x,int index,double[] coefficient){//参数分别是,x的值,项数,系数矩阵
        //这是传统写法
        double sum=0;
        for(int i=index-1;i>=0;i--){
            sum+=coefficient[i]*power(x, i);
        }
        return sum;
    }

下面这种更为优秀,首先需要对原式进行变形:
这里写图片描述

    public double polynomial_1(double x,int index,double[] coefficient){    
        //改进版
        double sum=coefficient[index-1];//首先需要先获取第一个系数an-1.
        for(int i=index-2;i>=0;i--){
            sum=sum*x+coefficient[i];//每次求出的sum,都是下一次的系数
        }
        return sum;

    }

这个从代码量和结构上都比第一个优秀。

二元多项式和一元基本一样,只是系数矩阵变成二维数组,行为x,列为y,
假设f(y)是一个一元多项式(m项),那么:
f(x,y)=x^0*f(y)1+x^1*f(y)2+x^2*f(y)3+····+x^n-1*f(y)n.所以可以看成一个一元多项式乘上x:

    public static double polynomial_2(double x,double y,int n,int m,double[][] coefficient){//参数分别是x,y的值,系数矩阵的行和列,系数矩阵
        //以x从0到n排序
        double sum_y;//记录y多项式的和
        double times_x=1.00;//x的n次幂,初始化为x^0=1
        double sum_x=0;//记录x多项式的和,这个要依赖sum_y
        for(int i=0;i<n;i++){//对x
            sum_y=coefficient[i][m-1];//每次取每一行的最后一个系数,
            for(int j=m-2;j>=0;j--){//对y,计算第i行的y多项式结果
                sum_y=sum_y*y+coefficient[i][j];
            }
            sum_x+=sum_y*times_x;//y多多项式结果乘上x
            times_x*=x;//每循环一次x的次数就升高
        }
        return sum_x;       
    }

只要理解了二维矩阵里每一行代表的是对应的x^k的y的多项式系数,k为行数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lsjweiyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值