Jumat, 02 Desember 2016

KOMPUTASI NUMERIK : [003-001] GALAT / ERROR

KOMPUTER NUMERIK : GALAT ATAU ERROR [003-001]


Hay guys, ketemu lagi di blog Kumpulan Komputasi Algoritma. Sudah sekian lama saya tidak ngeblog. Ya harus cari materi dulu dong hehe... Sebelumnya udah bahas tentang dunia Citra, Sinyal, dan Grafik. Sekarang aku akan membahas tentang Komputer Numerik atau biasanya Metode Numerik. Sebenarnya pernyataan kedua tu sama saja. Hanya bedanya kalau Metode Numerik itu nanti ada rumus – rumusnya sedangkan Komputer Numerik itu rumus tersebut diterapkan ke dalam komputer.

Komputer Numerik ? Keliatannya kalian cukup asing mendengar nama ini. Okay, jika kalian merasa puyeng aku akan jelaskan. Komputer Numerik itu dibisa dikatakan sebagai penentuan error suatu perhitungan untuk mencapai nilai akurasi. Error disini adalah nilai yang menyebabkan nilai tersebut tidak tepat. Komputer Numerik bertujuan untuk menentukan suatu akurasi dari hasil perhitungan atau percobaan. Contoh yang sederhana adalah kalian yang jurusan Fisika, Kimia, Teknik buat laporan untuk menganalisis dan menghitung data dari hasil percobaan dengan teknik aproksima kesalahan. Contoh tersebut sudah masuk  ke dalam Komputer Numerik. Jadi bisa dikatakan bahwa suatu perolehan data yang didapat pasti ada error-nya. Sedikit mustahil jika data yang diperoleh akurasinya tepat.

Komputer Numerik ini banyak sekali diimplementasikan dalam kehidupan termasuk dunia kedokteran, teknik, ekonomi, dan sains. Contoh yang sangat sederhana adalah misalkan jika ingin menjumlahkan dari 10/3 + 9/7. Anggap saja hasilnya banyak diperoleh seperti :

( pembulatan 2 desimal ) 10/3 + 9/7 = 0,33 + 1,29 = 1,62
( pembulatan 5 desimal ) 10/3 + 9/7 =  0,33333 + 1,28571 = 1,61904
( pembulatan 7 desimal ) 10/3 + 9/7 = 0,3333333 + 1,2857143 = 1,6190476

Hasil tersebut dapat dilihat bahwa setiap pembulatan desimal menghasilkan nilai yang berbeda. Tentunya akan menjadi pengaruh dalam perhitungan dalam komputer ( anda bisa liat pada simulasi gerak peluru bagian Fisika Komputasi [002-001] ). Anggap saja nilai a = 1,62 dan b = 1,61904, nah nilai error itu dapat dibuat formula seperti ini :


Dengan nilai a sebagai nilai asli, maka nilai error-nya diperoleh x = 1,62 – 1,61904 = 0,00096. Nah, nilai tersebut merupakan galat atau error.

                (Suarga, ___) Komputer numerik dapat dikatakan sebagaikomputasi yang mengikuti suatu algoritma pendekatan (aproksimasi) untuk menyelesaikan suatu persoalan, yang dengan demikian besar kemungkinan di situ terkandung “kesalahan”. Beberapa sumber kesalahan pada komputasi numerik yaitu :
1.         Round off errors
Kesalahan yang timbul karena adanya teknik pembulatan. Ilustrasinya pada contoh sebelumnya.
2.         Truncation errors
Kesalahan ini terjadi karena adanya pemotongan suku pada suatu deret aproksimasi. Misalkan perhitungan nilai cos dengan teknik Taylor dan teknik differensial.
3.         Range errors
Kesalahan yang terjadi akibat nilai hasil komputasi melampaui batas angka yang diperbolehkan dalam komputer. Misalkan dalam penggunaan variabel integer pada proses perhitungan energi benda hitam yang menghasilkan nilai yang tidak tepat bahkan tidak terdefinisi.

                Agar kalian paham, ini aku kasih penjelasan mengenai ketiga sumber kesalahan dalam komputasi numerik.
A.        Round off errors
Kesalahan jenis ini terjadi akibat proses pembulatan dalam perhitungan. Secara umum, proses pembulatan ada 2 aturan yaitu :
-          Jika digit yang dibulatkan kurang dari 5, maka tidak terjadi pembulatan.
-          Sebaliknya, jika lebih dari 5, maka terjadi pembulatan yaitu dengan menambah satu.

