用java怎么写矩阵乘法?

Python09

用java怎么写矩阵乘法?,第1张

import java.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=0i&ltai++){ 

for(int j=0j&ltbj++){ 

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=0i&ltci++){ 

for(int j=0j&ltdj++){ 

double sum = 0  

for(int k=0k&ltak++){ 

sum += x[i][k]*y[k][j]  

result[i][j] = sum  

return result  

public void print(double[][] x){ 

System.out.println("矩阵为:"); 

for(int i=0i&ltx.lengthi++){ 

for(int j=0j&ltx[i].lengthj++){ 

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是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

具体回答如下:

1Java本身似乎没有矩阵的实现,但是在进行矩阵加减乘除二维及以下操作是,是可以进行手动输入来实现的。需要满足输入矩阵在加、减过程中矩阵形式相同;在二维矩阵乘除法的手动运算中需要满足前项矩阵的列与后项矩阵的行数一致即可。

2在JAVA开发过程中,有时候会遇到矩阵的运算但是相对都会非常麻烦内有特别好的接口可以直接调用。

3对于简单的矩阵加、减、乘、除等基本操作,可以自己去写。但是遇到大型的矩阵的求逆运算以及其他复杂的操作,建议使用第三方jar包,比如math3以及常见的jama包。

java中自定义矩阵:

public static void main(String[] args) {

// TODO Auto-generated method stub

int n= 5//长度

int array_int[][] = new int[n][n]

//初始化

for(int i=0i<ni++){

for(int j=0j<nj++){

if(i==0){

if(j%2==0){

array_int[i][j] = (j+1)*(j+1)

}

else{

array_int[i][j] = array_int[i][j-1]+1

}

}

else if(j==0){

if(i%2==1){

array_int[i][j] = (i+1)*(i+1)

}

else {

array_int[i][j] = array_int[i-1][j]+1

}

}

else{

if(i<j){

if(j%2==0){

array_int[i][j] = array_int[0][j]-i

}

else{

array_int[i][j] = array_int[0][j]+i

}

}

else{

if(i%2==0){

array_int[i][j] = array_int[i][0]+j

}

else{

array_int[i][j] = array_int[i][0]-j

}

}

}

//System.out.println(i+" "+j+":"+array_int[i][j] )

}

}

for(int i=0i<ni++){

for(int j=0j<nj++){

System.out.print(array_int[i][j]+ " " )

}

System.out.println()

}

}

当等于5时的运行结果:

1 2 9 10 25

4 3 8 11 24

5 6 7 12 23

16 15 14 13 22

17 18 19 20 21