Laporan Aljabar Linear

31
Laporan Program Aljabar Linear Disusun oleh: 1. Fauzan Habibi (06.2009.1.04846) 2. Andi Yusanto (06.2009.1.04855) 3. Rofiantono (06.2009.1.04864) Kelas B Jurusan Teknik Informatika Fakultas Teknologi Informasi Institut Teknologi Adhi Tama Surabaya 2011

Transcript of Laporan Aljabar Linear

Page 1: Laporan Aljabar Linear

Laporan Program Aljabar Linear

Disusun oleh:

1. Fauzan Habibi (06.2009.1.04846)

2. Andi Yusanto (06.2009.1.04855)

3. Rofiantono (06.2009.1.04864)

Kelas B

Jurusan Teknik Informatika

Fakultas Teknologi Informasi

Institut Teknologi Adhi Tama Surabaya

2011

Page 2: Laporan Aljabar Linear

Kata Pengantar

Puji syukur kehadirat ALLAH SWT atas rahmat dan karunia-Nya sehingga kami

dapat menyelesaikan progress Aljabar Linear dan membuat laporan yang berisi source

code dari hasil program yang kami buat ini dengan baik.

Laporan ini berisikan contoh soal beserta penyelesaian tentang kombinasi linear,

rentang, basis dan dimensi, transformasi linear serta komposisi transformasi linear yang

diuji secara langsung program yang telah kami buat. Laporan ini juga disertakan beberapa

source code dari program yang kami progreeskan. Source code sisanya berada di dalam

CD.

Kami menyadari bahwa makalah ini jauh dari kesempurnaan, oleh karena itu kami

mengharapkan kritik dan saran untuk membangun kesempurnaan makalah kami

berikutnya. Semoga karya tulis ini dapat bermanfaat.

Surabaya, 25 Januari 2011

Penulis

Page 3: Laporan Aljabar Linear

Program Wajib:

Invers matrik dengan determinan

Program Tambahan:

Operasi matrik

Transpose matrik

Page 4: Laporan Aljabar Linear

Mencari invers matrix dengan determinan

Contoh Soal!!!

Hitunglah invers matrik dengan determinan !!

1. Proses menentukan ordo matrik bujur sangkar dan menginputkan nilai matrik

sesuai dengan contoh di atas dan menampilkan ke dalam bentuk matrix n

2. Proses mennghitung determinan dengan sifat determinan yang ke - 7 dengan

operasi baris elementer

Page 5: Laporan Aljabar Linear

3. Menampilkan kofaktor matrik

4. Menampilkan adjoin matrik

5. Menampilkan invers matrix

Fungsi – fungsi dari program diatas antara lain :

Fungsi untuk mencari nilai determinan dengan operasi baris elementer

double segitigaatas(int n,double M[][20])

{

double det=1;

double op,k;

for(int i=1;i<=n-1;i++)

{

printf("operasi pada baris ke - %d\n",i);

if(M[i][i]!=1)

{

k=M[i][i];

printf("baris ke - %d dikali 1/%lf\n",i,k);

for(int l=1;l<=n;l++)

M[i][l]=M[i][l]/k;

}

else

k=M[i][i];

getche();

cetak(n,M);

det=det*k;

printf("determinan = %5.2lf\n",det);

Page 6: Laporan Aljabar Linear

printf("operasi pada kolom ke - %d \n",i);

getche();

for(int j=i+1;j<=n;j++)

{

op=M[j][i]/M[i][i];

for(int k=1;k<=n;k++)

M[j][k]=M[j][k]-op*M[i][k];

printf("baris ke %d = baris ke %d - %5.2lf kali baris ke %d\n",j,j,op,i);

getche();

cetak(n,M);

getche();

}

}

printf("operasi pada baris ke - %d\n",n);

if(M[n][n]!=1)

{

k=M[n][n];

det=det*k;

M[n][n]=M[n][n]/k;

}

cetak(n,M);

printf("determinan = %5.2lf\n",det);

return det;

}

Fungsi untuk menghitung nilai matrix

