求一元和二元多项式结果
来源:互联网 发布:linux系统分区详解 编辑:程序博客网 时间:2024/05/22 21:08
形如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为行数。
阅读全文
0 0
- 求一元和二元多项式结果
- 一元、二元多项式计算函数
- 求一元多项式
- 一元多项式求积
- 利用结点数据类型,求两个一元多项式的和
- 一元多项式表示和相加
- 一元多项式表示和相加
- 一元多项式加和乘
- 急求一元多项式相加的程序,希望得到c#和C++的语言版
- 统计一元和二元给句子打分
- 第三章 一元和二元操作符
- 二元多项式
- 二元多项式
- 二元多项式
- 二元多项式
- 二元多项式
- 二元多项式
- 二元多项式
- mysql语法_零碎记录
- Python 爬虫尽量不被发现策略
- Android 反编译获取class代码
- 交叉编译tcpdump到powerpc平台
- Ubuntu下安装Jdk和Eclipse
- 求一元和二元多项式结果
- mysql数据库中的btree索引和hash索引的区别
- SCI收录期刊——采矿和选矿
- Java 编程题目 第五题
- MySQL高级设计之四、索引
- c#中sqlite数据库相关的一些操作总结
- Java概念的通俗理解
- Dom事件02
- 移动端/pc字体两边对齐