Anda di halaman 1dari 13

LAPORAN AKHIR ARRAY 2 DIMENSI AP VI

SUNNY INEZA PUTRI 140310110017

I.

Tugas Program Buatlah program C untuk mengalikan dua buah matriks, dengan rumus sebagai berikut : Cij=Aik x Bkj. Dengan A adalah matriks berukuran m p dan B adalah matriks berukuran pn . List program:
#include <stdio.h> #include <conio.h> main() { int i,j,k,b1,b2,k1,k2; int a[10][10],b[10][10],c[10][10]; ulang: printf("jumlah baris matriks A: ");scanf("%d", &b1); printf("jumlah kolom matriks A: ");scanf("%d", &k1); printf("\n"); printf("jumlah baris matriks B: ");scanf("%d", &b2); printf("jumlah kolom matriks B: ");scanf("%d", &k2); if (k1 != b2) {printf("perkalian matriks tidak dapat dilakukan\n"); goto ulang;} // a printf("memasukkan nilai matriks A:\n"); for(i=0;i<b1;i++) { for(j=0;j<k1;j++) { printf("A(%d,%d)=",i+1,j+1); scanf("%d", &a[i][j]); } printf("\n"); }

//b printf("memasukkan nilai matriks B:\n"); for(j=0;j<k1;j++) { for(k=0;k<k2;k++) { printf("B(%d,%d)=",j+1,k+1); scanf("%d", &b[j][k]); } printf("\n"); } //proses for(i=0;i<b1;i++) { for(k=0;k<k2;k++) { c[i][k]=0; for(j=0;j<k1;j++) c[i][k]+=a[i][j]*b[j][k]; } } //hasil printf("hasil perkalian matriks:\n"); for(i=0;i<b1;i++) { for(k=0;k<k2;k++) printf("%7d", c[i][k]); printf("\n"); } printf("\n"); getch(); }

Tampilan:

Analisa: Dalam perkalian kita melakukan proses perulangan. Pertama kita melakukan perulangan untuk nilai baris dan kolom yang sama sampai batas yang dimasukkan. Kemudian dilakukan pengulangan untuk mengisi kolomkolomnya dan kemudian perulangan untuk mengisi baris-barisnya. II. Tugas Akhir 1. Buatlah program C untuk menguji sifat simetris dari sebuah matriks bujursangkar. Sebuah matriks disebut simetris apabila A=AT List program:
#include <stdio.h> #include <conio.h> main() { int A[10][10], B[10][10]; int b, k, i, j,C; ins: printf("\nInput jumlah baris : "); scanf("%d", &b); printf("Input jumlah kolom : "); scanf("%d", &k); printf("\n"); if (b!=k) { printf("Jumlah baris dan Kolom tidak sama!"); goto ins; } else{

for (i=1; i<=b; i++) { for (j=1; j<=k; j++) { printf("Masukkan elemen matriks A[%d][%d] : ", i, j); scanf("%d", &A[i][j]); } } printf("\n\n"); printf("Matriks A \n\n"); for (i=1; i<=b; i++) { printf("\t"); for (j=1; j<=k; j++) { printf("%d\t", A[i][j]); } printf("\n"); } printf(" \nTranspose Matriks A \n\n"); for (i=1; i<=k; i++) { printf("\t"); for (j=1; j<=b; j++) { B[i][j]=A[j][i]; printf("%d\t", B[i][j]); } printf("\n"); } int x=0; for (i=1; i<=b; i++) { for (j=1; j<=k; j++) { if(A[i][j]==B[i][j]) x=x+1; else x=0; } } int h; h=b*k; if(x==h)

printf("Matriks A termasuk Matriks Simetris"); else printf("Matriks A bukan Matriks Simetris"); } getch(); }

Tampilan:

Analisa: Dalam program ini harus menggunakan matriks bujursangkar, jika tidak maka akan diminta kembali jumlah baris dan kolomnya. Jika jumlah baris dan kolom sudah benar akan menginput elemen-elemen matriks tersebut. Setelah itu dilakukan transpose terhadap matriks tersebut. Kemudian akan dilakukan pengencekan terhadap posisi matriks agar dapat ditentukan apakah termasuk matriks simetris atau bukan. 2. Buatlah program C yang bertujuan untuk menghitung nilai trace matriks bujursangkar yang didefinisikan sebagai berikut : tr (A)=aii List program:
#include<stdio.h> #include<conio.h> main () { int i, j, b, k, trace, A[10][10]; lagi: printf("Input &b);

