【アルゴリズム】マトリクスの加算、乗算、転置

12707 ワード

一、行列加算
公式: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;j

out.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(); } } }