Array Dua Dimensi
description
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.
???