Java实现数组形式的多项式加法、减法、乘法、相除运算
java实现的多项式加法,减法,乘法,除法运算,其中多项式的表示形式为按幂从低到高的系数数组,数组的长度即是多项式的幂
即 数组{1,2,3,4} 表示多项式4x3+3x2+2x+1
运算在工具类Polyn中进行 初始化Polyn必须要传两个参数 即被除数和除数
其中加法,减法和乘法是静态方法 不需实例即可使用
除法需要产生商和余数 所以必须要实例化后才可进行运算
除法的算法大致是:
1、用被除数的最大项除以除数最大项,得多项式p1
2、用p1乘除数,得多项式p2
3、被除数减p2,得p3
4、如果p3的幂小于除数,则输出余数为p3,商为所有p1之和
否则以p3作为新的被除数,转1
初步写的程序如下,没做错误处理和全方位测试,留以后有时间进行。
/**
*
* @author knightzhuwei
*
*/
import java.util.Arrays;
class Polyn{
private double[] dividend;
private double[] divisor;
private double[] result;
private double[] remainder;
public Polyn(double[] dividend,double[] divisor){
this.dividend=dividend;
this.divisor=divisor;
}
//加法 逐项相加 没啥好说的
public static double[] addPolyn(double[] a,double[] b){
double[] heigher=a.length>b.length?a:b;
double[] lower=a.length>b.length?b:a;
double[] res=new double[heigher.length];
for(int i=0;i<heigher.length;i++){
if(i<lower.length){
res[i]=heigher[i]+lower[i];
}
else{
res[i]=heigher[i];
}
}
return res;
}
//减法 逐项想减 稍麻烦一些 最后如果高位是0还要处理
public static double[] subPolyn(double[] a,double[] b){
double[] heigher=a.length>=b.length?a:b;
double[] lower=a.length>=b.length?b:a;
double[] res=new double[heigher.length];
if(heigher==a){
for(int i=0;i<heigher.length;i++){
if(i<lower.length){
res[i]=heigher[i]-lower[i];
}
else{
res[i]=heigher[i];
}
}
}else{
for(int i=0;i<heigher.length;i++){
if(i<lower.length){
res[i]=lower[i]-heigher[i];
}
else{
res[i]=-heigher[i];
}
}
}
int k=res.length-1;
for(;res[k]==0.0&&k>0;k--);
相关文档:
/**
* 堆排序
*
* */
public void heapSort(double[] a){
double temp;
initCreateHeap(a);
for(int i = a.length - 1; i > 0; i --){
temp = a[0];
a[0] = a[i];
a[i] = temp;
createHeap(a, i, 0);
}
}
/**
* 将数组看成完全二叉树,建立最大堆
* */
private ......
1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File("");//设定为当前文件夹
try{
System.out.println(directory.get ......
命令行参数处理是一项令人厌烦的零碎工作,不管您过去已经处理过多少次了,它好像总能重新摆在您的面前。与其一遍又一遍地编写同
一块代码的不同变种,为什么不利用反射来简化参数处理的工作呢?Java 顾问 Dennis Sosnoski
向您展示了如何做到这一点。在本文中,Dennis 简明扼要地介绍了一个开源库,这个库可以使得命令行 ......
反射使您的程序代码能够接入装载到JVM中的类的内部信息,允许您编写与执行时,而不是源代码中选定的类协作的代码。这使反射成
为构建灵活的应用的主要工具。但需注意的是 --如果使用不当,反射的成本很高。在Java平台系列的第2部分中,软件顾问Dennis
Sosnoski介绍了如何使用反射,以及某些相关的成本。您还将找到JavaRef ......