• 2021-11-30 12:34:30

import java.util.Random;
import java.util.Scanner;
public class 矩阵运算{
public static void main(String args[]){ Random ran=new Random();
int h1 =0;
int l1 =0;
int h2=0;
int l2=0;
for(int i = 0;i<1;i++) {
h1 =ran.nextInt(3)+2;
l1 =ran.nextInt(3)+2; h2=ran.nextInt(3)+2;
l2 =ran.nextInt(3)+2;
}
int[][] arr1=new int[h1][l1];
int[][] arr2=new int[h2][l2]; System.out.println(“第一个矩阵为：”); for(int i=0;i<h1;i++){
for(int j=0;j<l1;j++){
int x =ran.nextInt(3);
arr1[i][j]=x;
System.out.print(arr1[i][j]+" “);
}
System.out.println(” ");
}

System.out.println(“第二个矩阵为：”); for(int i=0;i<h2;i++){
for(int j=0;j<l2;j++){
int x =ran.nextInt(3);
arr2[i][j]=x;
System.out.print(arr2[i][j]+" “);
}
System.out.println(” ");
}
Scanner sc =new Scanner(System.in); System.out.println(“请选择你要进行的操作：”);
System.out.println(“1.矩阵转置”); System.out.println(“2.矩阵相加”); System.out.println(“3.矩阵相减”); System.out.println(“4.矩阵相乘”); System.out.println(“请输入1-4：”);
int n =sc.nextInt();

if(n==1){
System.out.println(“第一个矩阵转置为：”); int [][]a1 =new int[l1][h1];
for(int i=0;i<l1;i++){
for(int j=0;j<h1;j++){
int x =ran.nextInt(3);
a1[i][j]=arr1[j][i]; System.out.print(a1[i][j]+" “);
}
System.out.println(” “);
}
System.out.println(“第二个矩阵转置为：”); int [][]a2 =new int[l2][h2];
for(int i=0;i<l2;i++){
for(int j=0;j<h2;j++){
int x =ran.nextInt(3);
a2[i][j]=arr2[j][i]; System.out.print(a2[i][j]+” “);
}
System.out.println(” ");
}
}

else if(n2){
if(h1
h2&&l1==l2){ System.out.println (“两矩阵相加为：”);
int [][] jia=new int[h1][l1];
for ( int i = 0 ; i < h1; i++ ) {
for ( int j = 0 ; j <l1; j++ ) { jia[i][j] = arr1[ i ][ j ] + arr2[ i ][ j ]; System.out.print ( jia[i][j]+" “); } System.out.println (” ");
}
}
else {
System.out.println(“行数和列数不相等”);
}
}

else if(n==3){

if(h1==h2&&l1==l2){
System.out.println("两矩阵相减为：");
int [][] jian=new int[h1][l1];
for ( int i = 0 ; i < h1; i++ ) {
for ( int j = 0 ; j <l1; j++ ) {
jian[i][j] = arr1[ i ][ j ] - arr2[ i ][ j ];                    System.out.print (jian[i][j]+" ");
}
System.out.println (" ");
}
}
else {
System.out.println("行数和列数不相等");
}


}else if(n4){
if(l1
h2){
System.out.println(“两矩阵相乘为：”); int [][] cheng=new int[h1][l2];
for ( int i = 0 ; i < h1; i++ ) {
for ( int j = 0 ; j <l2; j++ ) {
for(int z =0;z<l2;z++){//l1 cheng[i][j]+= arr1[ i ][ z ] * arr2[ z ][ j ]; }
System.out.print (cheng[i][j]+" “);
}
System.out.println (” ");
}
} else {
System.out.println(“arr1列数和arr2的行数不相等，不能运算”);
}
}else{ System.out.println(“输入错误，强行结束”);
}
}
}

更多相关内容
• java 二维数组矩阵乘法实现方法，需要的朋友可以参考一下
• 知识回顾 若A为NxM阶矩阵 B为MxP阶矩阵，二者相乘之后的矩阵则为...设进行矩阵乘法的两个矩阵为a 3x3型矩阵和b 3x2型矩阵 我们在运用数学思维计算矩阵乘法时首先计算的便是 z[1][1] = a[1][1]*b[1][1]+a[1][2]*b[2][1]

# 知识回顾

若A为NxM阶矩阵 B为MxP阶矩阵，二者相乘之后的矩阵则为NXP阶矩阵
运算过程：

# 思路

• 计算并显示出来这个结果 我们则需要 一个计算方法 和 一个显示方法
• 因此主函数可以写的相当之简单 ， 键入想要求解的矩阵的数值 然后调用两种方法即可

## 显示方法

• 只需要循环显示出行列值然后分行即可

## 计算方法

设进行矩阵乘法的两个矩阵为a 3x3型矩阵和b 3x2型矩阵

• 我们在运用数学思维计算矩阵乘法时首先计算的便是
z[1][1] = a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1]
转换成代码则可想到 矩阵可以利用二维数组来实现
下标的改变以及算术累加可以用for循环来实现
• 在此之上我们可以再思考
z[1][1]计算过后我们将会继续计算z[1][2] 而列下标的改变则可再次利用循环来实现
以此类推
• 矩阵第一行的数值计算过后 我们要转为求解第二行的数值 这时则可再次利用循环来实现行的改变

因此 二维数组实现矩阵乘法的基本思路就是 利用嵌套循环来实现数值的累加计算，矩阵列以及行的变化。

以下为实现代码：

public class Example4_04{
public static void main(String[] args){
int[][] a={{-4 , 5 , -7},
{2, -3 , -4},
{3 , 4 , 5}};
int[][] b={{1 , 2},
{5 , 6},
{-7 , 9},};
int[][] result = mul(a,b);
print(result);
}
//mul返回值的类型是一个二维数组
static int[][] mul(int[][] x , int[][] y)
{
int i , j , k;//循环控制变量
//申请结果数组的空间
//行长度为x数组的行长度，列长度为y数组第一行的行长度
int[][] z=new int[x.length][y[0].length];
for(i = 0 ; i < x.length ; i++)
{	for(j = 0 ; j < y[0].length ; j++)
{
z[i][j] = 0;
for(k = 0 ; k < x[0].length ; k++)
z[i][j] = z[i][j] + x[i][k] * y[k][j];
}
}
return z;
}
static void print(int[][] x){
int i , j;
for(i = 0 ; i < x.length ; i++){
for(j = 0 ; j < x[i].length ; j++)
System.out.printf("%5d",x[i][j]);
System.out.println();
}
}
}


展开全文
• 展开全部importjava.util.Random;publicclassText2{publicstaticvoidmain(String[]args){Matrixs3=newMatrix(4,3);Matrixs4=newMatrix(3,3);s3.printMatrix();System.out.println("------------------...

展开全部

import java.util.Random;

public class Text2 {

public static void main(String[] args){

Matrix s3 = new Matrix(4, 3);

Matrix s4 = new Matrix(3, 3);

s3.printMatrix();

System.out.println("----------------------");

s4.printMatrix();

s3.mulMatrix(s4);

s3.printMatrix();

}

public static class Matrix {

private int[][] a;

Random random = new Random();

// 构造方法e69da5e887aa3231313335323631343130323136353331333264656665

public Matrix() {

a = new int[3][3];

}

public Matrix(int n) {

a = new int[n][n];

for (int i = 0; i

for (int j = 0; j

a[i][j] = random.nextInt(100);

}

}

}

public Matrix(int n, int m) {

a = new int[n][m];

for (int i = 0; i

for (int j = 0; j

a[i][j] = random.nextInt(100);

}

}

}

public int[][] getMatrix() {

return a;

}

// 打印一个矩阵

public void printMatrix() {

for (int i = 0; i

for (int j = 0; j

System.out.print(a[i][j] + "\t");

}

System.out.println();

}

}

// 矩阵相加

public void plusMatrix(Matrix b) {

int[][] c = b.getMatrix();

int n = c.length;

int m = c[0].length;

if (n != a.length || m != a[0].length) {

System.out.println("长度不一，不能相加");

} else {

for (int i = 0; i

for (int j = 0; j

a[i][j] = a[i][j] + c[i][j];

}

}

}

}

// 矩阵相乘

public void mulMatrix(Matrix b) {

int[][] c = b.getMatrix();

int n = c.length;

int m = c[0].length;

if (n != a[0].length) {

System.out.println("第一个矩阵的列数不等于第二个矩阵的行数，不能进行乘法运算");

} else {

for (int i = 0; i

for (int j = 0; j

for (int k = 0; k

a[i][j] += (a[i][k] * c[k][j]);

}

}

}

}

}

}

}

展开全文
• 前言 本篇文章主要总结了矩阵的常见运算，以及Java中利用二维数组进行运算的实现 1.矩阵运算 1.矩阵加法 运算前提：多个矩阵的行数和列数相同，我们称它们为同型矩阵，只有是同型矩阵才能进行加减运算。 运算规则：...

# 0.前言

本篇文章主要总结了矩阵的常见运算，以及Java中利用二维数组进行运算的实现

# 1.矩阵运算

## 1.矩阵加法

1. 运算前提：多个矩阵的行数和列数相同，我们称它们为同型矩阵，只有是同型矩阵才能进行加减运算。
2. 运算规则：两个矩阵相同位置的元素进行相加。

[ 1 2 3 4 5 6 ] + [ 1 2 3 4 5 6 ] = [ 2 4 6 8 10 12 ] \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{matrix} \right] + \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{matrix} \right] = \left[ \begin{matrix} 2 & 4 & 6 \\ 8 & 10 & 12 \\ \end{matrix} \right]

## 2.矩阵减法

1. 运算规则：同矩阵加法，对应元素相减即可。

## 3.矩阵乘法

1. 运算前提：两个矩阵的乘法仅当第一个矩阵的列数和另一个矩阵的行数相等。
2. 运算规则：两个矩阵，第一个矩阵的行和第二个矩阵的列对应元素相乘再相加，m 行 n 列的矩阵 * n 行 k 列的矩阵，得到一个 m 行 k 列的矩阵。
[ 1 2 3 4 5 6 ] ∗ [ 1 2 3 4 5 6 ] = [ 1 ∗ 1 + 2 ∗ 3 + 3 ∗ 5 = 22 1 ∗ 2 + 2 ∗ 4 + 3 ∗ 6 = 28 4 ∗ 1 + 3 ∗ 5 + 6 ∗ 5 = 49 4 ∗ 2 + 5 ∗ 4 + 6 ∗ 6 = 64 ] = [ 22 28 49 64 ] \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{matrix} \right] * \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ \end{matrix} \right] = \left[ \begin{matrix} 1*1 + 2*3+3*5 =22& 1* 2 + 2* 4 + 3* 6=28\\ 4 * 1 + 3 * 5 + 6* 5 = 49 & 4*2+5*4+6*6= 64\\ \end{matrix} \right] = \left[ \begin{matrix} 22 & 28 \\ 49 & 64 \\ \end{matrix} \right]

## 4.矩阵转置

1. 运算规则：将矩阵的第 i 行 第 j 列 转换为 第 j 行 第 i 列
[ 1 2 3 4 5 6 ] T = [ 1 4 2 5 3 6 ] \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{matrix} \right] ^T = \left[ \begin{matrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \\ \end{matrix} \right]

# 2.Java实现

public class Matrix {
public static void main(String[] args) {
int[][] a = {{1, 2, 3}, {4, 5, 6}};
int[][] b = {{1, 2}, {3, 4}, {5, 6}};

System.out.println(Arrays.deepToString(randomMatrix(3, 2)));
}

/**
* 生成随机矩阵 m行n列
* @return
*/
public static int[][] randomMatrix(int m, int n){
int[][] ans = new int[m][n];
// 生成随机矩阵
Random rand = new Random();
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++) {
ans[i][j] = rand.nextInt(10);
}
return ans;
}

/**
* 矩阵加减法
*/
public static int[][] addOrSub(int[][] a, int[][] b, boolean isPlus) {
// 不满足加减法条件
if (a.length != b.length || a[0].length != b[0].length) return new int[0][0];

for (int i = 0; i < a.length; i++)
for (int j = 0; j < a[0].length; j++) {
if (isPlus)
a[i][j] += b[i][j];
else
a[i][j] -= b[i][j];
}
return a;
}

/**
* 矩阵乘法
*/
public static int[][] multiply(int[][] a, int[][] b) {
int m = a.length;
int n = a[0].length;
int n1 = b.length;
int k = b[0].length;
// 不满足乘法条件
if (n != n1) return new int[0][0];

// 构建一个 m 行 k 列的矩阵
int[][] ans = new int[m][k];
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
int temp = 0;
for (int l = 0; l < n; l++) {
temp += a[i][l] * b[l][j];
}
ans[i][j] = temp;
}
}
return ans;
}

/**
* 转置
*/
public static int[][] zhi(int[][] a) {
int m = a.length;
int n = a[0].length;
int[][] ans = new int[n][m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
ans[i][j] = a[j][i];
return ans;
}
}


展开全文
• 主要介绍了Java编程实现的二维数组转置功能,结合实例形式分析了Java二维数组的遍历、运算、赋值等实现转置的相关操作技巧,需要的朋友可以参考下
• 定义Matrix(矩阵)类，使用二维数组实现矩阵实现两个矩阵乘法。要求如下： 4个变量：row(行数)，column(列数), matrix( int型二维数组)，reader( Scanner对象)。 根据程序需求定义构造方法。 inputMatrix...
• 分别定义两个二维数组用来存放两个矩阵矩阵A的行号和矩阵B的列号决定矩阵C的行列号；矩阵A的列号和矩阵B的行号相同者进行乘法操作。 现在暂且不考虑设置矩阵相乘的规则，就弄个最简单的矩阵相乘 package juzhen...
• 文章目录线性代数中的矩阵相乘定义注意事项代码逻辑分析代码实现运行结果 线性代数中的矩阵相乘 定义 设A为 的矩阵，B为 的矩阵，那么称 的矩阵C为矩阵A与B的乘积，记作 ，其中矩阵C中的第 行第 列元素可以表示为： ...
• 定义Matrix(矩阵)类，使用二维数组实现矩阵实现两个矩阵乘法。要求如下： 4个变量：row(行数)，column(列数), matrix( int型二维数组)，reader( Scanner对象)。 根据程序需求定义构造方法。 inputMatrix方法：...
• 使用二维数组实现Matrix(矩阵)： 1. 定义Matrix(矩阵)类，要求如下： a) 变量：matrix(int型二维数组)，row(行数)，column(列数)； b) 方法：实现两个矩阵乘法，所有方法将返回操作后的结果矩阵。(两个矩阵的...
• 使用for循环嵌套以及二维数组打印九九乘法
• 从图 1 可以看到，相乘后的矩阵的行数等于第一个矩阵的行数，列数等于第矩阵的列数。 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释，在 Begin-End 间编写程序代码，给定以下两个矩阵，求它们的乘积。 ...
• packagearrayList;/*** 矩阵的集中运算法则：求和，求积，求逆矩阵，转置矩阵......*@...*@parama 矩阵(二维数组)*@paramb 矩阵(二维数组)*@return返回一个矩阵(二维数组)*/public static int[][] add(int [][] a,i...
• 【九九乘法表】 【算法代码】 #include <stdio.h> int t[9][9]; int main() { int i,j; for(i=1; i<=9; i++) for(j=1; j<=i; j++) t[i][j]=i*j; for(i=1; i<=9; i++) { for(j=1; j&...
• 展开全部借花献佛/***实现二维数组的转置*@authorHAN**/publicclasstransposition_Arrays2D_ch6_4{finalstaticdoublePI=3.1415;publicstaticvoidmain(String[]args){32313133353236313431303231363533e78988e69d...
• ## 二维数组与矩阵

千次阅读 2019-10-26 18:48:04
**题目1：**利用二维数组（double[]）实现一个矩阵类：Matrix。 要求提供以下方法： （1）set（int row, int col, double value）：将第row行第col列的元素赋值为value； （2）get（int row，int col）：取第row行第...
• java二维数组的个数Here, We have to find the multiplication of the two matrix by moving forward direction in row major (row by row) order in one matrix and by backward direction in row major order in ...
• 1. 定义Matrix(矩阵)类，要求如下： a) 变量：matrix(int型二维数组)，row(行数)，column(列数)； b) 方法：实现两个矩阵乘法，所有方法将返回操作后的结果矩阵。(两个矩阵乘法：一个m×n的矩阵a（m,n)乘一个n×...
• 使用二维数组实现Matrix(矩阵)。 定义Matrix(矩阵)类，要求如下： a) 变量：matrix(int型二维数组)，row(行数)，column(列数)； b) 方法：实现两个矩阵乘法，所有方法将返回操作后的结果矩阵。(两个矩阵乘法：...
• protected void Page_Load(object sender, ...}//floor向下取整//ceiling 向上取整//开平方就用Math.Sqrt, 开n次方:Math.Pow(double, 1/n)//一维数组存储二维矩阵N*N，得到行和列// 行：i / n ；列：i % npriv...
• 07.分查找解题套路框架 08.滑动窗口解题套路框架 09.双指针技巧总结 10.BFS算法套路框架 11.Linux的进程、线程、文件描述符是什么 12.Git/SQL/正则表达式的在线练习平台 第部分动态规划系列： 01.动态规划设计...
• 　给定一个N阶矩阵A，输出A的M次幂（M是非负整数） 　例如： 　A = 　1 2 　3 4 　A的2次幂 　7 10 　15 22 输入格式 　第一行是一个正整数N、M（1<=N<=30, 0<=M<=5），表示矩阵A的阶数和要求的幂数 　...
• import java.io.InputStream; import java.util.Scanner; public class Main { public static void main(String[] args) { Matrix firstMat=Matrix.inputMatrix(); Matrix secondMat=Matrix.inputMatrix(); ...
•  Java用int型数组矩阵乘法是不会报错，但是改成double型后开始疯狂报错，后来想起来可能是因为乘法会导致精度不准确的问题，所以百度了一下，改成了用BigDecimal类（Math类里的，还有个BigInteger）来做，发现就...
• 第2章 对象数组及二维数组课程回顾: 课程回顾: OO:属性+行为 OO:属性+ 特性:封装+继承+多态 特性:封装+继承+ 第2章 对象数组及二维数组 Java基础知识 Java......[];//声明放杨辉三角的二维数组 System.out.println(...
• 定义Matrix(矩阵)类，要求如下... 1) inputMatrix方法：从键盘读入行数和列数，创建矩阵二维数组，然后从键盘读入矩阵的元素值； 2) multiply方法：两个矩阵相乘，方法将返积矩阵； 3) display方法：将矩阵输出到..

...

java 订阅