void invers(int n,double A[][20],double I[][20],double det)

{

for(int i=n;i>=1;i--)

{

printf("\t");

for(int j=n;j>=1;j--)

{

I[i][j]=A[i][j]/det;

printf("%5.2lf ",I[i][j]);

}

printf("\n");

}

}

Page 7: Laporan Aljabar Linear

Operasi matrik

Perhitungan yang dapat dilakukan pada matrix

penjumlahan

pengurangan

perkalian matrik dengan matrik

perkalian matrik dengan scalar

1 penjumlahan

- Menginputkan jumlah baris dan kolom lalu memasukkan nilai matrik

- Menginputkan nilai matrik yang ke – dua

- Menampilkan matrik yang telah di inputkan dan hasil penjumlahan ke dua

matrik

Fungsi menjumlahkan 2 matrik

void penjumlahan(int m,int n, float A[][20],float B[][20],float C[][20])

{

for(int i=1;i<=m;i++)

{

for(int j=1;j<=n;j++)

{

C[i][j]=A[i][j]+B[i][j];

}

}

}

Page 8: Laporan Aljabar Linear

2 pengurangan

- Menginputkan jumlah baris dan kolom lalu memasukkan nilai matrik

- Menginputkan nilai matrik yang ke – dua

- Menampilkan matrik yang telah di inputkan dan hasil pengurangan ke dua

matrik

Fungsi mengurangi 2 buah matrik

void pengurangan(int m,int n, float A[][20],float B[][20],float C[][20])

{

for(int i=1;i<=m;i++)

{

for(int j=1;j<=n;j++)

{

C[i][j]=A[i][j]-B[i][j];

}

}

}

3 perkalian matrik dengan matrik

- Menginputkan jumlah baris dan kolom lalu memasukkan nilai matrik

Page 9: Laporan Aljabar Linear

- Menginputkan nilai matrik yang ke – dua

- Menampilkan matrik yang telah di inputkan dan hasil perkalian matrik

Fungsi perkalian matrik dengan matrik

void perkalianmatrix(int m,int n,int p,int q,float A[][20],float B[][20],float C[][20])

{

for(int i=1;i<=m;i++)

{

for(int j=1;j<=q;j++)

{

C[i][j]=0;

for(int k=1;k<=n;k++)

{

C[i][j]=C[i][j]+A[i][k]*B[k][j];

}

}

}

}

4 perkalian matrik dengan skalar

- Menginputkan jumlah baris dan kolom lalu memasukkan nilai matrik

- Menginputkan nilai skalar, menampilkan matrik yang telah di inputkan dan

hasil matrik dangan skalr

Page 10: Laporan Aljabar Linear

Fungsi perkalian matrik dengan skalar

void perkalianskalar(int m,int n,int skalar, float A[][20])

{

for(int i=1;i<=m;i++)

{

for(int j=1;j<=n;j++)

{

A[i][j]=A[i][j]*skalar;

}

}

}

Page 11: Laporan Aljabar Linear

1

Transpose

Jika A adalah sebarang matriks m x n, maka, didefinisikan sebagai matriks n x m

yang didapatkan dengan mempertukarkan baris dan kolom dari A, yaitu kolom pertama

dari adalah baris pertama dari A, kolom kedua dari adalah baris kedua dari A, dan

seterusnya.

Contoh:

Apabila matrik tersebut di transpose, maka hasilnya sebagai berikut:

Jika dijalankan dengan program, maka hasilnya sebagai berikut:

1. menginputkan bentuk ordo matrik (m x n) dan nilai matrik

2. menampilkan matrik yang telah diinputkan dan hasil transpose

Fungsi dari program mencari nilai matrik transpose

void transpose(int m,int n,float A[][20],float B[][20])

{

for(int i=1;i<=m;i++)

{

for(int j=1;j<=n;j++)

{

B[j][i]=A[i][j];

Page 12: Laporan Aljabar Linear

}

}

}

Program Wajib:

Kombinasi Linear

Rentang (Span)

//belum selesai//Basis

