Tuesday, February 28, 2012

Perkalian Matriks dalam Bahasa C

Pada posting sebelumnya, telah dijelaskan tentang cara menggunakan tipe data array dalam pemrograman C. Salah satu implementasinya antara lain dalam pembuatan matriks dengan sebuah array 2 dimensi. Operasi dalam matriks bisa berupa penambahan, pengurangan, perkalian, rotasi, invers dan sebagainya.
Jika pada penambahan serta pengurangan 2 matriks hanya dilakukan pada baris dan kolom yang sama, lain halnya dengan operasi perkalian matriks yang mempunyai kaidah tersendiri. Syaratnya adalah jumlah kolom matriks pertama harus sama dengan matriks kedua. Hasil dari operasi matriks tersebut adalah sebuah matriks yang mempunyai jumlah baris yang sama dengan matriks pertama dan jumlah kolom yang identik dengan matriks kedua . Contohnya : jika kita mempunyai matriks A dengan ukuran 2×3 dan matriks B dengan ukuran 3×4, maka hasil perkalian matriks A dengan matriks B adalah sebuah matriks berdimensi 2×4.
Perhitungan :
C11 = A11.B11 + A12.B21
C12 = A11.B12 + A12.B22
C21 = A21.B11 + A22.B21
C22 = A21.B12 + A22.B22

Implementasinya dalam program C dapat dibuat seperti berikut :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#define maks 100
main()
{
      int matriks1[maks][maks], matriks2[maks][maks];
      int bil, i,j, x, y, a,b;
 
      printf("Masukkan ukuran matriks 1 : ");
      scanf("%d %d",&x, &y);      
 
      printf("nnMatriks Pertama : n");
      for (i=0;i<x;i++){
          for (j=0;j<y;j++){
              printf("Matriks [%d][%d] : ",i,j);
              scanf("%d",&matriks1[i][j]);    
          }
      } 
 
      printf("nnMasukkan ukuran matriks 2 : ");
      scanf("%d %d",&a, &b);      
 
      printf("nnMatriks Kedua : n");
      for (i=0;i<a;i++){
          for (j=0;j<b;j++){
              printf("Matriks [%d][%d] : ",i,j);
              scanf("%d",&matriks2[i][j]) ;               
          }
      }          
      //jumlah_matriks(x,matriks1, matriks2);
      kali_matriks(x,a,b, matriks1, matriks2);
      getch();
      return 0;
}
 
int kali_matriks(int x, int y, int z, int matriks_1[maks][maks] , int matriks_2[maks][maks])
{
      int i, j, k, matriks_3[maks][maks];
      printf("nnPerkalian Matriks : n");
      for (i=0;i<x;i++){
          for (j=0;j<z;j++){              
              matriks_3[i][j] = 0;
              for (k=0;k<y;k++)
              {
                   matriks_3[i][j] += matriks_1[i][k] * matriks_2[k][j];
              }
              printf("%d", matriks_3[i][j]);            
              if (j == (z-1)) printf("n");
              else printf(" ");
          }
      }
}

ads

Ditulis Oleh : joeco3l Hari: February 28, 2012 Kategori:

2 komentar: