ch6_1.java

来自「Java环境下实现的数值分析程序」· Java 代码 · 共 63 行

JAVA
63
字号
class ch6_1{
	public static double Function1(double x){
	  return Math.pow((1+Math.pow(x,2)),-1);
	}
	
	public static double Function2(double x){
		return (Math.sin(x))/x;
	}
	
	public static void EX1(double a,double b){
		double l=b-a;
		double T[]=new double[32];
                double S[]=new double[32];
		double C[]=new double[32];
		for(int i=0;i<16;i++){
			T[i]=0;S[i]=0;C[i]=0;
		}
		double sum=0;
		int j=1;
		do{
			for(int k=0;k<(int)(Math.pow(2,j-1));k++){
			    sum=sum+l/Math.pow(2,j)*Function1(l/Math.pow(2,j)*(2*k+1));
			}
			T[j]=T[j-1]/2+sum;
			S[j]=(4*T[j]-T[j-1])/3;
			if(j>=2) C[j]=(16*S[j]-S[j-1])/15;
			j++;
			sum=0;
		}while(((Math.abs(C[j-1]-C[j-2])>0.0000005)&(j>2))||(j<=2));
		System.out.println("C["+(j-1)+"]="+C[j-1]);
	}

	public static void EX2(double a,double b){
		double l=b-a;
		double T[]=new double[32];
                double S[]=new double[32];
		double C[]=new double[32];
		for(int i=0;i<16;i++){
			T[i]=0;S[i]=0;C[i]=0;
		}
		double sum=0;
		int j=1;
		do{
			for(int k=0;k<(int)(Math.pow(2,j-1));k++){
			    sum=sum+l/Math.pow(2,j)*Function2(l/Math.pow(2,j)*(2*k+1));
			}
			T[j]=T[j-1]/2+sum;
			S[j]=(4*T[j]-T[j-1])/3;
			if(j>=2) C[j]=(16*S[j]-S[j-1])/15;
			j++;
			sum=0;
		}while(((Math.abs(C[j-1]-C[j-2])>0.0000005)&(j>2))||(j<=2));
		System.out.println("C["+(j-1)+"]="+C[j-1]);
	}
	
	public static void main(String[]args){
		System.out.println("求例1:");
		EX1(0,1);
		System.out.println("*********");
		System.out.println("求例2:");
		EX2(0,1);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?