导航:首页 > 编程语言 > java矩阵算法

java矩阵算法

发布时间:2024-02-05 03:43:43

Ⅰ 用java怎么写矩阵乘法

importjava.util.Scanner;
public class Matrix {
public double[][] create() {
Scanner sc = new Scanner(System.in) ;
System.out.print("请输入矩阵的行高:");
int a = sc.nextInt() ;
System.out.print("请输入矩阵的列宽:");
int b = sc.nextInt() ;
double[][] x = new double[a][b] ;
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
System.out.print("请输入元素x["+i+"]["+j+"]的值:" );
x[i][j] = sc.nextDouble() ;
}
}
return x ;
}
public double[][] multiply(double[][] x,double[][] y){
double[][] result = null ;
int a = x[0].length ;
int b = y.length ;
if(a != b){
System.out.println("输入的维数不匹配,不能进行运算");
}else{
int c = x.length ;
int d = y[0].length ;
result = new double[c][d] ;
for(int i=0;i<c;i++){
for(int j=0;j<d;j++){
double sum = 0 ;
for(int k=0;k<a;k++){
sum += x[i][k]*y[k][j] ;
}
result[i][j] = sum ;
}
}
}
return result ;
}
public void print(double[][] x){
System.out.println("矩阵为:");
for(int i=0;i<x.length;i++){
for(int j=0;j<x[i].length;j++){
System.out.print(x[i][j] + " ") ;
}
System.out.println();
}
}
}
测试类:
public class TestMatrix {
public static void main(String[] args) {
Matrix m = new Matrix() ;
//double[][] x = {{1,2},{3,2}} ;
//double[][] y = {{1,2,1},{2,3,3}} ;
System.out.println("创建第一个数组:") ;
double[][] x = m.create() ;
m.print(x) ; //用来验证输入的是否和你一样的,没啥作用
System.out.println("创建第二个数组:");
double[][] y = m.create() ;
m.print(y) ; //用来验证输入的是否和你一样的,没啥作用
double[][] result = m.multiply(x, y) ;
if(result == null){
return ; //如果输入的矩阵不能运算就不输出结果了。
}
m.print(result) ;
}
}

Ⅱ Java编写一个程序实现矩阵的运算加减乘除,(并对其中的异常进行处理)


/**
*矩阵:由m×n个数Aij排成的m行n列的数表称为m行n列的矩阵,简称m×n矩阵
*说白了就是一个二维数组,下面的程序用整形作为数据类型,其他类型运算大同小异
*
*/

publicclassMatrixUtils{

/**
*矩阵运算:加(减法与之类似)
*/
publicstaticint[][]matrixAdd(int[][]addend,int[][]summand){
if(addend==null||addend.length==0){
("addendmatrixisempty!");
}
if(summand==null||summand.length==0){
("summandmatrixisempty!");
}
//矩阵加减要求两个矩阵类型一致,即行列数相同
introw=addend.length;
intcol=addend[0].length;
if(row!=summand.length||col!=summand[0].length){
("!");
}
int[][]sum=newint[row][col];
for(inti=0;i<row;i++){
for(intj=0;j<col;j++){
sum[i][j]=addend[i][j]+summand[i][j];
//sum[i][j]=addend[i][j]-summand[i][j];//减法
}
}
returnsum;
}

/**
*矩阵运算:乘法,没找到除法的运算规则
*/
publicstaticint[][]matrixMultiply(int[][]addend,int[][]summand){
if(addend==null||addend.length==0){
("addendmatrixisempty!");
}
if(summand==null||summand.length==0){
("summandmatrixisempty!");
}
//两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵
introw=addend.length;
intcol=summand[0].length;
if(addend[0].length!=summand.length){
("!");
}
int[][]sum=newint[row][col];
for(inti=0;i<row;i++){
for(intj=0;j<col;j++){
for(intz=0;z<addend[0].length;z++){
sum[i][j]+=addend[i][z]*summand[z][j];
System.out.println("sum["+i+"]["+j+"]="+sum[i][j]);
}
}
}
returnsum;
}
}

Ⅲ java矩阵乘法

import java.util.Arrays;
public class Test {
static int[][] matrix1;
static int[][] matrix2;
public static void main(String[] args) {
matrix1=new int[][]{{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7},{5,6,7,8},{6,7,8,9}};
matrix2=new int[][]{{9,8,7,6,5,4},{8,7,6,5,4,3},{7,6,5,4,3,2},{6,5,4,3,2,1}};

if(matrix1.length!=matrix2[0].length){//若无法相乘则退出
System.out.println("ivalid input");
System.exit(0);
}

int[][] r = new int[matrix1[0].length][matrix2.length];
for(int i=0;i<r.length;++i){
for(int j=0;j<r[i].length;++j){//每一个r[i][j]的运算:
r[i][j]=0;//初始化
for(int k=0;k<matrix2.length;++k)
r[i][j]+=matrix1[i][k]*matrix2[k][j];
}
}
//输出结果
for(int i=0;i<r.length;++i)
System.out.println(Arrays.toString(r[i]));
}
}

阅读全文

与java矩阵算法相关的资料

热点内容
单片机开发用的软件 浏览:147
程序员8个算法题 浏览:400
php题库系统 浏览:216
王牌战争文明重启选什么服务器 浏览:649
简述对称加密法 浏览:652
c语言数学编程 浏览:984
F1B命令 浏览:629
cs命令快捷键 浏览:851
阿里云购买服务器如何用现金支付 浏览:685
pythontime等待 浏览:984
单片机串行通信方式 浏览:494
android表格demo 浏览:274
安卓怎么让相册不显示网页 浏览:310
php文件系统源码 浏览:722
易信java 浏览:496
北仑二级压缩螺杆机 浏览:58
加密路线免费入口 浏览:755
计算器程序员是干嘛的 浏览:364
数控编程里fo是啥键 浏览:671
javacdataxml 浏览:959