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

📄 ketvirta2d.java

📁 Solving integration and differential equations
💻 JAVA
字号:
import java.io.*;

public class Ketvirta2d {
	public static double Function(double x, double u) {
		//return (0.8 - u * u) * Math.cos(x) + 0.4 * u;
		return (1 + ((1 / 5) * u * Math.sin(x)) - (u * u));
	}
	
	public static double RungesKutoMethod (double h, double length, double[] U) {
		double k1 = 0;
		double k2 = 0;
		double k3 = 0;
		double result = 0;
		int i = 0;
		
		for (i = 0; i < (length / h); i++) {
			k1 = Function((0 + i * h), U[i]);
			k2 = Function(((0 + i * h) + (h / 2)), (U[i] + ((k1 * h) / 2)));
			k3 = Function(((0 + i * h) + h), (U[i] - (k1 * h) + (2 * k2 * h)));
			
			U[i + 1] = U[i] + (k1 + 4 * k2 + k3) * h / 6;
			result = U[i + 1];
		}
		
		return result;
	}
	
	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 void main(String[] args) {
		double length = 1.0;
		double h = 1.0;
		double result = 0.0;
		int p = 3;
		double[] U;
		double[] paklaida;
		int n = -1;
		String tmp = "";
		int buffer = 0;
		
		U = new double[10000];
		paklaida = new double[10000];
		
		U[0] = 0;
		
		while (h > 0) {
			n++;
			System.out.print("Iveskite diskretuji zingsni h (0 - pabaiga): ");

			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 {
	            h = Double.parseDouble(tmp);
	        } catch (NumberFormatException exc) {
	            System.out.println("Blogas skaitmuo. Eilute " + tmp + " yra ignoruota!");
			}
			
			if (h > 0) {
				System.out.print("Skaitinis sprendinys apskaiciuotas su zingsniu h = " + h + " yra: ");
				result = RungesKutoMethod(h, length, U);
				System.out.println(result);
				
				System.out.print("Skaitinio sprendinio paklaida: ");
				paklaida[n] = RungesRule(RungesKutoMethod((h / 2), length, U), result, p);
				System.out.println(paklaida[n]);
			}
		}
		
		System.out.println("\nPaklaidu santykis:");
		for (buffer = 0; buffer < (n - 1); buffer++) {
			System.out.println(paklaida[buffer] / paklaida[buffer + 1]);
		}
	}
}

⌨️ 快捷键说明

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