(Basis ruang Baris dan Basis ruang Kolom)

Komposisi Transformasi Linear:

Refleksi

Proyeksi Orthogonal

Rotasi

Dilatasi

Kontraksi

Komposisi

Page 13: Laporan Aljabar Linear

Kombinasi Linear

Vektor v dikatakan merupakan kombinasi linier dari vektor – vektor v 1, v 2,…, vn

bila v bisa dinyatakan sebagai :

v = k1 v1 + k2 v 2+…+ kn vn ,

k1,k2,…,kn : skalar

Diketahui V ruang vektor dan S = { s1, s2 ,…, sn } dimana s1, s2,…, sn ∈V

Contoh Soal!!

Nyatakanlah W = (7, 7, 9, 11) sebagai kombinasi linier dari s1 = (2, 0, 3, 1), s2 = (4, 1, 3, 2)

dan s3 = (1, 3, –1, 3)

Jawab:

(cara lain membahasakan soal di atas: tentukanlah skalar s1, s2, dan s3 yang memenuhi x =

s1u1 + s2u2 + s3u3 )

Maka dapat diselesaikan dengan sifat determinan

Setelah dilakukan proses eliminasi gauss lalu dilakuakn eliminasi jordan

Untuk mencari x=u1,y=u2,z=u3

1 2 3

2 4 1 7

0 1 3 7

3 3 1 9

1 2 3 11

s s s

Page 14: Laporan Aljabar Linear

Jadi u1 = x = 6; u2 = y = -2 ; u3 = z = 3

Maka apabila dijalankan dengan program prosesnya adalah sebagai berikut:

1. Masukan jumlah dimensi dari vektor2 tersebut. Dalam soal diatas banyaknya

elemen vektor adalah 4, jadi inputan dimensi = 4

2. Memasukan nilai vektor-vektornya, dalam program ini vektor berupa larik dimensi

dua yang kemudian akan diubah ke dalam matrik

a. Memasukan nilai kedalam vektor u1 = {2,0,3,1}

b. Memasukan nilai ke vektor u2={4,1,3,2}

c. Memasukan nilai vektor u3={1,3,-1,3}

d. Memasukan vektor W= {7,7,9,11}

Page 15: Laporan Aljabar Linear

3. Mengubah vektor dalam bentuk matrik

4. Proses eliminasi gauss

a. Proses pada baris pertama

b. Proses pada kolom pertama

c. Proses pada kolom ke dua

Page 16: Laporan Aljabar Linear

d. Proses pada baris ke 3

e. Proses pada kolom ke 3

5. Proses eliminasi Jordan

a. Proses pada baris ke 4dan ke 3

Tidak terjadi apa-pa karena untuk baris ke 4 semua nilai baris = 0

Sedangkan pada baris ke tiga pivot = 1

b. Proses pada kolom ke 3

c. Proses pada baris ke dua kolom ke dua

d. Operasi pada baris ke 1 kolom ke 1

Juga tidak terjadi apa-apa

6. Nilai x=s1,y=s2,z=s3 diketahui

Page 17: Laporan Aljabar Linear

Fungsi fungsi pada program Fungsi gausdouble gaus(int V,int n,double k[][10])

{double det=1;double op,z;for(int i=1;i<=V-1;i++){

printf("operasi pada baris ke - %d\n",i);if(k[i][i]!=1){

z=k[i][i];printf("baris ke - %d dikali 1/%lf\n",i,z);for(int l=1;l<=n;l++)

k[i][l]=k[i][l]/z;}else

z=k[i][i];getche();cetak(V,n,k);det=det*z;//printf("determinan = %5.2lf\n",det);printf("operasi pada kolom ke - %d \n",i);getche();for(int j=i+1;j<=n;j++){

op=k[j][i]/k[i][i];for(int h=1;h<=n;h++)

k[j][h]=k[j][h]-op*k[i][h];printf("baris ke %d = baris ke %d - %5.2lf kali baris ke %d\n",j,j,op,i);getche();cetak(V,n,k);getche();

}}cout<<endl;if(k[V][n]!=0){

printf("operasi pada baris ke - %d\n",n);if(k[V][n]!=1){

z=k[V][n];det=det*z;k[n][n]=k[n][n]/z;

}cetak(V,n,k);//printf("determinan = %5.2lf\n",det);

Page 18: Laporan Aljabar Linear

return det;}else

