Laporan Praktikum I Analisis Numerik Syarif Abdullah (G551150381)∗†
Matematika Terapan Departemen Matematika FMIPA IPB E-mail: syarif
[email protected] 25 Februari 2016 Deskripsi: Mengambil 1 soal latihan dari buku Scientific Computing With Case Studies, Dianne P. O’Leary Challenge 1.4, Tuliskan dengan LaTex dan modifikasi menjadi soal untuk dikerjakan dalam Scilab. Soal : 1. Sesuai program berikut, x = 1; delta = 1 / 2ˆ(53); for j=1:2ˆ(20), x = x + delta; end Jelaskan hasil dari program tersebut dan jelaskan pengetahuan tentang foating-point. 2. Kita tahu bahwa untuk setiap bilangan positif x, 2x adalah bilangan yang lebih besar dari x. Apakah ini benar untuk bilangan floating point? Jalankan program ini dan jelaskan hasil anda. x = 1; twox = 2 * x; k = 0; ∗ http † File
://syarif abdullah.student.ipb.ac.id/ dibuat dengan LYX Program
1
while (twox > x) x = twox; twox = 2*x; k = k + 1; end 3. Kita tahu bahwa penjumlahan dan perkalian adalah kommutatif x + y = y + x, xy = yx, dan assosiatif, ((x + y) + z) = x + (y + z), (xy)z = x(yz), dan bahwa distributif perkalian pada penjumlahan: x(y + z) = xy + xz. Berikan contoh bilangan floating point x, y, dan z untuk setiap penjumlahan adalah tidak assosiatif. Temukan suatu contoh similar dari perkalian, dan contoh ketiga menunjukkan bahwa perkalian floating point tidak selalu berlaku distributif pada penjumlahan. 4. Tuliskan suatu expresi Scilab yang memberikan nilai jawaban NaN dan yang memberikan -Inf. JAWAB: 1. Diperoleh hasil iterasi algoritma dengan pengulangan 1 sampai 220 yaitu x = 1. –>x=1; –>delta=1/2ˆ(53); –>for j=1:2ˆ20 –> x=x+delta; –>end –>disp(x) 1. 2
Kebanyakan komputer digital mempunyai dua buah cara penyajian bilangan riil, yaitu bilangan titik-tetap (fixed point) dan bilangan titikkambang (floating point). Dalam format bilangan titik-kambang setiap bilangan disajikan dengan jumlah digit berarti yang sudah tetap. Sebagai contoh, bilangan riil 2457654 dinyatakan sebagai 0.2457654 × 103 dalam format bilangan titik kambang dengan basis 10, atau 2.457654 × 102 . 2. Pada program di atas, –>x=1; –>twox=2*x; –>k=0; –>while (twox>x) –> x=twox –> twox=2*x –> k=k+1; –>end akan didapatkan hasil akhir, twox = 3
8.98D+307 x= 8.98D+307 twox = Inf x= Inf twox = Inf
4
Diperoleh hasil iterasi algoritma menggunakan sofware Scilab hasil akhirnya akan inf. Pada hasil terlihat bahwa ada bilangan yang dijadikan floating point, yaitu 8contohnya 8.98D+307, dengan mantisa 8.98, base adalah D, dan E adalah +307. 3. Terdapat dua buah kasus serius yang menyebabkan timbulnya galat pembulatan pada operasi penjumlahan dua buah bilangan titik-kambang: Kasus 1: Penjumlahan (termasuk pengurangan) bilangan yang sangat kecil ke (atau dari) bilangan yang lebih besar menyebabkan timbulnya galat pembulatan. Galat pembulatan pada Kasus 1 ini terjadi karena untuk menjumlahkan dua buah bilangan yang berbeda relatif besar, pangkatnya harus disamakan terlebih dahulu (disamakan dengan pangkat bilangan yang lebih besar). Caranya adalah dengan menggeser digit-digit (atau bit) bilangan yang pangkatnya lebih kecil. Pergeseran digit (atau bit) ini mengakibatkan adanya digit (atau bit) yang hilang. Kasus 2: Pengurangan dua buah bilangan yang hampir sama besar (nearly equal). Bila dua bilangan titik-kambang dikurangkan, hasilnya mungkin mengandung nol pada posisi digit mantis yang paling berarti (posisi digit paling kiri). Keadaan ini dinamakan kehilangan angka bena (loss of significance). Baik pemenggalan maupun pembulatan ke digit terdekat menghasilkan jawaban yang sama. Operasi perkalian dan pembagian dua buah bilangan titik-kambang tidak memerlukan penyamaan pangkat seperti halnya pada penjumlahan Perkalian dapat dilakukan dengan mengalikan kedua mantis dan menambahkan kedua pangkatnya. Pembagian dikerjakan dengan membagi mantis dan mengurangkan pangkatnya. Selain itu, register dengan panjang ganda dibutuhkan untuk menyimpan hasil antara. Hasil akhir dipotong ke dalam register tunggal. . Sekian Terimakasih.
5