Contoh sederhananya adalah sebagai berikut :
Pada perhitungan nilai x = 6/7, maka nilai x = 0,857142857143. Maka, jika terjadi pembulatan akan diperoleh nilai sebagai berikut :
è x = 0,86 ( mendekati nilai 2 desimal ).
è x = 0,8571 ( mendekati nilai 4 desimal ).
è x = 0,857143 ( mendekati nilai 6 desimal ).
è x = 0,85714286 ( mendekati nilai 8 desimal ).
Dalam proses pembuatan, kesalahan yang timbul akibat pembulatan pada digit ke-n di belakang koma selalu bernilai :


Dengan begitu, maka :
è Untuk x = 0,86 (n = 2), maka Error = | 0,857142857143 – 0,86 | = 0,00285714286
Dengan begitu terbukti bahwa Error ≤ 10-4/2  <-> 0,00285714286 ≤ 0,005.
è Untuk x = 0,8571 (n = 4), maka Error = | 0,857142857143 – 0,8571 | = 0,000042857143
Dengan begitu terbukti bahwa Error ≤ 10-4/2  <-> Error ≤ 0,00005.
è Dan seterusnya. ( Anda bisa membuktikan untuk x = 0,857143 dan x = 0,85714286. )

Kesalahan ini biasanya digunakan pada perhitungan data dari hasil percobaan praktikum seperti perhitungan nilai gravitasi dengan teknik perhitungan bandul, menentukan nilai tegangan permukaan, dan lain – lain. Masing – masing percobaan biasanya mengulang sebanyak 5 – 10 kali dengan tujuan untuk mengetahui kesalahan mutlak dan mengetahui apakah data yang diperoleh dari hasil praktikum itu tepat, teliti, masih ada kesalahan, atau bahkan error-nya sangat jauh dari perhitungan berdasarkan formula. Teknik ini adalah aprosikmasi kesalahan ( dibahas di bagian blog Aprosikmasi Kesalahan ). Disinilah kegunaan untuk menentukan error suatu perhitungan dengan teknik ini.

B.        Truncation errors
Kesalahan pemotongan biasanya terjadi karena pembuangan suku yang berderajat tinggi. Sebagai contoh untuk menghitung nilai cosinus dapat menggunakan deret Taylor yang dirumuskan di bawah ini :



Karena batas akhirnya tak hingga, maka dilakukan pemotongan suku agar perhitungannya lebih sederhana. Misalkan menentukan nilai sin(20) = 0.9129452507276277. Dengan deret Taylor ( hampir sama dengan konsep perhitungan nilai cos ) sampain = 100 akan diperoleh :



Dengan begitu nilai errornya adalah


Maka, dalam hal ini juga berpengaruh dalam proses perhitungan nilai numerik. Kesalahan ini berkaitan dengan kesalahan Range Errors karena kesalahan Range Errors ini berkaitan dengan batasan nilai representasi angka. Dalam dunia komputasi, penggunaan variabel berpengaruh pada hasil komputasi. Anggap saja untuk menghitung nilai yang mencapai > 109 harus menggunakan Float atau Double. Jika nilai tersebut menggunakan Integer, maka hasilnya akan acak atau bahkan memberi hasil NaN alias tak definisi. Maka, dalam komputasi, anggap saja ∞ ditentukan sendiri misalkan mencapai N = 1000000.

C.        Range errors
Untuk kesalahan ini berkaitan dengan batas dalam jangkauan representasi angka. Ini bisa dikatakan bahwa jika hasil perhitungan melebihi jangkauan, maka komputer akan menampilkan hasil yang tidak beraturan ( anggap saja hasil yang diperoleh diatur lagi oleh OS yang kita pakai ). Berikut ini saya kasih 2 contoh kasus untuk jenis kesalahan ini :
-          Menghitung jari – jari atom Bohr.
Untuk menghitung jari – jari atom Bohr dapat dirumuskan seperti ini :


Dengan :


Seandainya jika rumus itu dibuat dalam bentuk program, maka variabel r harus menggunakan tipe Double. Jika ingin bukti, berikut aku kasih bentuk program menghitung jari – jari atom Bohr dengan tipe variabel yang berbeda.

a.       Menggunakan INTEGER.
b.      Menggunakan FLOAT.
c.       Menggunakan DOUBLE.

Dari hasil di atas dapat diketahui bahwa penggunakan INTEGER dan FLOAT tidak bisa menampilkan hasil perhitungan yang tepat. Tetapi, penggunaan DOUBLE akan memberi hasil yang tepat sesuai perhitungan dari rumus tersebut. Hal ini terjadi karena jenis tipe data INTEGER memiliki jangkauan ... dan FLOAT punya jangkauan ... , Karena melebihi jangkauan, maka menampilkan hasil yang tidak sesuai

