二维矩阵乘法、矩阵转置、 矩阵与向量乘法(java实现)





相关代码如下:
package algorithms;
//矩阵库

public class Matrisx {

/***向量点相乘 double dot(double[] x, double[] y)*矩阵与矩阵之积 double[][] mult(double[][] a,double[][]b)*矩阵转置 double[][] transpose(double[][] a)* 向量和矩阵之积 double[] mult(double[] y,double[][] a)*/
//向量点乘:对应元素乘积和
public static double dot(double[] x, double[] y)
{double a = 0;//相乘条件:必须长度相等if( x.length != y.length){//抛出异常return a;}//dot 是相应元素乘积和for(int i = 0; i < x.length; i++){a += x[i] * y[i];}return a;}
//矩阵与矩阵相乘
/*** 条件:它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同* A*B=C 其中C的行数等于A的行数,C的列数等于B的列数** 定义:一个n行m列的矩阵乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵* 其中的第i行第j列位置上的数等于它前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应* 相乘后所有m个乘积的和*/
public static double[][] mult(double[][] a,double[][]b)
{int M = a[0].length;//M为a的列数int N = a.length;//N为a的行数int P = b[0].length;//P为b的列数// Q==M 可不写int Q = b.length;//Q为b的行数double[][] c = new double[N][P];//矩阵c取a的行数,b的列数//条件是 :a矩阵的列数等于b矩阵的行数if( M != P ){//此处抛出异常}//矩阵c应该是N行P列的for(int i = 0; i < N; i++){for(int j = 0; j < P; j++){//关键:这里的终止条件是M,也就是a的列数(其实也可以是b的行数Q 因为 Q == M)for(int k = 0; k < M; k++){c[i][j] += a[i][k] * b[k][j];}}}return c;
}/*** Matrix transposition*矩阵转置*/
public static double[][] transpose(double[][] a)
{double[][] b = new double[a[0].length][a.length];for(int i = 0; i < a[0].length; i++){for(int j = 0; j < a.length; j++){/*** 这种方法只适用于方阵,即a[N][N],如果用于a[M][N]( M!=N ),会出现越界现象* double temp = a[i][j];* a[i][j] = a[j][i];* a[j][i] = temp;*///采用新建一个数组的方式来赋值内外循环条件会变成相反b[i][j] = a[j][i];}}return b;
}/***向量乘以矩阵* 就是相当于只有一行n列的矩阵与矩阵相乘,比二维矩阵相乘少一层循环。*/
public static double[] mult(double[] y,double[][] a)
{int N = y.length;double[] c = new double[N];int M = y.length;if( M != a[0].length){//抛出异常}for(int i = 0; i < N; i++){for(int j = 0; j < M; j++){c[i] += a[i][j] * y[i];}}return c;
}

}

二维矩阵乘法、矩阵转置、 矩阵与向量乘法(java实现)相关推荐

  1. 已知一个二维数组A 表示一个矩阵,求AT。 其中,AT 表示矩阵的转置。矩阵转置的含义:表示把一个矩阵行列互换。

    已知一个二维数组A 表示一个矩阵,求AT. 其中,AT 表示矩阵的转置.矩阵转置的含义:表示把一个矩阵行列互换. //传入需要验证的数组,在main里面调用该方法public static void ...

  2. python顺序表转置_Python:二维列表下标互换方式(矩阵转置)

    Python:二维列表下标互换方式(矩阵转置) 发布时间:2020-08-20 04:13:38

  3. numpy dot()函数(两个数组的点积)(对于二维阵列,它是矩阵乘积)

    From multiarray.py def dot(a, b, out=None): # real signature unknown; restored from __doc__"&qu ...

  4. 4.9-4.10 矩阵乘法的性质 矩阵的幂运算 矩阵的转置及其性质

    矩阵乘法的性质 矩阵的乘法不遵守交换律 ! 矩阵乘法遵守结合律.分配律 对于任意r行c列的矩阵A,存在c行x列的矩阵O,满足:A . Ocx = Orx 对于任意r行c列的矩阵A,存在x行r列的矩阵O ...

  5. MATLAB基础操作,矩阵乘法、数组矩阵索引、最大最小运算符、零矩阵/随机矩阵/单位矩阵的生成、log函数、Inf和NaN的含义,语句过长用连接符换行、逻辑运算符以及区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.矩阵相乘 二.矩阵生成 1.直接输入 2.单位矩阵 3.全零矩阵 2.全一矩阵 2.随机矩阵 三.矩阵操作 四.矩 ...

  6. 高等代数 矩阵的运算(第4章)1 加法,数量乘法,矩阵乘法,一些特殊矩阵

    将数域 K K K上所有 s × n s×n s×n矩阵组成的集合记为 M s × n ( K ) M_{s×n}(K) Ms×n​(K);当 s = n s=n s=n,可简记为 M n ( K ) ...

  7. poj 3233 矩阵乘法(分块矩阵)

    POJ 3233 题解:Sn为所求矩阵, 则 这样, 此题就变成了求矩阵幂和矩阵乘法, 分块矩阵乘法和普通矩阵一样的. code: /* adrui's submission Language : C ...

  8. 写一个函数,使给定的一个3 × 3的二维整型数组转置,即行列互换。

    题目来源: C语言程序设计(第四版)/ 第七章 / 习题7.3 题目要求: 写一个函数,使给定的一个3 × 3的二维整型数组转置,即行列互换. 具体思路: 将给定的二维整型数组a用另外一个二维数组b备 ...

  9. 学习:二维码、QR码、J4L-QRCode、java

    转自:http://baijinshan.iteye.com/blog/1004554 学习:二维码.QR码.J4L-QRCode.java Java企业应用网络应用Rails应用服务器  开源码 J ...

  10. 使用二维数组表示N阶矩阵

    矩阵为N阶,使用二维数组a[N-1][N-1]表示. 矩阵元素使用二维数组元素a[i][j]表示. 访问矩阵元素时,遍历下标表示为a[i][j],i为行下标,j为列下标,它们的取值范围均为[0,N-1 ...

最新文章

  1. React开发(240):dva概念5reducer
  2. 点餐小程序源码_微信小程序餐饮点餐商城前端模版
  3. 堡垒机应用发布服务器是干嘛的_支持Web UI数据库审计和敏感数据国密算法加密,JumpServer堡垒机v2.5.0发布丨Release Notes...
  4. 任务35:JWT 认证授权介绍
  5. python魔法属性_python魔法方法-属性转换和类的表示详解
  6. linux终端命令大全(完善中)
  7. 记录所遇到的Windows蓝屏问题、网络错误、硬件故障等问题
  8. 强大如斯的Bunch类
  9. 什么时候需要消息队列
  10. 光通信的再思考:5G流量爆发下的数据密度革命
  11. 关于IntelliJ IDEA
  12. qt模拟键盘的三种实现方式(思路+demo)
  13. Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】
  14. php 解析pathinfo 类
  15. 为什么叫析取?为什么叫合取?
  16. 瀚高数据库日志挖掘方法
  17. 启发式教学的二十种实用方式教学与教学方法的关系
  18. 微信小程序生成海报并保存在本地(组件开发)
  19. 互联网商业模式有哪些?
  20. EBGP/IBGP/IGP有何区别?

热门文章

  1. 解决python通过pip离线安装flask,numpy报错解决(centos)
  2. Unity的Application.Quit()方法使用失效的其他解决方案。
  3. mac os ERROR! The server quit without updating PID file
  4. 来自日本的品质传承 工机控股发布新品牌HiKOKI战略
  5. three.js 画一个旋转的立方体
  6. python错误类型翻译_17个新手常见的Python运行时错误
  7. mysql连接密码加密_数据库连接用户名和密码加密
  8. android 不卡 华为,荣耀Magic是什么系统 华为荣耀Magic手机是不是也不卡?
  9. UiPath认证考试难吗
  10. TIL:创建Java线程的两种方法