Laporan Praktikum Metode Komputasi Matematika (Latihan Bab 2 dari Buku J. Leon Aljabar Linear) Program Scilab Syarif Abdullah (G551150381)∗†
Matematika Terapan Departemen Matematika FMIPA IPB email:
[email protected] 17 Desember 2015 Deskripsi: Mengambil 1 soal latihan MATLAB Bab 2 dari buku J. Leon Aljabar Linear, tuliskan dengan LaTex dan modifikasi menjadi soal untuk dikerjakan dalam Scilab. Soal yang harus dikerjakan: 2 digit terakhir NRP (modulo jumlah soal di Latihan(6))= soal no. 6. Gabungkan dengan butir 1 di atas. Jadikan soal latihan masing-masing. Soal No. 6: Gunakan MATLAB untuk membuat matriks A dengan mendefinisikan: A = vander(1 : 6);A = A − diag(sum(A0 )) 1. Dengan konstruksi di atas entri-entri dalam setipa baris dari A semuanya harus memiliki jumlah nol. Untuk memeriksa hal ini, definisikan x = ones(6, 1) dan gunakan MATLAB untuk menghitung hasil kali Ax. Matriks A pasti singular. Mengapa? Terangkan. Gunakan fungsi-fungsi MATLAB det dan inv untuk menghitung nilai-nilai dari det(A) dan A−1 . Fungsi MATLAB yang mana yang merupakan petunjuk yang dapat lebih diandalkan untuk singularitas? ∗ http † File
://syarif abdullah.student.ipb.ac.id/ dibuat dengan LYX Program
1
2. Gunakan MATLAB untuk menghitung det(AT ). Apakah nilai-nilai yang dihitung untuk det(A) dan det(AT ) sama? Satu cara lain untuk memeriksa apakah suatu matriks adalah singular ialah menghitung bentuk eselon baris tereduksinya. Gunakan MATLAB untuk menghitung bentuk-bentuk eselon baris tereduksi dari A dan AT . 3. Definisikan B = A ∗ A0 . Nilai eksak dari det(B) harus sama dengan 0. Mengapa? Terangkan. Gunakan MATLAB untuk menghitung det(B). Apakah nilai yang dihitung untuk determinan sama atau hampir sama dengan nilai eksak? Hitunglah bentuk eselon baris tereduksi dari B untuk memeriksa bahwa matriks B memang betul singular. JAWAB: Karena kita akan menggunakan Program Scilab, maka kita akan memodivikasi beberapa perintah pada Program MATLAB menjadi perintah Scilab. Karena syntax/build in function pada Scilab tidak ada cara untuk menampilakan matriks khusus (spesial) Vandermonde, maka kita akan membangun atau membuat matriks tersebut sehingga hasilnya sama dengan perintah pada MATLAB. Tanpa mengurangi keumuman pada bentuk matriks Vandermonde, akan diberikan beberapa contoh terlebih dahulu sebagai berikut: Vandermonde matrix Syntax pada MATLAB Description: A = vander(v) memanggil Vandermonde matrix dimana kolomkolomnya adalah pangkat dari vektor v, yaitu A(i,j) = v(i)ˆ(n-j), dimana n = panjang(v ). Contoh: >>vander(1:.5:3)
>> vander(1:3)
2
>> A=vander(1:6)
Dengan Menggunakan Program Scilab, akan dibangun Matriks Vandermonde dengan perintah-perintah sebagai berikut: –>v=[1:6]’ //mendefinisikan vektor kolom untuk membangkitkan matriks vandermonde dari nilai 1-6
–>A=[v.ˆ5 v.ˆ4 v.ˆ3 v.ˆ2 v.ˆ1 v.ˆ0] // bentuk umum matriks vandermonde A(i,j) = v(i).ˆ(n-j)
–>A=A-diag(sum(A’,”r”))//modifikasi matriks A baru dengan perintah campuran diag dan sum scilab
3
–>x=ones(6,1) //definisikan vektor kolom dengan element satu
–>A*x // cek jumlah entri dari setiap baris pada matriks A yang baru
atau dengan menggunakan perintah-perintah sum sebagai berikut: –>sum(A’,”r”) // cara lain cek jumlah entri dari setiap baris pada matriks A yang baru dengan perintah sum(A’)
–>sum(A,”c”) // cara lain cek jumlah entri dari setiap baris pada matriks A yang baru dengan perintah sum(A’)
4
–>sum(A,”c”) // cara lain cek jumlah entri dari setiap baris pada matriks A yang baru dengan perintah sum(A’)
–>rank(A) // mengecek rank(dimensi daerah hasil/image) dapat melihat singularitas matriks A
Terlihat bahwa A merupakan matriks singular karena dapat dicari dengan perintah rank yang menghasilkan rank(A)=5 tetapi ukuran pada matriks mempunyai ukuran 6×6, sehingga pastilah menghasilkan satu vektor baris nol. Maka matriks A di atas pastilah singular. Berikut akan digunakan perintah det(A) dan inv(A) untuk menyelidiki singularitas pada matriks A. –>det(A) // perintah determinan matriks A
–>inv(A) // perintah mendapatkan inverse matriks A Warning : matrix is close to singular or badly scaled. rcond = 1.9406D-19
5
Terlihat bahwa pada perintah det(A) tidak menghasilkan 0 yang artinya matriks A nonsingular. Hal ini tidak tepat karena seharusnya matriks A merupakan matriks Singular. Begitupula dengan menggunakan perintah inv(A), di mana A mempunyai invers(balikan). Hal ini tidak tepat pula karena seharusnya matriks A merupakan matriks Singular dan tidak mempunyai invers (balikan). Terlebih lagi ada peringatan “Warning : matrix is close to singular or badly scaled. rcond = 1.9406D-19” yang artinya matriks ini tidak singular atau mempunyai skala yang jelek dengan kondisi rcond=1.9406D-19. Maka pada penentuan matriks A merupakan matriks singular atau tidak dengan menggunakan perintah det(A) dan inv(A) kurang tepat. –>det(A) // perintah determinan matriks A
–>det(A’) // perintah determinan matriks A’
–>rref(A) // perintah baris eselon tereduksi Gauss-Jordan (reduced row echelon form) matriks A
6
–>rref(A’) // perintah baris eselon tereduksi Gauss-Jordan (reduced row echelon form) matriks A
Terlihat bahwa pada perintah rref(A) dan rref(A’) menghasilkan suatu matriks eselon baris tereduksi dan membentuk matriks segitiga atas. Sehingga bisa dicari determinan dari matriks A dengan mengalikan elemen-elemen pada diagonal utamanya yang menghasilkan 0. Maka A merupakan matriks Singular. Selain itupula dapat dilihat bahwa ruang baris pada pencarian rref(A) dan pencarian ruang kolom rref(A’) sama. Hal ini karena ruang hasil (Rank) pada matriks A mengawetkan ruang hasil walaupun A ditranspose. Hal ini sesuai rumus Rank(A)+Null(A)= n dan Rank(A)=Rank(A’). Sehingga menurut penulis untuk mencari matrik singular atau nonsingular lebih tepat dengan menggunakan perintah rank(A) atau reef(A). Berikut akan dilakukan perinta-perintah pada Scilab untuk menjawab pertanyaan ke-3. –>B=A*A’ // mendefinisikan matriks baru B (mengasilkan matriks symmetry)
–>abs(det(B)) // perintah eksak determinan matriks B
–>det(B) // perintah determinan matriks B
7
–>rref(B) // perintah baris eselon tereduksi Gauss-Jordan (reduced row echelon form) matriks B
–>rank(B) // mengecek rank(dimensi daerah hasil/image) dapat melihat singularitas matriks B
Terlihat bahwa B merupakan perkalian dari matriks A dan A’ yang menghasilkan matriks symmetri dengan kolom pertama dan baris pertama bernilai negatif keciali a11 semua bernilai negatif. Dengan mencongak terlihat bahwa B merupakan suatu matriks singular. Hal ini juga kebetulan didukung dengan hasil dari det(B) yang menghasilkan 0 yang artinya B singular, sehingga tidak usa dicari inversnya. Selain itu pada perintah rref(B), karena perintah baris eselon tereduksi Gauss-Jordan (reduced row echelon form) matriks B menghasilkan det(A)=0 dan pada perintah baris eselon tereduksi Gauss-Jordan (reduced row echelon form) matriks B mempunayi rank(B)+null(B)
8