构造函数中x_high为积分的上界,x_low为积分的下界,segment为分割的区间数(例如10),error为你需要结果的精度(假如你要求结果精确到小数点后四位,则error=0.0001),function为要积分的函数。 class Integrate { private double result=0.0; private double oldresult=0.0; void operate(double x_high,double x_low,int segment,double error,Functions function) { int j=-1; do { oldresult=result; j++; int multi=1; int k=0; while(k<j) { multi=multi*2; k++; } double w=(x_high-x_low)/(double)(segment*multi); double sum=0.0; for(int i=1;(x_low+i*w)<x_high;i++) { if(i%2==1) sum=sum+4*function.operate(x_low+i*w); if(i%2==0) sum=sum+2*function.operate(x_low+i*w); } result=(w/3)*(function.operate(x_low)+sum+function.operate(x_high)); }while(Math.abs(result-oldresult)>error); } double getResult() { return result; } }
|