矩阵相关运算的java实现

来源:互联网 发布:数据库的英文单词 编辑:程序博客网 时间:2024/06/16 20:46
<pre name="code" class="java">/** * 矩阵的加、减、乘、乘方,其中两矩阵为同阶方阵 * @author  * */public class Matrix {/* * 加法 */public static int[][] add(int[][] A, int[][] B){int[][] result = new int[A.length][A.length];for(int i = 0;i<A.length;i++){for(int j = 0;j<A[0].length;j++){result[i][j] = A[i][j]+B[i][j];}}return result;}/* * 减法 */public static int[][] sub(int[][] A, int[][] B){int[][] result = new int[A.length][A.length];for(int i = 0;i<A.length;i++){for(int j = 0;j<A[0].length;j++){result[i][j] = A[i][j]-B[i][j];}}return result;}/* * 乘法 */public static int[][] mutiply(int[][] A, int[][] B){int n = A.length;int[][] result = new int[n][n];for(int i = 0;i<n;i++){for(int j = 0;j<n;j++){int sum = 0;for(int k = 0;k<n;k++){sum+=(A[i][k]*B[k][j]);}result[i][j] = sum;}}return result;}/* * 返回n*n单位矩阵的函数 */public static int[][] identity(int n){int[][] A = new int[n][n];for(int i = 0;i<n;i++){for(int j = 0;j<n;j++){A[i][j] = 0;}}for(int i = 0;i<n;i++){A[i][i] = 1;}return A;}/* * 采用分治法求矩阵乘方 */public static int[][] pow(int[][] A, int x){if(x==0) return identity(A.length);if(x%2>0) return mutiply(pow(A, x-1), A);int[][] half = pow(A, x/2);return mutiply(half, half);}public static void main(String[] args) {// TODO Auto-generated method stubMatrix m = new Matrix();int[][] A = {{1,2,3},{1,2,3},{1,2,3}};int[][] B = {{1,2,3},{1,2,3},{1,2,3}};System.out.println("***********************");int[][] result = Matrix.mutiply(A, B);for (int i = 0; i < result.length; i++) {for (int j = 0; j < result[0].length; j++) {System.out.print(result[i][j]+" ");}System.out.println();}System.out.println("***********************");int[][] result0 = Matrix.add(A, B);for (int i = 0; i < result0.length; i++) {for (int j = 0; j < result0[0].length; j++) {System.out.print(result0[i][j]+" ");}System.out.println();}System.out.println("***********************");int[][] result2 = Matrix.sub(A, B);for (int i = 0; i < result2.length; i++) {for (int j = 0; j < result2[0].length; j++) {System.out.print(result2[i][j]+" ");}System.out.println();}System.out.println("***********************");int[][] result1 = Matrix.pow(A, 4);for (int i = 0; i < result1.length; i++) {for (int j = 0; j < result1[0].length; j++) {System.out.print(result1[i][j]+" ");}System.out.println();}}}

使用java实现的矩阵的相关运算,包括加、减、乘、乘方,矩阵乘方采用分治法实现

0 0