基本矩阵运算的Java实现

一: 矩阵的加法与减法

规则:矩阵的加法与减法要求两个矩阵的行列完全相等,方可以完成两个矩阵的之间的运算。

举例说明如下


二:矩阵的乘法

规则:矩阵的乘法要求两个矩阵符合A(mx k),  B( k x n)即矩阵A的列数与矩阵B的行数相等,否

则无法完成矩阵运算。举例说明如下:


Java代码如下:

package pet.shop;

public class BasicMatrixMath {
	public final static int OPERATION_ADD = 1;
	public final static int OPERATION_SUB = 2;
	public final static int OPERATION_MUL = 4;
	
	/**
	 * To be able to add two matrices, they must be of the same size
	 * @param matrixa
	 * @param matrixb
	 */
	public int[][] add(int[][] matrixa, int[][] matrixb) {
		if(legalOperation(matrixa, matrixb, OPERATION_ADD)) {
			for(int i=0; i<matrixa.length; i++) {
				for(int j=0; j<matrixa[0].length; j++) {
					matrixa[i][j] = matrixa[i][j] + matrixb[i][j];
				}
			}
		}
		return matrixa;
	}
	
	/**
	 * To be able to substract two matrices, they must be of the same size
	 * 
	 * @param matrixa
	 * @param matrixb
	 */
	public int[][] substract(int[][] matrixa, int[][] matrixb) {
		if(legalOperation(matrixa, matrixb, OPERATION_SUB)) {
			for(int i=0; i<matrixa.length; i++) {
				for(int j=0; j<matrixa[0].length; j++) {
					matrixa[i][j] = matrixa[i][j] - matrixb[i][j];
				}
			}
		}
		return matrixa;
	}
	
	/**
	 * 
	 * @param matrixa
	 * @param matrixb
	 */
	public int[][] multiplication(int[][] matrixa, int[][] matrixb) {
		if(legalOperation(matrixa, matrixb, OPERATION_SUB)) {
			int[][] result = new int[matrixa.length][matrixb[0].length];
			for(int i=0; i<matrixa.length; i++) {
				for(int j=0; j<matrixb[0].length; j++) {
					// i will complete this tomorrow @2012/09/17
					result[i][j] = calculateSingleResult(matrixa, matrixb, i, j); 
				}
			}
			return result;
		} 
		else
		{
			return null;
		}
	}
	
	private int calculateSingleResult(int[][] matrixa, int[][] matrixb, int row, int col) {
		int result = 0;
		for(int k=0; k<matrixa[0].length; k++) {
			result += matrixa[row][k] * matrixb[k][col];
		}
		return result;
	}

	/**
	 * 
	 * @param matrixa
	 * @param b
	 */
	public int[][] multiplication(int[][] matrixa, int b) {
		for(int i=0; i<matrixa.length; i++) {
			for(int j=0; j<matrixa[0].length; j++) {
				matrixa[i][j] = matrixa[i][j] * b;
			}
		}
		return matrixa;
	}
	
	/**
	 * validate whether the parameters is valid parameters.
	 * 
	 * @param a
	 * @param b
	 * @param type
	 * @return
	 */
	private boolean legalOperation(int[][] a, int[][] b, int type) {
		boolean legal = true;
		if(type == OPERATION_ADD || type == OPERATION_SUB)
		{
			if(a.length != b.length || a[0].length != b[0].length) {
				legal = false;
			}
		} 
		else if(type == OPERATION_MUL)
		{
			if(a[0].length != b.length) {
				legal = false;
			}
		}
		return legal;
	}
	
	/**
	 *  test code here !!!!
	 * @param args
	 */
	public static void main(String[] args) {
		int[][] a = new int[][]{{1,2},{3,4}};
		int[][] b = new int[][]{{7, 8}, {6, 5}};
		BasicMatrixMath bmm = new BasicMatrixMath();
		
		System.out.println("addition two matrix");
		int[][] result = bmm.add(a, b);
		for(int i=0; i<result.length; i++) {
			for(int j=0; j<result[0].length; j++) {
				System.out.print("\t" + result[i][j]);
			}
			System.out.println();
		}
		
		System.out.println("substract two matrix");
		result = bmm.substract(a, b);
		for(int i=0; i<result.length; i++) {
			for(int j=0; j<result[0].length; j++) {
				System.out.print("\t" + result[i][j]);
			}
			System.out.println();
		}
		
		System.out.println("multiplex one matrix");
		result = bmm.multiplication(a, 3);
		for(int i=0; i<result.length; i++) {
			for(int j=0; j<result[0].length; j++) {
				System.out.print("\t" + result[i][j]);
			}
			System.out.println();
		}
		
		System.out.println("multiplex two matrix");
		result = bmm.multiplication(a, b);
		for(int i=0; i<result.length; i++) {
			for(int j=0; j<result[0].length; j++) {
				System.out.print("\t" + result[i][j]);
			}
			System.out.println();
		}	
	}
}


  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
要使用Java实现矩阵运算,可以使用数组来表示矩阵,并编写相应的函数来实现不同的运算。以下是一个简单的示例代码,展示了如何实现矩阵的加法、减法和乘法运算: ```java public class MatrixOperations { public static void main(String[] args) { double[][] matrixA = { {1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, 1.0, 1.0} }; double[][] matrixB = { {2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, 2.0, 2.0} }; double[][] result = addMatrices(matrixA, matrixB); printMatrix(result); result = subtractMatrices(matrixA, matrixB); printMatrix(result); result = multiplyMatrices(matrixA, matrixB); printMatrix(result); } public static double[][] addMatrices(double[][] matrixA, double[][] matrixB) { int rows = matrixA.length; int cols = matrixA = matrixA[i][j + matrixB[i][j]; } } return result; } public static double[][] subtractMatrices(double[][] matrixA, double[][] matrixB) { int rows = matrixA.length; int cols = matrixA = matrixA[i][j - matrixB[i][j]; } } return result; } public static double[][] multiplyMatrices(double[][] matrixA, double[][] matrixB) { int rowsA = matrixA.length; int colsA = matrixA += matrixA[i][k * matrixB[k][j]; } } } return result; } public static void printMatrix(double[][] matrix) { int rows = matrix.length; int cols = matrix + " "); } System.out.println(); } System.out.println(); } } ``` 上述代码中,`addMatrices`函数实现矩阵的加法运算,`subtractMatrices`函数实现矩阵的减法运算,`multiplyMatrices`函数实现矩阵的乘法运算。`printMatrix`函数用于打印矩阵。 你可以根据需要修改矩阵的大小和内容,并调用相应的函数来执行不同的矩阵运算。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [用Java实现矩阵基本运算(矩阵与数字相加,矩阵矩阵相加,矩阵矩阵相乘,矩阵与数字相乘)附有详细代码...](https://blog.csdn.net/m0_58941767/article/details/121137711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gloomyfish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值