基本矩阵运算的Java实现
基本矩阵运算的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();
- }
- }
- }
转载于:https://www.cnblogs.com/jamesf/p/4751601.html
基本矩阵运算的Java实现相关推荐
- java实现基金浮动_Java: 实现自回归分析/线性回归分析/基金各项指标计算等
版权声明:本文为博主原创文章,未经博主允许不得转载. 需Jama矩阵运算库. java版源码: 包含自回归分析/线性回归分析/基金各项指标计算 import Jama.Matrix; public c ...
- java智能算法--机器学习包
参考:https://www.cnblogs.com/jpfss/p/9262907.html 一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算 ...
- Java第三方工具库/包汇总
一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库.它是Matlab.Octave.FreeMat.Scilab的一个克隆, ...
- java jama包_Java调用Jama包完成矩阵运算
Java开发机器学习算法的时候,经常用到矩阵运算,我们可以调用Jama包来完成矩阵运算. Jama包下载地址:https://dl.pandaidea.com/jarfiles/j/Jama/Jama ...
- [025]Java矩阵运算——jama
Java矩阵包 背景 jama是一个基本的线性代数java包,它提供了实数非稀疏矩阵类,程序员可构造操控这些类.对于经常使用到矩阵运算的码农来说,即使不精通线性代数也没有关系,因为jama包提供的功能 ...
- Java中矩阵运算(math3的使用)
math3简介 math3中的矩阵操作 演示结果 本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 下面是 ...
- Java实现矩阵运算——矩阵乘法、矩阵转置、自动填充矩阵行
在做大数据或人工智能开发的过程做难免会遇到矩阵运算,本文在这里给大家实现一个简单的矩阵运算,请看下代码: package test;/*** 矩阵运算* * @author Administrator ...
- Java中矩阵运算Array2DRowRealMatrix(math3的使用)
一:简介 math3是Apache下的一款进行数学计算的一款java开源工具.jar包名称为:commons-math3-3.6.1.jar. 大家可以通过maven或者其他网站进行下 ...
- java jama_Java调用jama实现矩阵运算
一.jama简介 Jama是一个基本的线性代数Java包.包括一个基本的Matrix类和5个矩阵分解类. Matrix类提供了基本的线性代数数值运算的功能,不同的构造函数可以构造双精度和浮点精度的二维 ...
最新文章
- 数据恢复knowledge
- 白血病孕妇产子继母子双双安然
- 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm
- C++容器的insert()函数有以下三种用法: 最终*it=val;
- P4495-[HAOI2018]奇怪的背包【数论,dp】
- Qt学习之Qt基础入门(中)
- 2017年最喜欢的Visual Studio代码扩展
- 没有在该机执行windows脚本宿主的权限_解决办法
- 450g吐司烘烤温度_这不可能是吐司!不,是的
- 2021年中国船用燃气发动机市场趋势报告、技术动态创新及2027年市场预测
- Google Chrome,另类的邪恶垄断?
- 洛谷——P2393 yyy loves Maths II
- 2021-01-22 LR照片处理逻辑及曝光调整中的基本审美
- 洛谷—— P1018 乘积最大
- 色谱计算机常用英文,【分享】色谱常用中英文单词
- 北京信息科技大学计算机科学与技术研究生,2020年北京信息科技大学计算机科学与技术考研经验分享...
- 水库欧神评论雄安新区房产:999年358天
- python语义分割数据标签,将数字标签转彩色标签
- Java项目在Linux环境使用aspose把word转pdf乱码问题
- 微信小程序 重新刷新页面
热门文章
- Python学习1——Python中的 split() 函数
- java代理通俗简单解析
- 【VBA】多条件去重
- iis6 配置python CGI
- 部署和调优 3.4 腾讯企业邮箱免费版 未完
- CentOS 更改MySQL数据库目录位置
- vim下php文件中自动缩排html代码
- 周至四中计算机老师,周至县第四中学顺利承办周至县 “教育信息化技术与教学课堂深度融合交流研讨会”...
- 矢量合成和分解的法则_力的合成与分解
- Centos7安装SVN+HTTP