gaussian.java

来自「数值计算(科学计算)实验代码高斯消元楚列斯基分解」· Java 代码 · 共 59 行

JAVA
59
字号
import java.math.*;

public class Gaussian {
	public double[] Gaussian(double[][] a, double[] b, int n) {
		// double[] x=new double[n];
		double d = 0, t = 0, sum = 0;
		int k = 0, l = 0, i = 0, j = 0;
		while (k < n) {
			// *****选主元素*****

			d = a[k][k];
			l = k;

			for (i = k + 1; i < n; i++) {
				if (Math.abs(a[i][k]) > Math.abs(d)) {
					d = a[i][k];
					l = i;
				}
			}
			if (l != k) {
				for (j = k; j < n; j++) {
					t = a[l][j];
					a[l][j] = a[k][j];
					a[k][j] = t;
				}
				t = b[k];
				b[k] = b[l];
				b[l] = t;
			}
			// **************
			// *****消元*****
			for (j = k + 1; j < n; j++) {
				a[k][j] = a[k][j] / a[k][k];
			}
			b[k] = b[k] / a[k][k];

			for (i = k + 1; i < n; i++) {
				for (j = k + 1; j < n; j++) {
					a[i][j] = a[i][j] - a[i][k] * a[k][j];
				}
				j = 0;
				b[i] = b[i] - a[i][k] * b[k];
			}
			k++;
			// **************
		}
		// *****回代*****
		for (i = n - 2; i >= 0; i--) {
			sum = 0;
			for (j = i + 1; j < n; j++) {
				sum = sum + a[i][j] * b[j];
			}
			b[i] = b[i] - sum;
		}
		// **************
		return b;
	}
}

⌨️ 快捷键说明

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