Array Dua Dimensi

Post on 31-Jan-2016

93 views 2 download

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

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 :

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

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];

};

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)

Tahapan input elemen matriks

Perhatikan matriks

Untuk i=0, j=0

2 3

4 0 1A

1

1 x xA

x x x

Perhatikan matriks

Untuk i=0, j=1

2 3

4 0 1A

1

1 2 xA

x x x

Perhatikan matriks

Untuk i=0, j=2

2 3

4 0 1A

1

1 2 3A

x x x

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.

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

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

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

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

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

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

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.

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

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).

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

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

Status awal

1 2 3

1 3 0

1 4 3

A

1

2

3

b

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

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

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

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

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

Output :

Penyelesaian sistem persamaan linier semula adalah :

1

2

3

1

1

0

x

x

x

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;

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];

Tugas :

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

Petunjuk :

Pelajari ciri matriks identitas

???

Buatlah algoritma dan program untuk menghasilkan transpose suatu matriks

Petunjuk :

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

terjadi bila ditranspose.

???