Laporan praktikum Metode Komputasi Matematika 17 Desember 2015 Lili Hernawati —G551150321 December 21, 2015 (Latihan Bab 2 Matlab J. Leon, no.soal sesuai dengan NRP modulo jumlah soal) Modifikasi dengan Scilab dan laporan dituliskan dalam LaTex. No.soal: 6 Gunakan Matlab untuk membuat matriks A dengan mendefinisikan: A=vander(1:6) A=A-diag(sum(A’)) 1. Dengan konstruksi di atas entri-entri dalam setiap baris dari A semuanya harus memiliki jumlah nol, 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. 2. Gunakan MATLAB untuk menghitung det (AT). Apakah nilai-nili yang dihitung untuk det(A) dan det(A’) 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 A’. 3. Definisikan B=A*A’. 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 adalah memang betul singular. Berikut adalah perintah >> A = vander(1 : 6) A= 1 1 1 1 32 16 8 4 243 81 27 9 1024 256 64 16 3125 625 125 25 7776 1296 216 36
pada MATLAB untuk matriks A: 1 2 3 4 5 6
1 1 1 1 1 1
>> A = A − diag(sum(A0 )) A=
1
−5 32 243 1024 3125 7776
1 −47 81 256 625 1296
1 8 −337 64 125 216
1 4 9 −1349 25 36
1 2 3 4 −3901 6
1 1 1 1 1 −9330
Sedangkan hasil modifikasi pada Scilab untuk matriks A sebagai berikut: Startup execution: loading initial environment −− > v = [1 : 6]0 v= 1. 2. 3. 4. 5. 6. −− > A = [v.5 v.4 v.3 v.2 v.1 v.0 ] A= 1 1 1 1 1 1 32 16 8 4 2 1 243 81 27 9 3 1 1024 256 64 16 4 1 3125 625 125 25 5 1 7776 1296 216 36 6 1 −− > A = A − diag(sum(A0 , ”r”)) A= −5. 1. 1. 1. 1. 1. 32. −47. 8. 4. 2. 1. 243. 81. −337. 9. 3. 1. 1024. 256. 64. −1349. 4. 1. 3125. 625. 125. 25. −3901. 1. 7776. 1296. 216. 36. 6. −9330. Catatan: pada Scilab tidak ada perintah untuk vandermode langsung, jadi harus dimodifikasi terlebih dahulu. Begitupun untuk menentukan A=Adiag(sum(A’)) menjadi A=A-diag(sum(A’,”r”)) dikarenakan perintah sum pada matriks antara MATLAB dan Scilab berbeda. Bagian a. Berikut hasil menggunakan MATLAB untuk menentukan determinan matriks A, invers matriks A, dan menentukan jenis matriks A singular atau tidak. >> A = A − diag(sum(A0 )) A= −5 1 1 1 1 1 32 −47 8 4 2 1 243 81 −337 9 3 1 1024 256 64 −1349 4 1 3125 625 125 25 −3901 1 7776 1296 216 36 6 −9330
2
>> x = ones(6, 1) x= 1 1 1 1 1 1 >> A ∗ x ans = 0 0 0 0 0 0 >> d = det(A) d= 10.2645 >> inv(A) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.940578e-019. ans = 1.0e+013 * −7.0369 −0.2840 −0.0301 −0.0063 −0.0020 −0.0008 −7.0369 −0.2840 −0.0301 −0.0063 −0.0020 −0.0008 −7.0369 −0.2840 −0.0301 −0.0063 −0.0020 −0.0008 −7.0369 −0.2840 −0.0301 −0.0063 −0.0020 −0.0008 −7.0369 −0.2840 −0.0301 −0.0063 −0.0020 −0.0008 −7.0369 −0.2840 −0.0301 −0.0063 −0.0020 −0.0008 Berikut hasil modifikasi menggunakan Scilab untuk menentukan determinan matriks A, invers matriks A, dan menentukan jenis matriks A singular atau tidak. −− > A = A − diag(sum(A0 , ”r”)) A= −5. 1. 1. 1. 1. 32. −47. 8. 4. 2. 243. 81. −337. 9. 3. 1024. 256. 64. −1349. 4. 3125. 625. 125. 25. −3901. 7776. 1296. 216. 36. 6. −− > x = ones(6, 1)
3
1. 1. 1. 1. 1. −9330.
1. 1. 1. 1. 1. 1. –¿A*x ans = 0. 0. 0. 0. 0. 0. −− > det(A) ans = 10.264473 −− > inv(A) Warning : matrix is close to singular or badly scaled. rcond = 1.9406D-19 ans = 101 1∗ −703.68744 −28.402179 −3.0063022 −0.6316851 −0.1980289 −703.68744 −28.402179 −3.0063022 −0.6316851 −0.1980289 −703.68744 −28.402179 −3.0063022 −0.6316851 −0.1980289 −703.68744 −28.402179 −3.0063022 −0.6316851 −0.1980289 −703.68744 −28.402179 −3.0063022 −0.6316851 −0.1980289 −703.68744 −28.402179 −3.0063022 −0.6316851 −0.1980289
−0.0788773 −0.0788773 −0.0788773 −0.0788773 −0.0788773 −0.0788773
Untuk memeriksa A matriks singular atau tidak dapat dilihat dari nilai determinan dan nilai inversnya dengan ketentuan jika matriks A nilai determinan sama dengan 0 atau tidak mempunyai invers, maka A adalah matriks singular . Sebaliknya, jika matriks A determinannya tidak sama dengan 0 sehingga mempunyai invers, maka A matriks nonsingular. Jika kita tinjau kembali hasil invers dan determinan matriks A di atas, nilai determinannya tidak sama dengan 0, sehingga nilai determinan dalam hal ini kurang tepat untuk menunjukkan matriks A singular yang seharusnya nilai determinannya sama dengan 0. Sedangkan berdasarkan nilai invers matriks A memiliki invers yang seharusnya menunjukkan bahwa matriks A non singular, akan tetapi pada uraian hasil invers matriks A terdapat peringatan mengenai hasil invers (Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.940578e-019. ) yang menjelaskan bahwa matriks A lebih mendekati sebagai matriks yang singular, kemungkinan hasil tidak akurat. Jadi petunjuk yang paling tepat untuk menunjukkan bahwa matriks A adalah singular dengan menggunakan invers matriksnya.
4
Bagian b: Berikut perintah pada matlab: >> A = vander(1 : 6) A= 1 1 1 1 1 1 32 16 8 4 2 1 243 81 27 9 3 1 1024 256 64 16 4 1 3125 625 125 25 5 1 7776 1296 216 36 6 1 >> A = A − diag(sum(A0 )) A= −5 1 1 1 32 −47 8 4 243 81 −337 9 1024 256 64 −1349 3125 625 125 25 7776 1296 216 36 >> t = transpose(A) t= −5 32 243 1024 1 −47 81 256 1 8 −337 64 1 4 9 −1349 1 2 3 4 1 1 1 1
1 2 3 4 −3901 6
3125 625 125 25 −3901 1
1 1 1 1 1 −9330
7776 1296 216 36 6 −9330
>> esA = rref (A) esA = 1 0 0 0 0 −1 0 1 0 0 0 −1 0 0 1 0 0 −1 0 0 0 1 0 −1 0 0 0 0 1 −1 0 0 0 0 0 0 >> est = rref (t) est = 1.0e+003 * 0.0010 0 0 0 0 0 0.0010 0 0 0 0 0 0.0010 0 0 0 0 0 0.0010 0 0 0 0 0 0.0010 0 0 0 0 0 Berikut hasil modifikasi dengan scilab: −− > v = [1 : 6]0 v=
5
−8.921 −0.3601 −0.0381 −0.0080 −0.0025 0
1. 2. 3. 4. 5. 6. A = [v.5 v.4 v.3 v.2 v.1 v.0 ] A= 1. 1. 1. 1. 32. 16. 8. 4. 243. 81. 27. 9. 1024. 256. 64. 16. 3125. 625. 125. 25. 7776. 1296. 216. 36.
1. 2. 3. 4. 5. 6.
1. 1. 1. 1. 1. 1.
−− > A = A − diag(sum(A0 , ”r”)) A= −5. 1. 1. 1. 1. 1. 32. −47. 8. 4. 2. 1. 243. 81. −337. 9. 3. 1. 1024. 256. 64. −1349. 4. 1. 3125. 625. 125. 25. −3901. 1. 7776. 1296. 216. 36. 6. −9330. t = mtlbt (A) t= −5. 32. 243. 1024. 3125. 7776. 1. −47. 81. 256. 625. 1296. 1. 8. −337. 64. 125. 216. 1. 4. 9. −1349. 25. 36. 1. 2. 3. 4. −3901. 6. 1. 1. 1. 1. 1. −9330. −− > esA = rref (A) esA = 1 0 0 0 0 −1 0 1 0 0 0 −1 0 0 1 0 0 −1 0 0 0 1 0 −1 0 0 0 0 1 −1 0 0 0 0 0 0 −− > est = rref (t) est = 1 0 0 0 0 −8921.287 0 1 0 0 0 −360.0803 0 0 1 0 0 −38.113633 0 0 0 1 0 −8.0084476 0 0 0 0 1 −2.5105928 0 0 0 0 0 0 Perintah untuk menentukan transpose matriks A memiliki perbedaan antara penggunaan di MATLAB dan Scilab, pada MATLAB langsung menggunakan
6
transpose(A) sedangkan pada Scilab harus menggunakan mtlbt (A). Akan tetapi untuk perintah eselon baris tereduksi masih sama yakni rref (A). Hasil dari eselon baris tereduksi matriks A dan matriks A’ dapat dilihat dari hasil MATLAB dan Scilab di atas. Terlihat bahwa ranknya berjumlah 5 dengan ukuran matriks 6x6 yang berarti n=6. Ingat kembali bahwa jika rank kurang dari n, maka matriks tersebut singular. Bagian c Berikut merupakan hasil matriks B=A*A’ dan hasil eselon baris tereduksinya pada MATLAB. >> A A= −5. 1. 1. 1. 1. 1. 32. −47. 8. 4. 2. 1. 243. 81. −337. 9. 3. 1. 1024. 256. 64. −1349. 4. 1. 3125. 625. 125. 25. −3901. 1. 7776. 1296. 216. 36. 6. −9330. >> B = A ∗ A0 B= 30 −192 −192 3318 −1458 1316 −6144 15861 −18750 63924 −46656 180474
−1458 1316 179270 235872 756398 1912764
−6144 −18750 15861 63924 235872 756398 2938026 3318672 3318672 25390302 8250354 25105164
>> esB = rref (B) esB = 1.0e+003 * 0.0010 0 0 0 0 0 0.0010 0 0 0 0 0 0.0010 0 0 0 0 0 0.0010 0 0 0 0 0 0.0010 0 0 0 0 0
−46656 180474 1912764 8250354 25105164 149242680
−8.9213 −0.3601 −0.0381 −0.0080 −0.0025 0
>> rank(B) ans = 5 Berikut merupakan hasil matriks B=A*A’ dan hasil eselon baris tereduksinya pada Scilab. −− > A A=
7
−5. 1. 1. 1. 1. 1. 32. −47. 8. 4. 2. 1. 243. 81. −337. 9. 3. 1. 1024. 256. 64. −1349. 4. 1. 3125. 625. 125. 25. −3901. 1. 7776. 1296. 216. 36. 6. −9330. −− > B = A ∗ A0 B= 30. −192. −1458. −6144. −18750. −192. 3318. 1316. 15861. 63924. −1458. 1316. 179270. 235872. 756398. −6144. 15861. 235872. 2938026. 3318672. −18750. 63924. 756398. 3318672. 25390302. −46656. 180474. 1912764. 8250354. 25105164. −− > esB esB = 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0
−46656. 180474. 1912764. 8250354. 25105164. 1.492D + 08
= rref (B) 0 0 0 1 0 0
0 −8921.287 0 −360.0803 0 −38.113633 0 −8.0084476 1 −2.5105928 0 0
−− > rank(B) ans = 5. Terlihat bahwa hasil eselon baris tereduksi dari matriks B=A*A’ memiliki rank sama dengan 5 yang berarti rank lebih kecil dari n=6 sehingga matriks B merupakan matriks singular pula.
8