Wednesday 25 February 2015

TERJEMAHAN ASTRONOMICAL ALGORITHMS JEAN MEEUS

TENTANG AKURASI

Topik-topik yang akan dipaparkan dalam Bab ini: akurasi yang diperlukan untuk masalah tertentuakurasi yang dihasilkan bahasa pemrogramandan juga akurasi dalam mempublikasikan hasil.
Akurasi yang diperlukan untuk masalah tertentu
Keakuratan yang dibutuhkan dalam perhitungan tergantung pada tujuannyaMisalnyaapabila seseorang ingin menghitung posisi planet dengan tujuan memperoleh waktu terbit dan terbenamnya, maka akurasi 0.01 derajat sudah memadaiAlasannya jelas: gerakan harian tampak dari bola langit bersesuaian dengan rotasi lebih dari satu derajat selama interval waktu empat menitdan sebagainya,  yang mana kesalahan 0.01 derajat pada posisi obyek akan mengakibatkan kesalahan (kurang-lebih) hanya 0.04 menit dalam perhitungan waktu terbit dan terbenamnya. Untuk masalah ini,  perhitungan dengan menyertakan ratusan komponen periodik untuk mendapatkan posisi planet dengan akurasi 0".01 hanya akan membuang-buang tenaga dan waktu pemrosesan komputer saja.
Tetapi jika posisi planet yang dibutuhkan untuk menghitung okultasi bintang oleh planet itu, maka diperlukan akurasi yang lebih baik dari 1" karena ukuran kecil dari piringan planet tersebut.
Sebuah program yang ditulis untuk satu tujuan mungkin tidak cocok untuk tujuan yang lainnya. Misalkanuntuk perhitungan posisi bintangprogram menggunakan metode akurasi rendah untuk perhitungan presesi (lihat Bab 20). Sedangkan hasilnya sudah cukup baik untuk pengamat yang ingin mencari benda-benda langit dengan teleskop yang dipasang secara paralaktik (mengukur vertikal ke arah zenit), program tersebut menjadi sangat tidak layak jika tidak memenuhi keakuratan yang diinginkan, misalnya dalam perhitungan okultasiatau untuk perhitungan konjungsi.
Jika diperlukan akurasi tertentukita harus menggunakan algoritma yang benar-benar memberikan akurasi ini. John Mosley [1] menyebutkan sebuah program komersial yang tersedia di pasar dapat menghitung posisi planet, tetapi karena koreksi berbagai gangguan tidak diterapkan, misalnya posisi Saturnus, Uranus dan Neptunus bisa salah sampai 1 derajat, meskipun hasilnya ditampilkan sampai ke detik busur terdekat!
Untuk mendapatkan akurasi yang lebih baik, seringkali perlu untuk menggunakan metode lain dalam perhitungan, bukan hanya untuk mempertahankan angka-angka desimal dalam hasil perkiraan perhitungan. Sebagai contoh, jika seseorang harus mengetahui posisi Mars dengan akurasi 0.1 derajat, cukup dengan menggunakan orbit elips tanpa gangguan (gerak Keplerian). Namun, jika ingin mengetahui posisi Mars presisi 10" atau lebih baik, maka gangguan yang disebabkan planet lain harus dihitung dan Program tersebut akan menjadi lebih lama.
Programmer, yang mengetahui rumus-rumus dan akurasi yang diinginkan dalam masalah yang dimaksudkan di sini, harus mempertimbangkan komponen-komponen yang diperlukan, jika dimungkinkan, dia harus menghindari yang tidak perlu untuk menjaga program sebaik dan seefisien mungkin. Misalnya, bujur geometrik rata-rata Matahari, mengacu pada ekuinoks rata-rata tanggal tertentu, dirumuskan sebagai berikut:
L = 280°27'59".244 + 129 602 771".380 T + 1".0915 T2
dimana T adalah waktu dalam abad Julian 36525 hari ephemeris dari epoch 1.5 TD Januari 2000. Dalam rumus ini, komponen terakhir (Percepatan sekuler Matahari) lebih kecil dari 1" jika < 0.95, yaitu, antara tahun 1905 dan 2095. Jika akurasi 1" dianggap memadai, maka komponen T2 dapat diabaikan untuk setiap waktu dalam periode tersebut. Tetapi untuk tahun 100 kita memiliki T = -19, sehingga komponen terakhir menjadi 394", yang lebih besar dari 0.1 derajat.
Akurasi komputer
Akurasi komputer merupakan masalah yang jauh lebih kompleks. Bahasa pemrograman harus bekerja dengan jumlah angka signifikan yang cukup(Catatan bahwa jumlah angka signifikan ini tidak sama dengan jumlah desimalMisalnyabilangan 0.0000183 memiliki tujuh desimaltetapi hanya tiga angka yang signifikanAngka signifikan dari sebuah bilangan adalah angka yang tersisa ketika angka nol sebelum dan sesudahnya disisihkan).
Pada operasi pembulatan oleh mesin komputer untuk 6 angka signifikan, maka pemrosesan 1 000 000 + 2 akan menghasilkan 1 000 000.
Bisa menjadi hal berbahaya, misalnya ketika perbedaan diperoleh dari dua angka yang hampir-sama. Misalkan dilakukan operasi pengurangan bilangan berikut:
6.92736 - 6.92735 = 0.00001.
Setiap bilangan ditulis dengan enam angkatetapi menghilangkan angka nolnya memberikan hasil hanya ada satu angka signifikanSelain itudua angka yang diberikan telah dibulatkan. Jika demikian halnya, maka bahkan situasinya bisa lebih burukMisalkan bahwa dua bilangan yang sebenarnya 6.927 3649 dan 6.927 3451Sedangkan hasil yang benar adalah 0.000 0198yang hampir dua kali hasil sebelumnya!
Enam atau delapan angka signifikanseperti aturan umum untuk mikrokomputer masa-masa awalatau saat ini sering disebut dengan 'single precision'umumnya tidak cukup untuk matematika astronomi.
Untuk banyak aplikasi, diperlukan mesin hitung melakukan dengan jumlah angka signifkan yang lebih banyak  dari yang diinginkan pada hasil akhirMari kita perhatikan, misalnya, rumus berikut ini menghasilkan bujur rata-rata Bulan, Luntuk setiap waktu yang diinginkan, dalam derajat (Bab 45):
L'  =  218.316 4591 + 481 267.881 342 36 - 0.001 3268 T2 + 0.000 0019 T3
dimana T adalah waktu yang diukur dalam abad Julian 36525 hari berlalu sejak epoch standar 1.5 TD Januari 2000 (JDE 2451545.0). Misalkan sekarang, kita ingin mendapatkan bujur rata-rata Bulan dengan akurasi 0.001 derajat. Karena bujur selalu berada dalam Interval 0-360 derajatorang mungkin berpikir bahwa mesin menghitung dengan hanya enam angka signifikan secara internal sudah memadai untuk tujuan tersebut (3 angka sebelum dan setelah tanda desimal)Dalam kasus ini tidaklah demikian, karena L' nilainya dapat mencapai nilai besar sebelum direduksi menjadi kurang dari 360 derajat.
Sebagai contohmari kita hitung Luntuk T = 0.4, yang berkorelasi dengan 1 Januari 2040 jam 12h TDKita dapatkan L192 725°.469, yang direduksi menjadi 125°.469 adalah jawaban yang benarTetapi jika mesin bekerja dengan hanya enam angka signifikantidak akan menemukan L192 725°.469melainkan 192 725° (enam digit!), yang akan direduksi menjadi 125°sehingga dalam hal ini hasil akhir hanya sampai derajat terdekatdan kesalahannya adalah 0.469 derajat atau 28', dan ini terjadi hanya dalam waktu 40 tahun setelah permulaan epochDalam keadaan seperti itu, tidaklah mungkin untuk menghitung gerhana atau okultasi.
Untuk mengetahui dengan akurasi internal pada mesin komputer, program pendek berikut (dalam BASIC) dapat digunakan.
10     X = 1
20     J = 0
30     X = X * 2
40     IF X + 1 <X THEN 60
50     GOTO 80
60     J = J + 1
70     GOTO 30
80     PRINT JJ * O.30103
90     END
Di siniJ adalah jumlah bit yang signifikan dalam mantissa dari angka floating, sementara 0.30103 J adalah jumlah angka signifikan dalam angka desimalKonstanta 0.30103 adalah log10 2Misalnya untuk komputer HP-85 memberikan J = 39dari mana 11.7 digitdengan HP-UX Technical Basic 5.0bekerja pada HP-Integral mikrokomputer, kita mendapatkan hasil J = 52, dari mana 15.6 intern digit. Program QUICKBASIC 4.5 memberikan J = 63, dari mana 19.0 digit.
Namun, akurasi ini hanya merujuk pada aritmatika sederhana, bukan fungsi trigonometri. Meskipun GWBASIC produk Toshiba memberikan hasil J = 55, yaitu 16.6 angka intern, memberikan sinus dengan hanya 7 desimal yang benar, 9 angka terakhir yang benar-benar salah!
Salah satu cara cepat untuk memeriksa ketepatan fungsi trigonometri adalah PRINT 4 * ATN (1). Jika komputer bekerja dalam radian, ini harus memberikan hasil yang dikenal dengan  = 3.14 15 92 65 35 89 79 ... Atau seseorang dapat menghitung sinus dari sudut yang diketahui nilainya secara akurat, misalnya
SIN (0.61 rad) = 0.572 867 460 100 48 ...
Pembulatan dapat dihindari dalam komputer. Anggaplah misalnya nilai 1/3 = 0.33333333 ... Karena mesin tidak dapat menangani desimal tak terbatas, maka bilangan tersebut tentu saja harus dipangkas di suatu tempat.
Kesalahan pembulatan dapat menumpuk dari satu perhitungan ke perhitungan berikutnya. Dalam kebanyakan kasus, hal ini tidak penting karena satu sama lain menutupi kesalahan, namun dalam beberapa aplikasi ilmu hitung, kesalahan  yang terkumpul dapat meningkat melebihi batas. Meskipun topik ini di luar cakupan buku ini, kita akan menyebutkan dua kasus.
Perhatikan program berikut:
10     X = 1/3
20     FOR  I = 1 TO 30
30     X = (* X + 1* X -1
40     PRINT I, X
50     NEXT I
60     END
Operasi pada baris 30 sebenarnya menggantikan X dengan sendirinyanamun pada
kebanyakan komputer hasilnya menyimpang. Disebutkan di atas HP-UX Technical Basic menghasilkan:
0.333 333 333 333 308        setelah 4 langkah
0.333 326 162 117 054        setelah 14 langkah
0.215 899 338 763 055        setelah 19 langkah
286.423 ...                               setelah 24 langkah
dan nilai dari urutan 10217 setelah 30 langkahPerbedaan akurasi antara mikrokomputer atau bahkan kalkulator genggam dapat ditunjukkan dengan tes sederhana [2]: berulang kali mengkuadratkan 1.000 0001Setelah 27 kalihasilnya ke 10 angka penting harus 674 530.4707Hasil untuk beberapa mesin atau bahasa pemrograman adalah sebagai berikut:
674 494.06                              pada HP-67 kalkulator
674 514.87                              pada HP-85
674 520.61                              pada TI-58 kalkulator
674 530.4755                         pada HP-Integral (HP-UX TechnBasic)
674 530.4755                         di QUICKBASIC 4.5
Tapi itu masih belum akhir cerita. Pada dasarnya, ada dua cara berbeda untuk representasi internal informasi numerik ke dalam komputerBeberapa mesinseperti HP-85 lama, menggunakan skema BCD atau Binary Coded Decimal (Kode Biner Desimal) untuk mempresentasikan Bilangan secara internaltetapi dalam banyak kasus lain representasi biner digunakan.
BCD adalah skema dimana nilai sebenarnya dari setiap digit bilangan disimpan secara individualHal ini memungkinkan bilangan yang direpresentasikan secara tepat, untuk presisi sampai angka tertentu dari mesin yang dimaksudkan atau bahasa pemrogramanBinerdi sisi lainmerepresentasikan semua bilangan karena beberapa kombinasi pangkat dari 2Dalam binerfraksi juga direpresentasikan sebagai pangkat 2sehingga tidak mungkin untuk merepresentasikan bilangan yang bukan kombinasi yang tepat dari pangkat negatif dari 2 di dalam sistem binerMisalnya, 1/10 secara rasional tidak dinyatakan sebagai kombinasi pangkat negatif dari 2karena 1/10 = 1/16 + 1/32 + 1/128 ...
Fungsi aritmatika biner biasanya lebih cepat dalam eksekusinya dibandingkan dengan BCD lain, tetapi ketidaknyamanannya adalah bahwa beberapa bilanganbahkan dengan bilangan kecil desimaltidak direpresentasikan tepat.
Akibatnyahasil dari operasi aritmatika bisa saja salah, bahkan ketika bilangan hanya beberapa desimal sajaMisalkan X = 4.34Kemudian hasil yang benar dari operasi H = (INT 100 * (- INT (X))) adalah 34Namun, banyak bahasa komputer menghasilkan H = 33. Alasannya bahwa dalam kasus ini nilai X adalah direpresentasikan secara internal sebagai 4.3399999998atau semacamnyaContoh lain yang mengejutkan adalah
2 + 0.2 + 0.2 + 0.2 + 0.2 + 0.2 - 3.
Pada banyak komputerhasilnya tidak nolDi HP-Integral, menggunakan HP-UX Technical Basic 5.0hasilnya adalah 8.88 x 10-16. Tetapi pada mesin yang sama 0.2 + 0.2 + 0.2 + 0.2 + 0.2 + 2 - 3 menghasilkan nolsehingga urutan di mana operasi dilakukan dapat menjadi sangat penting di sini!
Anehnya2 + (5 * 0.2- 3 memberikan hasil persis nol pada HP-Integraldan begitu juga dengan berikut:
A = 0.2 + 0.2 + 0.2 + 0.2 + 0.2
B = 2 + A
C = B - 3
PRINT C
Perhatikan program berikut:
10     FOR I  = 0 TO 100 STEP 0.1
20     U = I
30     NEXT I
40     PRINT U
50     END
Di sini, I dan U mengambil nilai-nilai yang berurutan dari 0 sampai 100 dengan langkah-langkah 0.1dan nilai terakhir dari U harus persis 100HP-85 tidak menghasilkan 100 memang, Tetapi HP-Integral memberikan 99.999 999 999 9986, yang dapat memiliki konsekuensi berbahaya dalam beberapa aplikasiKesalahan  akibat fakta bahwa nilai langkah 0.1 diterjemahkan ke dalam biner sebagai 0.0999999. Bedanya dengan 0.1 sangat kecil tetapikarena ada 1000 langkahkesalahan terakhir menjadi 1000 kali lebih besar dari perbedaan kecilDalam kasus inimasalahnya dapat diatasi dengan mengambil nilai bilangan bulat untuk langkah:
10     FOR J = 0 TO 1000
20     I = J/10
30     U = I
40     NEXT J
50     PRINT U
60     END
Kita mungkin mendapatkan kejutan lain dengan
A = 3 * (1 / 3)
PRINT INT (A)
Hasil yang benar adalah 1 pada beberapa komputer, tetapi nol pada komputer lainAtau cobamisalnya, A = 0.1PRINT INT(1000 * A)
Tes lain yang menarik adalah
INPUT A
B = A/10
C = 10 * B
PRINT A C
Hasilnya harus nol. Tetapi untuk beberapa bilangan A jawabannya bisa berbeda. Salah satu cara mudah untuk mengetahui apakah bahasa komputer bekerja di BCD atau tidak, lihatlah kemungkinan nilai bilangan bulat terbesar (yang adalahbilangan didefinisikan sebagai INTEGER). Jika demikian adalah bilangan 'bulat yang bagus', maka hal ini menunjukkan bahwa mesin bekerja di BCDSebagai contoh, pada HP-85 di mana bilangan bulat terbesar adalah 99 999 (atau 105 - l). Tetapi jika bilangan bulat terbesar adalah bilangan yang 'aneh' (pada kenyataannya, pangkat dari 2 kemudian dikurangi satu), maka ini berarti bahwa komputer tidak bekerja di BCDPada TRS-80 lamabahwa bilangan bulat terbesar adalah 32 767 (atau 215 - 1), sementara untuk HP-UX Technical Basic 5.0 pada HP-Integral itu 2 147 483 647 (atau 231 - 1).
Pembulatan pada aritmatika yang tidak eksak dapat menghasilkan sesuatu yang mengejutkan yang lain. Pada kebanyakan mikrokomputerhasil SQR (25) - 5 tidak nolIni bisa menjadi masalah jika pengujian pada hasilApakah 25 merupakan kwadrat sempurnaOrang mungkin berpikir jawabannya adalah tidakkarena komputer memberitahu kita bahwa SQR (25) - INT (SQR (25)) tidak nol!
Pembulatan hasil akhir
Hasil akhir harus dibulatkan dengan benar dan bermakna, sesuai dengan tujuan yang diinginkan. Pembulatan harus dilakukan dengan nilai terdekatMisalnya15.88 yang akan dibulatkan menjadi 15.9atau 16bukan 15Namun, tanggal dan tahun kalender adalah  pengecualianMisalnya, 15.88 Maret menunjukkan suatu tanggal tertentu, yakni 15 Maretitu berarti 0.88 hari setelah tanggal 15 Maret jam 0hJadijika kita membaca bahwa suatu peristiwa terjadi pada tanggal 15.88itu terjadi pada tanggal 15 Maretbukan pada 16 Maret. Demikian pula1977.69 menunjukkan sekejap milik tahun 1977bukan 1978.
Hanya angka yang bermakna harus dipertahankanMisalnya, Rumus Muller untuk menghitung besarnya Jupiter secara visual adalah:
m = -8.93 + 5 log  r
dimana r adalah jarak Jupiter ke Mataharijarak ke Bumi (keduanya dalam unit astronomi), dan logaritma dengan basis 10Sekarangpada 14 Mei 1992  pada jam 0h TDkita memiliki:
r = 5.417 149
 = 5.125 382
dari mana m = -1.712 514 898Namun menyebutkan semua desimal tersebutdi bawah dalih bahwa mereka dihasilkan oleh komputerakan menjadi konyol dan akan memberikan pembaca kesan palsu seolah akurasi tinggi. Karena konstanta -8.93 dalam rumus Muller diberikan dalam magnitudo 0.01, tidak ada hasil dengan akurasi yang lebih tinggi yang dapat diharapkanDan di setiap kasusfenomena meteorologi di atmosfer Jupiter adalah sedemikian rupa sehingga besarnya planet raksasa tidak bisa diprediksi dengan akurasi yang lebih baik dari 0.01 atau bahkan 0.1.
Sebagai contoh lainJohn Mosley [3] menyebutkan program komersial yang tersedia menghasilkan waktu terbit dan terbenam benda langit sampai 0.1 detikyang mustahil tepat.
Beberapa 'perasaan' dan pengetahuan astronomi yang cukup diperlukan di siniMisalnya, akan menjadi benar-benar tidak relevan untuk memberikan fraksi piringan Bulan yang bercahaya akurat sampai 0.000 000 001.
Pembulatan harus dilakukan setelah seluruh perhitungan didapatkan, tetapi tidak sebelum memulai atau sebelum memasukkan data ke komputer.
ContohHitung 1.4 + 1.4 ke bilangan bulat terdekatJika kita pertama membulatkan bilangan-bilangan yang dimasukankita memperoleh 1 + 1 = 2. Kenyataannya, 1.4 + 1.4 = 2.8yang akan dibulatkan menjadi 3.
Berikut adalah contoh lainPada tanggal terjadinya oposisi18 Juli 1996 deklinasi Neptunus adalah  = -20°24'. Berapa ketinggian planet hm pada saat transit melalui meridian selatandi Sonneberg Observatory, Jerman, ke derajat terdekatlintang Observatorium itu adalah  = +50°23'Rumus yang digunakan adalah
hm = 90° -
Jawabannya adalah hm = 90° - 50° 23'20° 24= 19° 13'menjadi 19°.
Pembulatan  dan  ke derajat terdekat sebelum perhitungan akan memberikan hasil yang salah 90° - 50° - 20° = 20°. Sebuah kesalahan yang sama terjadi ketika jarak, dibulatkan ke kilometer terdekat, akan dikonversi ke kilometer. Dalam hal ini, misalnya nilai 17 km, tidak akan pernah tercapai, karena
10 mil akan memberikan 16.09 km, yang dibulatkan menjadi 16 km,
11 mil akan memberikan 17.70 km yang dibulatkan menjadi 18 km.
Askensio Rekta dan deklinasi - Karena 24 jam berkorelasi dengan 360 derajat, satu jam berkorelasi dengan 15°, satu menit dari waktu berkorelasi dengan 15 menit busur, dan satu detik waktu berkorelasi dengan 15 detik busur: selama interval waktu satu detik Bumi berputar melintasi 15".
Untuk alasan ini, jika deklinasi benda langit diketahui, misalnya, untuk 1", maka Askensio Rekta harus dinyatakan  dalam waktu sepersepuluh detik terdekat, jika tidak maka deklinasi akan diberikan dengan akurasi jauh lebih besar daripada Askensio Rekta. Tabel berikut memberikan perkiraan korelasi antara akurasi dari Askensio Rekta ( ) dan deklinasi ( ). Misalnya, jika  diberikan dengan akurasi 1', maka  harus diberikan dalam waktu 0.1 menit terdekat. Sebagai contoh, kita presentasikan posisi Nova Cygni 1975 dengan akurasi yang berbeda.

Pada
Pada
Contoh (Nova Cygni 1975)
1m
0m.1
1s
02.1
0°.1
1'
0'.1
1"
  =    21h10m
        21h09m.9
        21h09m53s
        21h09m52s.8
   = +47.9
             +47°57'
              +47°56'.7
             +47°56'41"

Sebagai catatan akhirkita nyatakan bahwa menghilangkan nol bisa merupakan hal pentingMisalnya18.0 adalah tidak sama dengan 18Nilai sebelumnya berarti bahwa jumlah sebenarnya terletak antara 17.95 dan 18.05sedangkan nilai kedua telah dibulatkan ke bilangan bulat terdekat dan dapat berarti sama dengan bilangan antara 17.5 dan 18.5Untuk alasan iniangka nol harus disertakan dalam hasil untuk menunjukkan akurasibintang besarnya 7 tidak sama sebagai bintang besarnya 7.00.
Daftar Pustaka
1.      John MosleySky and TelescopeVol78hal. 300 (September 1989).
2.      F. Gruenberger'Computer Recreation'Scientific AmericanVol250hal10 (April 1984).
3.      John MosleySky and TelescopeVol81hal. 201 (Februari 1991).

translate by : Dr.-Ing. Khafid.
Dosen Pascasarjana Ilmu Falak
UIN Walisongo-Semarang

No comments:

Post a Comment