Jumlah

Baris

");

scanf("%d",

printf("Input &k); printf("\n"); if(b != k) {

Jumlah

Kolom

");

scanf("%d",

printf("Matriks Yang Anda Masukkan Bukan Matriks Bujur Sangkar \n"); printf("\n"); goto lagi; } else { for(i=1; i<=b; i++) { for(j=1; j<=k; j++) { printf("Masukkan Elemen Matriks A[%d][%d] : ", i, j); scanf("%d", &A[i][j]); } } printf("\n"); printf("Matriks A adalah \n"); for (i=1; i<=b; i++) { for (j=1; j<=k; j++) { printf("%d\t", A[i][j]); } printf("\n"); } printf("\n"); trace=0; for(i=1; i<=b; i++) { j=i; trace += A[i][j]; } printf("Nilai Trace Matriks A adalah %d \n", trace); } getch(); }

Tampilan:

Analisa: Dalam program ini tentunya harus matriks bujursangkar, karena kita akan menentukan trace (jumlah bilangan diagonal). Proses dalam program ini adalah penjumlahan elemen yang memiliki indeks baris dan kolom yang sama. 3. Buatlah program C untuk perkalian sebuah matriks dengan skalar, yang didefinisikan sebagai berikut : B=c A , dengan c merupakan bilangan skalar. List program:
#include<stdio.h> #include<conio.h> main () { int i, j, C, b, k, A[10][10], B[10][10]; printf("Input Jumlah Baris : "); scanf("%d", &b); printf("Input Jumlah Kolom : "); scanf("%d", &k); printf("\n"); printf("Input Bilangan Skalar : "); scanf("%d", &C); printf("\n"); for(i=1; i<=b; i++) { for(j=1; j<=k; j++) { printf("Masukkan Elemen Matrik A[%d][%d] : ", i, j); scanf("%d", &A[i][j]); } } printf("\n"); printf("Matriks A adalah \n");

for (i=1; i<=b; i++) { for (j=1; j<=k; j++) { printf("%d\t", A[i][j]); } printf("\n"); } printf("\n"); printf("Hasil perkalian matriks bilangan skalar %d adalah \n", C); for (i=1; i<=k; i++) { for (j=1; j<=b; j++) { B[i][j]= C*A[i][j]; printf("%d\t", B[i][j]); } printf("\n"); } getch(); } A dengan

Tampilan:

Analisa: Dalam program ini kita dapat menentukan matriks yang dikali dengan bilangan scalar. Dalam prosesnya kita mengalikan bilangan scalar dengan setiap elemen matriks tersebut. III. Tugas Tambahan 1. Buatlah program C untuk menentukan matriks invers yang didefinisikan sebagai berikut : A=A-1 List program:
#include<stdio.h>

#include<conio.h> main() { int b, k, A[10][10], K[10][10]; int det, in[10][10]; printf("Berikut matriks 2x2\n"); ini akan menentukan invers

printf("Masukkan Elemen-elemen Matrik A\n"); for(b=1; b<=2; b++) { for(k=1; k<=2; k++) { printf("Masukkan Elemen Matrik A[%d][%d] : ", b, k); scanf("%d", &A[b][k]); } } printf("\n"); printf("Matriks A adalah \n"); for (b=1; b<=2; b++) { for (k=1; k<=2; k++) { printf("%d \t", A[b][k]); } printf("\n"); } printf("\n"); det =((A[1][1]*A[2][2])-(A[1][2]*A[2][1])); printf("Determinan Matriks A adalah %d \n", det); printf("\n"); if(det==0) printf("Matriks Tidak Memiliki Invers Karena Determinannya 0"); else { K[1][1] = A[2][2]; K[1][2] = -1*A[2][1]; K[2][1] = -1*A[1][2]; K[2][2] = A[1][1]; printf("Matriks Kofaktornya adalah \n"); for(b=1; b<=2; b++) { for(k=1; k<=2; k++)

{ printf("%d \t", K[b][k]); } printf("\n"); } printf("\n"); printf("Matriks Adjointnya adalah \n"); for (b=1; b<=2; b++) { for (k=1; k<=2; k++) { printf("%d \t", K[k][b]); } printf("\n"); } printf("Invers Matriks A adalah \n"); for(b=1; b<=2; b++) { for(k=1; k<=2; k++) { in[b][k] = K[k][b]/det; printf("%d \t", in[b][k]); } printf("\n"); } } getch(); }

