算法设计与分析基础
实验报告
应用数学学院
二零一六年六月
实验高斯消去法算法
一、实验性质设计
二、实验学时14学时
三、实验目的
1、掌握高斯消去法的方法和原理。
2、掌握java语言实现该算法的一般流程。
四、实验内容
1、数组的输入。
2、高斯消去法的算法流程。
4、运行结果的输出。
五、实验报告
Ⅰ、算法原理
通过一系列的初等变换,交换方程组中两个方程的位置,把一个方程替换为它的非零倍,把一个方程替换为它和另一个方程倍数之间的和
或者差。
Ⅱ、Java算法代码:
import java.util.Scanner;
publicclass Gaosi {
publicstaticvoid main(String[] args) {
Gao ga = new Gao();
ga.set();
ga.yunSuan();
}
}
class Gao {
double A[][], B[], X[], ss, sum;
int n, k, j, t;
void set() {
System.out.println("请输入方程组中方程的个数:");
Scanner sc = new Scanner(System.in); n = sc.nextInt();
A = newdouble[n][n];
B = newdouble[n];
X = newdouble[n];
System.out.println("请输入各方程的系数:");
Scanner sd = new Scanner(System.in); for (int i = 0; i <n; i++) {
for (int j = 0; j <n; j++) {
A[i][j] = sd.nextDouble();
}
}
System.out.println("请输入方程组等号右边的数字:");
Scanner as = new Scanner(System.in); for (int i = 0; i <n; i++) {
B[i] = as.nextDouble();
}
}
void yunSuan() {
for (k = 0; k<= n - 2; k++) {
for (int i = k + 1; i <= n - 1; i++) {
ss = A[i][k] / A[k][k];
for (j = k + 1; j<n; j++) {
A[i][j] = A[i][j] - A[k][j] * ss;
}
B[i] = B[i] - ss * B[k];
}
}
System.out.println("解得X的值为:");
X[n - 1] = B[n - 1] / A[n - 1][n - 1];
System.out.println("x"+ t+ "="+ X[n- 1]);
for (int i = n - 2; i >= 0; i--) {
t = i + 1;
sum = B[i];
for (j = i + 1; j<= n - 1; j++) {
sum = sum - A[i][j] * X[j];
}
X[i] = sum / A[i][i];
System.out.println("A" + t + "=" + X[i]);
}
}
}
Ⅲ、运行结果显示:
图(1)。