目的要求:用追赶法求解线性方程组Ax=b,式中A为n阶非奇异方阵,x,b为n阶列向量。要求编写实验程序(语言不限),给出实验结果。
题目1 例5.4
package com.code; public class main { public static void main(String[] args) { dao.temo(); } }
package com.code; import java.util.Scanner; public class dao { public static void temo(){ int n; //矩阵大小 Scanner s = new Scanner(System.in); System.out.print("请输入矩阵的大小:"); n = s.nextInt(); int[][] A = new int[n][n], L= new int[n][n], U= new int[n][n]; int[] f = new int[n], y = new int[n], x = new int[n]; System.out.println("输入A矩阵的值:"); for (int i = 0; i < n; i++){ for(int j = 0; j < n; j ++){ A[i][j] = s.nextInt(); } } System.out.println("输入f矩阵的值:"); for (int i = 0; i < n; i++) { f[i] = s.nextInt(); } for (int i = 0; i < n; i++) { //计算U U[i][i] = 1; } U[0][1] = A[0][1] / A[0][0]; for (int i = 1; i < n - 1; i++) { U[i][i+1] = A[i][i+1] / (A[i][i] - A[i][i-1] * U[i-1][i]); } L[0][0] = A[0][0]; //计算L for (int i = 1; i < n; i++) { L[i][i] = A[i][i] - A[i][i-1] * U[i-1][i]; L[i][i-1] = A[i][i-1]; } y[0] = f[0] / A[0][0]; //计算Y for (int i = 1; i < n; i++) { y[i] = (f[i] - A[i][i-1] * y[i-1]) / (A[i][i] - A[i][i-1] * U[i-1][i] ); } x[n-1] = y[n-1]; //计算X for (int i = n-2; i >= 0; i--) { x[i] = y[i] - U[i][i+1] * x[i+1]; } displayTwo(U,n,'U'); displayTwo(L,n,'L'); displayOne(y,n,'y'); displayOne(x,n,'x'); } public static void displayTwo(int arr[][], int n, char c){ System.out.println("-------------------"); System.out.println("矩阵" + c + ":"); for (int[] ints : arr) { for (int anInt : ints) { System.out.print(anInt + " "); } System.out.println(); } System.out.println(); } public static void displayOne(int arr[], int n, char c){ System.out.println("-------------------"); System.out.println("矩阵" + c + ":"); for (int i : arr) { System.out.print(i + " "); } System.out.println(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)