laporan aljabar linear
TRANSCRIPT
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
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
Program Wajib:
Invers matrik dengan determinan
Program Tambahan:
Operasi matrik
Transpose matrik
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
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);
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");
}
}
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];
}
}
}
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
- 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
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;
}
}
}
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];
}
}
}
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
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
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}
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
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
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);
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--;
}}
}
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
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.
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)
{
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;
}
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
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;
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.