-          Menghitung nilai sinus dengan teknik Taylor.
Bentuk rumus-nya sudah ditulis sebelumnya. Disini akan diberi 2 teknik perhitungan dalam penggunaan deret Taylor.

a.       Teknik Penggunaan Fungsi Math.
Bentuk program dapat dibuat seperti di bawah ini :

for (double n = 0; n <= N; n++)
            B += (Math.pow(-1, n))*(Math.pow(x, 2*n+1))/(factorial(2*n+1));

Hasil output :
( Dengan N = 100 )
A : -0.9881209821429402
Time : 7.33534E-4 detik

( Dengan N = 500 )
A : NaN
Time : 0.002157699 detik

( Dengan N = 1000 )
A : NaN
Time : 0.005704589 detik

( Dengan N = 5000 )
A : NaN
Time : 0.108811078 detik

( Dengan N = 10000 )
A : NaN
Time : 0.418405214 detik

( Dengan N = 50000 )
A : NaN
Time : 24.734975616 detik

b.      Teknik Pengurangan Operasi.

for (double n = N; n >= 0; n--) {
            A += (1/factorial(2*n+1));
            if (n == 0)
                A *= x;
            else
                A *= -(x*x);
}

Hasil Output :
( Dengan N = 100 )
A : -0.9879136391243737
Time : 0.001511368 detik

( Dengan N = 500 )
A : -0.9879136391243737
Time : 0.005108622 detik

( Dengan N = 1000 )
A : -0.9879136391243737
Time : 0.008196645 detik

( Dengan N = 5000 )
A : -0.9879136391243737
Time : 0.106724261 detik

( Dengan N = 10000 )
A : -0.9879136391243737
Time : 0.415457556 detik

 ( Dengan N = 50000 )
A : -0.9879136391243737
Time : 9.187904015 detik

Dari hasil di atas ternyata membawa hasil yang berbeda dari kedua teknik di atas. Hal ini dapat dilihat bahwa pada saat nilai N = 500, pada model program (a) menampilkan nilai NaN alias tak definisi. Tetapi, untuk model program (b) akan muncul nilainya. Hal ini terjadi karena proses perhitungan pada model program (a) kemungkinan ada nilai yang infinity sehingga hasil akhirnya adalah NaN pada saat perhitungan nilai dengan Math.pow dan method factorial. Untuk model program (b) karena menggunakan teknik pengurangan operasi, maka hasil outputnya bisa tampilkan bahkan pada saat N = 50000. Jika dilihat, model program (a) sangat tidak efisien daripada model program (b) karena pada model (a) operasinya sangat banyak dan membutuhkan waktu yang banyak untuk masuk method Math dan factorial.
Kita bisa lihat bahwa dalam pemrograman, perhitungan data yang nilai sangat besar seperti besar pertumbuhan ekonomi di Indonesia ini, besar energi radiasi matahari atau nilai yang sangat kecil seperti jari – jari atom, besar muatan listrik pada elektron, dan lain – lain sangat berpengaruh dalam program komputer. Tentunya, tipe data yang digunakan harus tepat. Misalkan jika perhitungan data aritmatika biasa seperti deret aritmatika cukup pakai INTEGER, menghitung nilai rata – rata mahasiswa menggunakan FLOAT karena bisa menghasilkan nilai desimal. Oleh karena itu, perlu diperhatikan tipe data-nya beserta bentuk formula yang dibuat seperti menghitung nilai cosinus dengan teknik pengurangan operasi.
                Bagaimana pun juga, metode numerik ini sangat berguna untuk penerapan dalam kehidupan sehari – hari terutama dalam dunia teknik dan sains. Contoh yang sangat sederhana adalah ketika ingin memotong kayu dengan panjang 10 cm, saat mengukur ukuran harus diberi error sekitar 0,1 cm. Hal ini bertujuan agar saat memotong kayu akan menghasilkan ukuran pas 10 cm dan 0,1 cm ini akan hilang akibat gesekan / panas yang menyebabkan menjadi aus. Jadi, bisa dikatakan bahwa numerik ini berpengaruh dalam berbagai macam faktor. Misalkan pembangunan gedung tinggi harus memperhatikan pondasi-nya dan tingkat keretakan bahan yang dipakai ( lebih ke arah elastisitas bahan bangunan ).
                Okay sekian dulu ya blog aku di sini. Untuk metode ini masih sangat banyak. Ya saya usahakan saya posting materi selanjutnya. Udah ya sekian dulu aja. Jangan bosan dengan blog aku siap tau bisa berguna buat kalian wkwk... Okay udah dulu ya. Jangan lupa like blog ku ya. Mantapp (y).

Referensi :
https://www.academia.edu/11633559/METODE_NUMERIK
https://materi78.files.wordpress.com/2013/06/atom_fis4.pdf