300 likes | 536 Views
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
E N D
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 int matriks[baris][kolom]; • C++ style class 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
Perhatikan matriks • Untuk i=0, j=1
Perhatikan matriks • Untuk i=0, j=2
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
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
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).
Kasus 9.3. Buatlah algoritma untuk menyelesaikan sistem persamaan linier • Misalkan sistem persamaan linier yang diberikan sebagai berikut :
Langkah I • kurangi baris ke-2 dengan (1)x baris pertama diperoleh :
Langkah II • kurangi baris ke-3 dengan (1)x baris pertama diperoleh :
Langkah III • kurangi baris ke-3 dengan (2)x baris ke-2 diperoleh :
Langkah terakhir : substitusi balik • Diperoleh :
Output : • Penyelesaian sistem persamaan linier semula adalah :
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. ???