① 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怎麼寫矩陣乘法
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的矩陣,再輸入一個n×o的矩陣求其乘積。一定要可以運行的。
這應該是線性數學的矩陣
邏輯思路是:取A矩陣的每一行的各個項去乘以B矩陣每個列的各個項
為了測試,我現在假設A矩陣是4*3, B矩陣是3*2, 你要做的乘操作是4*3*2=24次
importjava.util.*;
importjava.lang.*;
importjava.io.*;
/*Nameoftheclasshastobe"Main"onlyiftheclassispublic.*/
classIdeone
{
publicstaticvoidmain(String[]args)throwsjava.lang.Exception
{
int[][]A=newint[][]{{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int[][]B=newint[][]{{1,2},{3,4},{5,6}};
intlen_A=A[0].length;//a每行元素數,這里是3
intcol_A=A.length;//a每列元素數,這里是4
intlen_B=B[0].length;//b每行元素數,這里是2
intcol_B=B.length;//b每列元素數,這里是3
intlen_a=0;
intcol_a=0;
intlen_b=0;
intcol_b=0;
intsum=0;
while(len_b<len_B)//使B的下一列被A乘
{
col_a=0;
while(col_a<col_A)//使A可以移動至下一行
{
len_a=0;
col_b=0;
while(len_a<len_A)//使A的當前行乘以B的當前列
{
sum+=A[col_a][len_a]*B[col_b][len_b];
len_a++;
col_b++;
}
col_a++;
}
len_b++;
}
System.out.println(sum);
}
}
④ 用java語言做矩陣運算,輸入一個m×n的矩陣,再輸入一個n×o的矩陣,求其乘積。
這應該是線性數學的矩陣
邏輯思路是:取A矩陣的每一行的各個項去乘以B矩陣每個列的各個項
為了測試,我現在假設A矩陣是4*3, B矩陣是3*2, 你要做的乘操作是4*3*2=24次
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int[][]A=new int[][]{{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
int[][]B=new int[][]{{1,2},{3,4},{5,6}};
int len_A=A[0].length;//a每行元素數,這里是3
int col_A=A.length;//a每列元素數,這里是4
int len_B=B[0].length;//b每行元素數,這里是2
int col_B=B.length;//b每列元素數,這里是3
int len_a=0;
int col_a=0;
int len_b=0;
int col_b=0;
int sum=0;
while(len_b<len_B)//使B的下一列被A乘
{
col_a=0;
while(col_a<col_A)//使A可以移動至下一行
{
len_a=0;
col_b=0;
while(len_a<len_A)//使A的當前行乘以B的當前列
{
sum+=A[col_a][len_a]*B[col_b][len_b];
len_a++;
col_b++;
}
col_a++;
}
len_b++;
}
System.out.println(sum);
}
}