【アルゴリズム】マトリクスの加算、乗算、転置
12707 ワード
一、行列加算
公式:C[m][n]=A[m][n]+B[m][n];
二、マトリックス乗算
公式:C[m][p]=A[m][0]*B[0][p]+A[m][1]*B[1][p]+......+A[m][n]*B[n][p];
三、転置行列式:A[m][n]->At[n][m];
公式:C[m][n]=A[m][n]+B[m][n];
public class Matrix_Addition {
public static void MattrixAdd(int a[][],int b[][],int c[][],int x,int y)
{
int row,col;
if(x<=0&&y<=0)
{
System.out.printf(" 0");
return ;
}
for( row=1;row<=x;row++ )
{
for (col=1;col<=y;col++)
{
c[(row-1)][(col-1)]=a[(row-1)][(col-1)]+b[(row-1)][(col-1)];
}
}
}
public static void main(String args[])
{
int i,j;
final int rows=3;
final int cols=3;
int [][]a={{1,3,4},{3,3,3},{6,6,6}};
int [][]b={{3,4,5},{2,2,2},{5,5,5}};
int [][]c=new int[rows][cols];
MattrixAdd(a,b,c,3,3);
System.out.println(" c ");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
System.out.print(c[i][j]+" ");
}
System.out.println("");
}
}
}
二、マトリックス乗算
公式:C[m][p]=A[m][0]*B[0][p]+A[m][1]*B[1][p]+......+A[m][n]*B[n][p];
import java.io.*;
public class Matrix_Multiply {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int M,N1,N2,P;
int i,j;
String strM;
String strN1,strN2;
String strP;
String tempstr;
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
System.out.println(" A (M,N1)");
System.out.println(" A M :");
strM=keyin.readLine();
M=Integer.parseInt(strM);
System.out.println(" A N :");
strN1=keyin.readLine();
N1=Integer.parseInt(strN1);
int A[][]=new int[M][N1];
System.out.println(" A ");
System.out.println(" ! Enter ");
for(i=0;ifor(j=0;jout.print("a"+i+j+"=");
tempstr=keyin.readLine();
A[i][j]=Integer.parseInt(tempstr);
}
}
System.out.println(" B (N2,P)");
System.out.println(" B N2 :");
strN2=keyin.readLine();
N2=Integer.parseInt(strN2);
while(N1!=N2)
{
System.out.println(" N1 N2 ");
strN2=keyin.readLine();
N2=Integer.parseInt(strN2);
}
System.out.println(" B P :");
strP=keyin.readLine();
P=Integer.parseInt(strP);
int B[][]=new int[N2][P];
System.out.println(" A ");
System.out.println(" ! Enter ");
for(i=0;ifor(j=0;jout.print("b"+i+j+"=");
tempstr=keyin.readLine();
B[i][j]=Integer.parseInt(tempstr);
}
}
int C[][]=new int[M][P];
MatrixMultiply(A,B,C,M,N2,P);
System.out.println("[AxB ]");
for(i=0;ifor(j=0;j
out.print(C[i][j]);
System.out.print('\t');
}
System.out.println();
}
}
public static void MatrixMultiply(int arrA[][],int arrB[][],int arrC[][],int M,int N,int P)
{
int i,j,k,temp = 0;
for(i=0;ifor(j=0;j
for(k=0;k
三、転置行列式:A[m][n]->At[n][m];
public class zz {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int M,N;
int i,j;
String strM;
String strN;
String tempstr;
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
System.out.println(" A (M,N)");
System.out.println(" A M :");
strM=keyin.readLine();
M=Integer.parseInt(strM);
System.out.println(" A N :");
strN=keyin.readLine();
N=Integer.parseInt(strN);
int A[][]=new int[M][N];
int B[][]=new int[N][M];
System.out.println(" A ");
System.out.println(" ! Enter ");
for(i=0;ifor(j=0;jout.print("a"+i+j+"=");
tempstr=keyin.readLine();
A[i][j]=Integer.parseInt(tempstr);
}
}
System.out.println("[ ]
");
for(i=0;ifor(j=0;jout.print(A[i][j]);
System.out.print('\t');
}
System.out.println();
}
exchangeT(A,B,M,N);
}
public static void exchangeT(int [][]A,int B[][],int M,int N)
{
int i,j;
for(i=0;ifor(j=0;jout.println("[ ]
");
for(i=0;ifor(j=0;jout.print(B[i][j]);
System.out.print('\t');
}
System.out.println();
}
}
}