From 800c30bed06e42a4995babd51f9f05a6270d52d5 Mon Sep 17 00:00:00 2001 From: lirunyi <54633216+LiRunyi2001@users.noreply.github.com> Date: Tue, 3 Mar 2020 11:04:38 +0800 Subject: [PATCH] 2020/3/3 --- Calculator.java | 53 +++++++++++++++++ Eye.java | 17 ++++++ Gauss.java | 155 ++++++++++++++++++++++++++++++++++++++++++++++++ Juzhen.java | 55 +++++++++++++++++ Main.java | 82 +++++++++++++++++++++++++ MatrixMine.iml | 11 ++++ 6 files changed, 373 insertions(+) create mode 100644 Calculator.java create mode 100644 Eye.java create mode 100644 Gauss.java create mode 100644 Juzhen.java create mode 100644 Main.java create mode 100644 MatrixMine.iml diff --git a/Calculator.java b/Calculator.java new file mode 100644 index 0000000..c1667ff --- /dev/null +++ b/Calculator.java @@ -0,0 +1,53 @@ +public class Calculator { + + public double[][] plus(Juzhen m,Juzhen n){ + double[][] c=new double[20][20]; + for(int i=0;i= 0; i--) { + for (int j = i - 1; j >= 0; j--) { +// System.out.println("arr[" + j + "][" + (col - 1) + "] = " + arr[j][col - 1]); +// System.out.println("arr[" + j + "][" + i + "] = " + arr[j][i]); +// System.out.println("arr[" + i + "][" + i + "] = " + arr[i][i]); +// System.out.println("arr[" + j + "][" + i + "] * arr[" + i + "][" + (col - 1) + "] = " +// + arr[j][i] * arr[i][col - 1]); +// printArr(arr); + arr[j][col - 1] -= arr[j][i] * arr[i][col - 1]; + arr[j][i] = 0; + +// printArr(arr); + } + + } + + return arr; + } + + /* + * 用当前行消去下面的所有元素 + */ + public double[][] elimination(double[][] arr, int i) { + int row = arr.length; + int col = arr[0].length; + double subNum; + for (int k = i + 1; k < row; k++) { // i行消去下面的行 + subNum = arr[k][i]; + for (int j = i; j < col; j++) { + arr[k][j] -= (arr[i][j] * subNum); + } + } + + return arr; + } + + /* + * arr 为行列式 i行,j列 寻找 i -> row 这些行中 j列上最大的元素 并返回该行的下标 + */ + public int SelectIndex(double[][] arr, int j) { + int row = arr.length; + int index = j; + + // 寻找 j列中最大的元素的下标 + for (int k = j; k < row; k++) { + if (Math.abs(arr[k][j]) > Math.abs(arr[index][j])) { + index = k; + } + } + + return index; + } + + /* + * 交换 i, j 两行上的所有元素 + */ + public double[][] swapRow(double[][] arr, int i, int j) { + int col = arr[0].length; // 行列式的列数 + double tmp; + + for (int k = 0; k < col; k++) { + tmp = arr[i][k]; + arr[i][k] = arr[j][k]; + arr[j][k] = tmp; + } + + return arr; + } + + public void printArr(double arr[][],int row,int column) { + for (int i = 0; i < row; i++) { + for (int j = 0; j < column; j++) { + System.out.print(arr[i][j] + " "); + } + System.out.println(); + } + System.out.println(); + } + + /*public static void main(String[] args) { + float arr[][] = { { 2, 3, 11, 5, 2 }, { 1, 1, 5, 2, 1 }, { 2, 1, 3, 2, -3 }, { 1, 1, 3, 3, -3 } }; + + + Gauss gauss = new Gauss(); + System.out.println("高斯消元求解前:"); + gauss.printArr(arr); + gauss.Gauss(arr); + + }*/ + + + +} diff --git a/Juzhen.java b/Juzhen.java new file mode 100644 index 0000000..7d0c44d --- /dev/null +++ b/Juzhen.java @@ -0,0 +1,55 @@ +public class Juzhen { + double[][] a=new double [20][20]; + int row; + int column; + Juzhen(int row,int column) + { + this.row=row; + this.column=column; + } + public int getRow() { + return row; + } + + public void setRow(int row) { + this.row = row; + } + + public int getColumn() { + return column; + } + + public void setColumn(int column) { + this.column = column; + } + +// public void Note(){ +// System.out.println("This is my Matrix Class which max range is 20"); +// } + + public double[][] getA() { + return a; + } + + public void setA(double[][] a) { + this.a = a; + } + + public void show(){ + for(int i=0;i + + + + + + + + + + \ No newline at end of file