return det=0;}

Fungsi Jordanvoid jordan(int V,int n,double k[][10])

{double z,op;int t=n-1;for(int i=V;i>=1;i--){

cout<<"operasi pada baris ke"<<i<<"\n";if(k[i][t]!=0){

if(k[i][t]!=1){

z=k[i][t]/k[i][t];cout<<"baris ke - "<<i<<" dikali "<<z<<"\n";for(int l=1;l<=n;l++)

k[i][l]=k[i][l]/z;cetak(V,n,k);

}else

z=k[i][t];getche();cout<<"operasi pada kolom ke "<<i<<"\n";for(int j=t-1;j>=1;j--){

op=k[j][i]/k[i][i];for(int h=1;h<=n;h++)

k[j][h]=k[j][h]-op*k[i][h];cout<<"baris ke "<<j<<" = baris ke"<<j<<" - "<<op<<" kali

baris ke "<<i<<"\n";cout<<endl;cetak(V,n,k);getche();cout<<endl;

}t--;

}}

}

Page 19: Laporan Aljabar Linear

Rentang (Span)

Diketahui suatu Ruang Vektor V, S = {v1, v2, …, vr } dan S Í V

W = { x | x merupakan kombinasi linier vektor-vektor S artinya: x = k1 v1 + k2 v2 + ….. +

kr vr } maka S disebut “rentang (span)” dari W atau “S merentang W” dan dituliskan W =

span (S) atau W = span {v1, v2, ….. , vr }

Dalam menyelesaikan soal rentang ada hal-hal yang perlu diperhatikan:

a. Tentukan vektor x = (x1, x2, … xn) sebagai “wakil” Î W

b. Selesaikan soal di atas dengan cara seperti menyelesaikan soal kombinasi linier,

c. Jika skalar k1, k2, … kr terdefinisi, maka S rentang W jika tidak, maka S bukan

rentang W

Contoh Soal!!

Apakah vektor u={1,-4,7}, v={2, 5,-8},w={3,6,9} merentang R3???

Jawab:

a) Tentukan satu wakil vektor R3, misalkan x = (a, b, c) di mana a, b, c bilangan real

yang diketahui Seandainya {u, v, w } rentang R3, maka x ÎR3 dapat dinyatakan

sebagai kombinasi linier dari {u, v, w }

(a, b, c) = k1(1, -4, 7) + k2 (2, 5, -8) + k3 (3, 6, 9); akan dicari k1, k2, k3

Maka akan berbentuk:

Jadi bentuk matriknya:

Penyelesaian dengan menggunakan sifat determinan

Maka det(A)= a11xa22xa33 = 1x13x240/13 = 240

Page 20: Laporan Aljabar Linear

Jadi vektor-vektor tersebut adalah rentang dari R3 karena skalar-skalarnya terdefinisi dan

mempunyai hasil determinan.

Apabila dijalankan dengan program maka:

1. Menginputkan dimensi dari vektor

2. Mengisikan nilai ke dalam vekor

3. Tampilan vektor dan diubah kedalam bentuk matrik

4. Proses mencari determinan dan proses pembuktian

Dari gambar diatas terlihat bahwa hasil determinan = 240, itu artinya vektor-vektor

tersebut merentan R3.

Page 21: Laporan Aljabar Linear

Pada dasarnya fungsi untuk menhitung rentang adalah sama seperti fungsi untuk mencari

determinan dengan menggunakan sifat determinan. Hanya saja ditambhkan keterangan

sebagai pembuktian. Berikut fungsi untuk mengetahui rentang dari suatu vektor.

Fungsi rentang

double gaus(int V,int n,double k[][10])

