Array Dua Dimensi

30
Array Dua Dimensi Jurusan Teknik Informatika Universitas Ahmad Dahlan 2004

description

Array Dua Dimensi. Jurusan Teknik Informatika Universitas Ahmad Dahlan 2004. Pendahuluan. Misalkan matriks A berordo 2 x 3 Menggunakan array, setiap elemen matriks A dapat dipetakan menjadi :. Konstruksi Tipe Data Matriks. C style #define baris 2 #define kolom 2 - PowerPoint PPT Presentation

Transcript of Array Dua Dimensi

Page 1: Array Dua Dimensi

Array Dua Dimensi

Jurusan Teknik Informatika

Universitas Ahmad Dahlan

2004

Page 2: Array Dua Dimensi

Pendahuluan

Misalkan matriks A berordo 2 x 3

Menggunakan array, setiap elemen matriks A dapat dipetakan menjadi :

1 2 3

4 0 1A

kolom j=0 kolom j=1 kolom j=3

baris i=0 A[0][0] = 1 A[0][1] = -2 A[0][2] = 3

baris i=1 A[1][0]= -4 A[1][1] = 0 A[1][2] = -1

Page 3: Array Dua Dimensi

Konstruksi Tipe Data Matriks

C style#define baris 2#define kolom 2int matriks[baris][kolom];

C++ styleclass Matriks {private :

int baris, kolom;int A[baris][kolom];

};

Page 4: Array Dua Dimensi

Memasukkan data Matriks

void baca_matriks (int matriks[10][10], int baris, int kolom){ int i,j; for (i=0; i<baris; i++) for (j=0; j<kolom; j++) cin >> matriks[i][j];}

Cara mengisi data dilakukan per baris (dengan kolom berjalan/dihabiskan lebih dulu)

Page 5: Array Dua Dimensi

Tahapan input elemen matriks

Perhatikan matriks

Untuk i=0, j=0

2 3

4 0 1A

1

1 x xA

x x x

Page 6: Array Dua Dimensi

Perhatikan matriks

Untuk i=0, j=1

2 3

4 0 1A

1

1 2 xA

x x x

Page 7: Array Dua Dimensi

Perhatikan matriks

Untuk i=0, j=2

2 3

4 0 1A

1

1 2 3A

x x x

Page 8: Array Dua Dimensi

Mencetak Elemen Matriks

