Modul Praktikum 2 Tujuan khusus Mahasiswa dapat mengetahui efek errors didalam perhitungan numerik. Pokok Bahasan: Error dan perambatan error Materi error absolut dan relatip perambatan error pada perkalian, pembagian dan penguranan.
Kasus/Soal 1: Pengaruh serius dari round-off error terjadi didalam dua tipe situasi: Bila penjumlahan (atau pengurangan)sebuah bilangan yang sangat kecil terhadap (atau dari) sebuah bilangan besar, dan Bila sebuah bilangan dikurangkan dari bilangan lain yang sangat dekat. Untuk menguji tipe pertama (a), misalkan ditambahkan 0,00001 sebanyak seribu kali kepada satuan (1), buatlah programmnya.
Jawab (btk pertama) Hasil Run: /* Penjumlahan dengan presisi tunggal Sum-Single.C++*/ #include <stdio.h> #include <conio.h> #include <iostream.h> void main() { float x, sum=1.0; int i,k=0; for (i=1;i<=10000;i++) sum = sum + 0.00001; } cout<<"\nsum= "<<sum; getch();
Jawab(btk kedua) /* Penjumlahan dengan presisi tunggal Sum-Double.C++*/ #include <stdio.h> #include <conio.h> #include <iostream.h> void main() { double x, sum=1.0; int i,k=0; for (i=1;i<=10000;i++) { sum = sum + 0.00001; } cout<<"\nsum= "<<sum; getch(); } Hasil Run:
Hasil Run: #include <conio.h> #include <iostream.h> #include <stdio.h> main() { float x, sum=1.0; int i,k=0; for (i=1;i<=10000;i++) { sum = sum + 0.00001; } printf ("\nsum =%f", sum); getch();}
Hasil dari program ini (btk ketiga) adalah : SUM =1,100136 Bila jawaban exact adalah 1,1, kesalahan relatif dari perhitungan ini adalah: (1,1 – 1,100136)/1,1 = -0,000124 atau -0,0124%.
Kasus/soal 2: Masalah lain yang mengganggu adalah bahwa dua bilangan yang secara matematis identik, tidak selalu sama didalam komputer. Misalnya, persamaan berikut: y=a/b, w= y*b, dan z=a-w, dimana a dan b adalah konstanta. Secara matematis w sama dengan a, sehingga z harus sama dengan nol. Jika persamaan ini dihitung pada sebuah komputer, z menjadi nol atau sebuah nilai yang sangat kecil bukan nol, bergantung pada nilai dari a dan b. Buatlah program untuk ketiga persamaan diatas.
Apa yang terjadi didalam komputer adalah bahwa sebuah round-off error terjadi bila z=a/b dan w=a*b dihitung dan disimpan. Sehinga w=z*b pada baris ke lima tidak persis exact menjadi a. Besaran relatif dari round-off error berperan terhadap perkalian atau pembagian dengan sebuah konstanta dan tersimpan didalam memori, sama dengan machine apsilon. Error dari sebuah bilangan yang disebabkan oleh round-off meningkat sebagaimana dengan peningkatan operasi aritmatika.
Jawab: /* Uji kesamaan. C++*/ #include <stdio.h> #include <conio.h> #include <iostream.h> #include <math.h> main() { float a, b,w,y,z,k; a=cos(0.3); printf("a=%f",a); for (k=1;k<=20;k++) { b = sin(0.7*k); z=a/b; y=a-w; printf("k=%6.2f,a=%13.4e,b=%13.4e",k,a,b); printf("w=%13.4e,y=%13.4e\n",w,y); } getch();
Hasil Run: