Friday, March 11, 2016

Perkalian Matriks

Kita memiliki 2 buah matriks, yaitu A dan B. maka kita dapat melakukan perkalian ke dua buah matriks tersebut jika :
  • Jumlah kolom A sama dengan jumlah baris kolom B
  • Hasil perkalian adalah C yang memiliki dimensi baris A dan kolom B jika A adalah matriks kolom dan  B adalah matriks baris.
  • Hasil perkalian adalah skalar c jika B dikalikan A
Kita berkepentingan dengan perkalian yang memberikan nilai skalar.Berarti adalah perkalian B*A dimana A adalah matriks baris dan B adalah matriks kolom.

Berikut ini adalah contoh dari perkalian matriks yang akan kita gunakan pada perkalian input dan weight.

/*
<MatrixMultiplication.java. The program multiplies 2 matrices.>
    Copyright (C) <2016>  <Joko Adianto>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/


/**
 *
 * @author joko
 */
public class MatrixMultiplication {

    /**
     * @param p
     * @param w
     * @return double
     */
    public static double getSum( double[] p, double[][]w ){
        double o =0;
        int k = p.length;
        int j = 0;
        for (j=0;j<k;j++){
                    o=o+p[j]*w[j][0];                   
                }
        return o;
    }
   
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
                int j,k;
                double o=0;
                double[] p = {1,2,3};
                double[][] w = {{2}, {4}, {6}};
                o=getSum(p,w);
                   
                System.out.println(o);
       
    }
   
}

Pada contoh diatas p adalah array berdimesi 1 baris dan 3 kolom, sedangkan W adalah array berdimensi 3 baris dan 1 kolom. Jika dijalankan akan menampilkan sebuah skalar 28, jika ditambah dengan bias akan memberikan nilai 28.0 yang merupakan hasil perkalian matriks berbaris satu dan berkolom 3 dan matriks berbaris 3 tetapi berkolom 1.

Pada implementasi nantinya kita mungkin tidak menggunakan array-array seperti diatas, tetapi dapat menggunakan array 1 dimensi.Yang penting adalah pemahaman kita tentang penggunaan matriks untuk mengalikan sejumlah input dengan sejumlah weight, yang tentunya dimensinya harus cocok.

    No comments:

    Post a Comment