⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ketvirta.java

📁 Solving integration and differential equations
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.*;

public class Ketvirta {
	public static double a = 0.0;//Math.PI / 2;
	public static double b = 1.0;//0.0;
	
	public static double Formula(double t) {
		return (t * Math.cos(t));
		//return Math.pow(t, 2) * 3;
	}
	
	public static double RungesRule(double Sn, double S2n, double p) {
		if (Math.abs(Sn - S2n) < 0) {
			return (((-1) * Math.abs(Sn - S2n)) / (Math.pow(2, p) - 1));
		}
		else {
			return (Math.abs(Sn - S2n) / (Math.pow(2, p) - 1));
		}
	}
	
	public static double VariableChange(double a, double b, double s) {
		double fff = ((a + b) / 2) + s * ((b - a) / 2);
		return Formula(fff);
	}
	
	public static double TrapezeMethod (int n) {
		double h = 0.0;
		double sum = 0.0;
		double T = 0.0;
		int counter = 0;
		
		h = (b - a) / n;
		
		for (counter = 1; counter < n; counter++) {
			sum = sum + Formula(a + h * counter);
		}
		
		return ((h / 2) * (Formula(a) + Formula(b)) + h * sum); //T
	}
	
	public static int IntegerRead() {
        String tmp = "";
		int skaiciukas = 0;

		try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            tmp = br.readLine();
		} catch (IOException exc) {
            System.out.println("Skaitymo klaida: " + exc);
            System.exit(0);
		}

		try {
            skaiciukas = Integer.parseInt(tmp);
        } catch (NumberFormatException exc) {
            System.out.println("Blogas skaitmuo. Eilute " + tmp + " yra ignoruota!");
		}

