Array 2 Dimensi
-
Upload
sunny-ineza -
Category
Documents
-
view
234 -
download
2
description
Transcript of Array 2 Dimensi
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
p×n .
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 kolom-
kolomnya 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 Jumlah Baris : "); scanf("%d",
&b);
printf("Input Jumlah Kolom : "); scanf("%d",
&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
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 A dengan
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();
}
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 ini akan menentukan invers
matriks 2x2\n");
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 Jumlah Baris : "); scanf("%d",
&b);
printf("Input Jumlah Kolom : "); scanf("%d",
&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++)
{
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 kolom-
kolomnya dan kemudian perulangan untuk mengisi baris-barisnya.
Dalam menentukan invers, matriks yang digunakan harus matriks
bujursangkar. Kemudian dilakukan pencarian matriks adjoin, yaitu matriks
kofaktor yang ditranspose. Setelah itu kita mencari determinan dari matriks
awal. Setelah itu, adjoin dibagi determinan maka akan didapat matriks
inversnya.
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.