void cetak_matriks (const int A[10][10], int baris, int kolom){ int i,j; for (i=0; i<baris; i++) { for (j=0; j<kolom; j++) cout << A[i][j] << “ “; // jarak antar elemen cout << endl; // baris berikutnya }}

Strateginya : pada suatu baris (cout pertama) antar elemen dipisahkan spasi. Untuk mencetak baris berikutnya digunakan cout kedua.

Page 9: Array Dua Dimensi

Kasus 9.1: Buatlah algoritma dan program

untuk menjumlahkan dua buah matriks.

Analisis :

Syarat penjumlahan 2 matriks : ordonya sama, m baris dan n kolom

Misal : A2x2 ditambah B2x2. Hasilnya juga merupakan matriks berukuran 2x2 misal matriks C2x2.

Penjumlahan dilakukan elemen demi elemen pada tempat yang sesuai

Page 10: Array Dua Dimensi

Perhatikan tandanya

11 12 11 12 11 12

21 22 21 22 21 22

c c a a b b

c c a a b b

Page 11: Array Dua Dimensi

Perhatikan tandanya

11 12 11 12 11 12

21 22 21 22 21 22

c c a a b b

c c a a b b

Page 12: Array Dua Dimensi

Perhatikan tandanya

11 12 11 12 11 12

21 22 21 22 21 22

c c a a b b

c c a a b b

Page 13: Array Dua Dimensi

Perhatikan tandanya

11 12 11 12 11 12

21 22 21 22 21 22

c c a a b b

c c a a b b

Page 14: Array Dua Dimensi

Algoritma 9.1

procedure matriks_jumlah(input matriks1,matriks2 : matriks; baris, kolom : integer; output jumlah : matriks)

Deklarasi i,j : integer Deskripsi for i 1 to baris do for j 1 to kolom do jumlah[i,j]:=matriks1[i,j] + matriks2[i,j] endfor endfor

Page 15: Array Dua Dimensi

Kasus 9.2.Buatlah algoritma dan program untuk

mengalikan dua buah matriks.

Analisis :Syarat dua matriks dapat dikalikan adalah

ukuran kolom matriks pertama haruslah sama dengan ukuran baris matriks kedua.

Bila Amxp dan Bpxn, akan menghasilkan Cmxn.

Page 16: Array Dua Dimensi

Contoh :

Untuk m = 2, p = 3, dan n = 1

A2x3, B3x1, C2x1

c11 diperoleh dari

C11= a11*b11+a12*b21+a13*b31

111311 11 12

212321 21 22

31

*

bac a a

bac a a

b

Page 17: Array Dua Dimensi

Bila :i berjalan dari 1 sampai m (banyak baris)k berjalan dari 1 sampai p (banyak elemen perkalian

dalam)j berjalan dari 1 sampai n (banyak kolom)

Maka diperoleh 3 loop : for i 1 to baris do for j 1 to kolom do mat_kali[i,j] 0 for k 1 to barkol do

mat_kali[i,j] menyatakan matriks hasil pada elemen ke(i,j). Oleh karena merupakan kumulatif penjumlahan maka diawali nilai dengan 0 (dan hanya dipengaruhi oleh variabel I dan j).

Page 18: Array Dua Dimensi

Algoritma 9.2.

procedure kali_matriks(input matriks1,matriks2 : matriks; baris, kolom, barkol : integer; output mat_kali : matriks)

Deklarasi i,j,k : integer

Deskripsi for i 1 to baris do for j 1 to kolom do mat_kali[i,j] 0 for k 1 to barkol do mat_kali[i,j] mat_kali[i,j] + matriks1[i,k] * matriks2[k,j] endfor endfor endfor

Page 19: Array Dua Dimensi

Kasus 9.3.Buatlah algoritma untuk menyelesaikan sistem

persamaan linier

Misalkan sistem persamaan linier yang diberikan sebagai berikut :

1 2 3

1 2

1 2 3

2 3 1

3 2

4 3 3

x x x

x x

x x x

1

2

3

1 2 3 1

1 3 0 2

1 4 3 3

x

x

x

Page 20: Array Dua Dimensi

Status awal

1 2 3

1 3 0

1 4 3

A

1

2

3

b

Page 21: Array Dua Dimensi

Langkah I

kurangi baris ke-2 dengan (1)x baris pertama diperoleh :

1 2 3

0 1 3

1 4 3

A

1

1

3

b

Page 22: Array Dua Dimensi

Langkah II

kurangi baris ke-3 dengan (1)x baris pertama diperoleh :

1 2 3

0 1 3

0 2 0

A

1

1

2

b

Page 23: Array Dua Dimensi

Langkah III

kurangi baris ke-3 dengan (2)x baris ke-2 diperoleh :

1 2 3

0 1 3

0 0 6

A

1

1

0

b

Page 24: Array Dua Dimensi

Langkah IV : dikembalikan pada bentuk persamaan

1 2 3

0 1 3

0 0 6

A

1

1

0

b

1 2 3

2 3

3

2 3 1

3 1

6 0

x x x

x x

x

Page 25: Array Dua Dimensi

Langkah terakhir : substitusi balik

Diperoleh :

3 3

2 3 2

1 2 3 1 2

6 0 0,

3 1 1,

2 3 1 1 2 1 2 1.

x x

x x x

x x x x x

Page 26: Array Dua Dimensi

Output :

Penyelesaian sistem persamaan linier semula adalah :

1

2

3

1

1

0

x

x

x

Page 27: Array Dua Dimensi

Membentuk matriks eselon baris

for (i = 0; i < banyak - 1; i++) for (k = i + 1; k < banyak; k++) {

temp = koef.A[k][i] / koef.A[i][i]; // memanipulasi matriks for (j = i + 1; j < banyak; j++) koef.A[k][j] -= temp * koef.A[i][j]; // memanipulasi vektor konstanta konstanta.elemen[k] -= temp * konstanta.elemen[i];

koef.A[k][i] = 0.0;

Page 28: Array Dua Dimensi

Substitusi balik

// banyak menyatakan banyaknya elemen vektor

for (i = banyak-1; i >= 0; i--)

{ s = konstanta.elemen[i];

for (j = i + 1; j < banyak; j++)

// konstanta dikurangi dengan nilai xj yang telah diperoleh

s -= koef.A[i][j] * konstanta.elemen[j];

X.elemen[i] = s / koef.A[i][i];

Page 29: Array Dua Dimensi

Tugas :

Diberikan suatu matriks berordo n. Buatlah algoritma dan program untuk mencetak matriks identitas berodo n.

Petunjuk :

Pelajari ciri matriks identitas

???

Page 30: Array Dua Dimensi

Buatlah algoritma dan program untuk menghasilkan transpose suatu matriks

Petunjuk :

Buat contoh kasus. Misalkan matriks berordo 2x3. Kemudian apa yang

terjadi bila ditranspose.

???