<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 stub
Matrix 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实现的矩阵的相关运算,包括加、减、乘、乘方,矩阵乘方采用分治法实现