Tampilan:

Analisa:

Dalam program ini akan dilakukan invers matriks 2x2. Pertama kita masukkan elemen-elemen matriks tersebut. Kemudian dilakukan perhitungan determinan. Kemudian matriks transpose dari matriks kofaktornya yang disebut adjoin. Kemudian adjoin dibagi dengan determinan maka didapat matriks inversnya. 2. Buatlah program C untuk menentukan matriks termasuk segitiga atas / bawah atau bukan List program:
#include<stdio.h> #include<conio.h> main() { int i, j, b, k, A[10][10]; lagi: printf("Input &b); printf("Input &k); printf("\n"); if(b != k) { printf("Matriks Yang Anda Masukkan Bukan Matriks Bujur Sangkar \n"); printf("\n"); goto lagi; } else { for(i=1; i<=b; i++) { for(j=1; j<=k; j++) { printf("Masukkan Elemen Matrik A[%d][%d] : ", i, j); scanf("%d", &A[i][j]); } } printf("\n"); printf("Matriks A adalah \n"); for (i=1; i<=b; i++) { for (j=1; j<=k; j++) Jumlah Kolom : "); scanf("%d",

Jumlah

Baris

");

scanf("%d",

{ printf("%d\t", A[i][j]); } printf("\n"); } printf("\n"); printf("Jenis Matriks A adalah \n"); i=1; j=k; if(A[i][j]==0) printf("MATRIKS SEGITIGA"); else if(A[j][i]==0) printf("MATRIKS SEGITIGA"); else printf("BUKAN MATRIKS SEGITIGA"); if(A[i][j-1]==0 && A[i+1][j]==0) printf(" ATAS"); else if(A[j-1][i]==0 && A[j][i+1]==0) printf(" BAWAH"); else printf(" "); } getch(); }

Tampilan:

Analisa: Untuk menentukan matriks segitiga atas atau bawah harus menggunakan matriks bujursangkar. Pertama kita menentukan terlebih dahulu

diagonalnya 0 atau bukan, jika benar maka termasuk matriks segitiga. Kemudian menentukan letak 0 lainnya apakah diatas atau dibawah diagonal. Jika diatas diagonal termasuk matriks segitiga atas, dan jika dibawah diagonal maka termasuk matriks segitiga bawah. IV. Analisa Umum Dalam array dua dimensi kita dapat melakukan banyak operasi yang dapat dilakukan oleh matriks. Sperti penjumlahan, pengurangan, perkalian, transpose, invers, kofaktor, menentukan determinan, menentukan segitiga atas/bawah, dsb. V. Kesimpulan Array 2 dimensi adalah matriks, sehingga dapat dilakukan bermacam-macam operasi yang dapat dilakukan oleh matriks. VI. Resume Kuis Dalam perkalian kita melakukan proses perulangan. Pertama kita melakukan perulangan untuk nilai baris dan kolom yang sama sampai batas yang dimasukkan. Kemudian dilakukan pengulangan untuk mengisi kolomkolomnya dan kemudian perulangan untuk mengisi baris-barisnya. Dalam menentukan invers, matriks yang digunakan harus bujursangkar. Kemudian dilakukan pencarian matriks adjoin, yaitu kofaktor yang ditranspose. Setelah itu kita mencari determinan dari awal. Setelah itu, adjoin dibagi determinan maka akan didapat inversnya. matriks matriks matriks matriks

Untuk menentukan matriks segitiga atas atau bawah harus menggunakan matriks bujursangkar. Pertama kita menentukan terlebih dahulu diagonalnya 0 atau bukan, jika benar maka termasuk matriks segitiga. Kemudian menentukan letak 0 lainnya apakah diatas atau dibawah diagonal. Jika diatas diagonal termasuk matriks segitiga atas, dan jika dibawah diagonal maka termasuk matriks segitiga bawah.