		return skaiciukas;
    }
	
	public static void Trapeze(int buffer) {
		int N1 = 10;
		int N2 = 20;
		int N3 = 40;
		int N4 = 80;
		int N5 = 160;
		int N6 = 320;
		int N = 0;
		double pakl = 0.0;
		int p = 2;
		double T = 0.0;
		double T1 = 0.0;
		double T2 = 0.0;
		double T3 = 0.0;
		double T4 = 0.0;
		double T5 = 0.0;
		double T6 = 0.0;
		double[] paklaidos;
		int pos = 0;
		
		paklaidos = new double[6];
		
		if (buffer == 1) {
			System.out.println("\n\n\n---------------- Trapeciju metodas -------------\n");
			System.out.print("Iveskite N: ");
	    	N = IntegerRead();
	        T = TrapezeMethod(N);
	        System.out.println("Trapeciju metodo atsakymas: " + T);
	        pakl = RungesRule(TrapezeMethod(N / 2), TrapezeMethod(N), p);
	        System.out.println("Paklaida = " + pakl);
	        System.out.println("\n------------------------------------------------\n\n");
		}
		else if (buffer == 2) {
			System.out.println("\n\n\n-------------- Trapeciju metodas (N = 10, N = 20, N = 40, N = 80) -------------\n");
	        System.out.println("N = 10");
	        T1 = TrapezeMethod(N1);
	        System.out.println("Trapeciju metodo atsakymas: " + T1);
	        pakl = RungesRule(T1, (T1 / 2), p);
	        paklaidos[pos] = pakl;
	        pos++;
	        System.out.println("Paklaida nr.1: " + pakl);
	
	        System.out.println("\nN = 20");
	        T2 = TrapezeMethod(N2);
	        System.out.println("Trapeciju metodo atsakymas: " + T2);
	        pakl = RungesRule(T1, T2, p);
	        paklaidos[pos] = pakl;
	        pos++;
	        System.out.println("Paklaida nr.2: " + pakl);
	
	        System.out.println("\nN = 40");
	        T3 = TrapezeMethod(N3);
	        System.out.println("Trapeciju metodo atsakymas: " + T3);
	        pakl = RungesRule(T2, T3, p);
	        paklaidos[pos] = pakl;
	        pos++;
	        System.out.println("Paklaida nr.3: " + pakl);
	
	        System.out.println("\nN = 80");
	        T4 = TrapezeMethod(N4);
	        System.out.println("Trapeciju metodo atsakymas: " + T4);
	        pakl = RungesRule(T3, T4, p);
	        paklaidos[pos] = pakl;
	        pos++;
	        System.out.println("Paklaida nr.4: " + pakl);
	        
	        System.out.println("\nN = 160");
	        T5 = TrapezeMethod(N5);
	        System.out.println("Trapeciju metodo atsakymas: " + T5);
	        pakl = RungesRule(T4, T5, p);
	        paklaidos[pos] = pakl;
	        pos++;
	        System.out.println("Paklaida nr.5: " + pakl);
	        
	        System.out.println("\nN = 200");
	        T6 = TrapezeMethod(N6);
	        System.out.println("Trapeciju metodo atsakymas: " + T6);
	        pakl = RungesRule(T5, T6, p);
	        paklaidos[pos] = pakl;
	        System.out.println("Paklaida nr.5: " + pakl);
	        
	        System.out.println("\nPaklaidu santykis nr. 1 = " + (paklaidos[0] / paklaidos[1]));
	        System.out.println("Paklaidu santykis nr. 2 = " + (paklaidos[1] / paklaidos[2]));
	        System.out.println("Paklaidu santykis nr. 3 = " + (paklaidos[2] / paklaidos[3]));
	        System.out.println("Paklaidu santykis nr. 4 = " + (paklaidos[3] / paklaidos[4]));
	        System.out.println("Paklaidu santykis nr. 4 = " + (paklaidos[4] / paklaidos[5]));
	        System.out.println("\n------------------------------------------------\n\n");
	    }
	    else {
	    	System.out.println("Klaida! Gautas blogas parametras!");
	    	System.exit(1);
	    }
	}
	
	public static double GaussMethod(double n, int buffer) {
		double ats = 0;
		double h = (b - a) / n;
		int counter = 0;
		double m1 = 0.0;
		double m2= 0.0;
		
		if (buffer == 3) {				//trecios eiles Gauso metodas
	        double c1 = 5.0 / 9.0;
	        double c2 = 8.0 / 9.0;
	        double c3 = 5.0 / 9.0;
	        double x1 = 0 - Math.sqrt(0.6);
	        double x2 = 0;
	        double x3 = Math.sqrt(0.6);

	        for (counter = 0; counter < n; counter++) {
	            m1 = a + (counter * h);
	            m2 = a + (counter + 1) * h;
	            ats = ats + ((m2 - m1) / 2) * (c1 * VariableChange(m1, m2, x1) + c2 * VariableChange(m1, m2, x2) + c3 * VariableChange(m1, m2, x3));
	        }
		}
		else if (buffer == 2) {			//antros eiles Gauso metodas
			double x1 = (-1) / Math.sqrt(3);
			double x2 = 1 / Math.sqrt(3);
			
			for (counter = 0; counter < n; counter++) {
	            m1 = a + (counter * h);
	            m2 = a + (counter + 1) * h;
	            ats = ats + ((m2 - m1) / 2) * (VariableChange(m1, m2, x1) + VariableChange(m1, m2, x2));
	        }
		}
		else {
			System.out.println("Klaida! Blogas parametras!");
			System.exit(1);
		}
		
		return ats;
    }
	
	public static void Gauss(int buffer) {
		int N1 = 10;
		int N2 = 20;
		int N3 = 40;
		int N4 = 80;
		int N5 = 160;
		int N6 = 320;
		int N = 0;
		double pakl = 0.0;
		int p = 0;
		double T = 0.0;
		double T1 = 0.0;
		double T2 = 0.0;
		double T3 = 0.0;
		double T4 = 0.0;
		double T5 = 0.0;
		double T6 = 0.0;
		double[] paklaidos;
		int pos = 0;
		
		paklaidos = new double[6];
		
		if (buffer == 21) {			
			p = 4;
			System.out.println("\n\n\n---------------- Gauso 2-os eiles metodas -------------\n");
			System.out.print("Iveskite N: ");
	    	N = IntegerRead();
	        T = GaussMethod(N, 2);
	        System.out.println("Gauso 2-os eiles metodo atsakymas: " + T);
	        pakl = RungesRule(GaussMethod((N / 2), 2), GaussMethod((N), 2), p);
	        System.out.println("Paklaida = " + pakl);

⌨️ 快捷键说明

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