{

double det=1;

double op,z;

for(int i=1;i<=V-1;i++)

{

printf("operasi pada baris ke - %d\n",i);

if(k[i][i]!=1)

{

z=k[i][i];

printf("baris ke - %d dikali 1/%lf\n",i,z);

for(int l=1;l<=n;l++)

k[i][l]=k[i][l]/z;

}

else

z=k[i][i];

getche();

cetak(V,n,k);

det=det*z;

//printf("determinan = %5.2lf\n",det);

printf("operasi pada kolom ke - %d \n",i);

getche();

for(int j=i+1;j<=n;j++)

{

op=k[j][i]/k[i][i];

for(int h=1;h<=n;h++)

k[j][h]=k[j][h]-op*k[i][h];

printf("baris ke %d = baris ke %d - %5.2lf kali baris ke %d\n",j,j,op,i);

getche();

cetak(V,n,k);

getche();

}

}

cout<<endl;

if(k[V][n]!=0)

Page 22: Laporan Aljabar Linear

{

printf("operasi pada baris ke - %d\n",n);

if(k[V][n]!=1)

{

z=k[V][n];

det=det*z;

k[n][n]=k[n][n]/z;

}

cetak(V,n,k);

//printf("determinan = %5.2lf\n",det);

return det;

}

else

return det=0;

}

Page 23: Laporan Aljabar Linear

Komposisi Transformasi

Komposisi Empat Transformasi

Dimensi (x, y)

Contoh:

Jika x = 1 dan y = 2

Jawab:

1). Di refleksi terhadap sumbu-y

2). A1 di Kontraksi nilai konstantanya(0 <= k <= 1)= 0,2

A2= |0.2 0 | |-1| = |-0.2|

|0 0.2| .| 2| | 0.4|

3). A2 diproyeksi ortogonal pada sumbu-x

A3=|1 0| |-0.2|=|-0.2|

|0 0|. | 0.4| | 0|

Maka apabila dijalankan dengan program, hasilnya sebagai berikut:

1. Memasukan nilai x dan y

2. Proses Refleksi terhadap sumbu y

3. Proses Kontraksi dengan konstanta = 0.2

Page 24: Laporan Aljabar Linear

4. Proses terakhir adalah proyeksi terhap sumbu x

Fungsi-fungsi dari program diatas adalah sebagi berikut:

Fungsi untuk pencerminan

void inisial_my(int my[][4]){

for(int i=1;i<=2;i++){

for(int j=1;j<=2;j++){

if(i+j==2)my[i][j]=-1;

else if((i+j)%2==1)my[i][j]=0;

elsemy[i][j]=1;

}}

}

void pencerminan_y(int x[][4],int my[][4],int c[][4]){

for(int i=1;i<=1;i++){

for(int j=1;j<=2;j++){

c[i][j]=0;for(int k=1;k<=2;k++){

c[i][j]=c[i][j]+x[i][k]*my[k][j];}

}}

} Fungsi untuk kontraksivoid inisial_mk(float mk[][4],float k)

{for(int i=1;i<=2;i++){

for(int j=1;j<=2;j++){

if(i==j)mk[i][j]=k;

Page 25: Laporan Aljabar Linear

elsemk[i][j]=0;

}}

}void dilatasi_mk(float x[][4],float mk[][4],float c[][4]){

for(int i=1;i<=1;i++){

for(int j=1;j<=2;j++){

c[i][j]=0;for(int k=1;k<=2;k++){

c[i][j]=c[i][j]+x[i][k]*mk[k][j];}

}}

}

Fungsi proyeksivoid inisial_px(int px[][4])

{for(int i=1;i<=2;i++){

for(int j=1;j<=2;j++){

if(i+j==2)px[i][j]=1;

elsepx[i][j]=0;

}}

}void proyeksi_x(int x[][4],int px[][4],int c[][4]){

for(int i=1;i<=1;i++){

for(int j=1;j<=2;j++){

c[i][j]=0;for(int k=1;k<=2;k++){

c[i][j]=c[i][j]+x[i][k]*px[k][j];}

}}

}

Untuk lebih lengkapnya bisa dilihat dalam CD.