Algoritma Astronomi Jean Meeus diterjemahkan oleh Dr.-Ing. Khafid Sebagai modul kuliah Astronomi, IAIN Walisongo
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 1 Kata Pengantar Seorang penulis program komputer sering bertanya-tanya sendiri mengapa Mesin menghasilkan posisi planet secara tidak akurat, jalur gerhana yang tidak nyata, atau Fase Bulan yang salah. Kadang-kadang mereka bersikeras, bingung, "dan saya juga telah menggunakan presisi ganda (double precision)." Bahkan perangkat lunak komersial kadang-kadang tidak cukup akurat, yang cukup mengejutkan bagi siapapun yang terjebak dalam mistik dan anggapan bahwa komputer serba sempurna. Teknik yang baik dapat membantu kita terhindar dari hasil yang salah dari program yang tidak sempurna atau prosedur (subroutine) yang tidak tepat - dan sesederhana itulah mengapa buku ini ditulis tentang semua itu. Di bidang perhitungan benda-benda langit, sudah sejak lama Jean Meeus telah mendapatkan pujian dan rasa hormat bahkan sebelum mikrokomputer dan kalkulator saku muncul di pasar. Ketika ia mempublikasikan rumus-rumus Astronomi untuk Kalkulator pada tahun 1979, yang secara praktis merupakan buku satu-satunya dalam "genre"nya. Dengan cepat menjadi sumber segala sumber, bahkan untuk penulis lain di bidang tersebut. Banyak dari mereka telah menyatakan pengakuan untuk meminjam (atau harus memiliki), mengutip karyanya, yang berupa instruksi dan metode yang jelas dan tak tertandingi. Dan sekarang, astronom Belgia itu belum menyerah! Hampir setiap buku pegangan sebelumnya terkait perhitungan benda-benda langit (termasuk karyanya sendiri sebelumnya) harus mengandalkan rumus-rumus perhitungan Matahari, Bulan, dan planet-planet yang dikembangkan pada abad terakhir atau setidaknya sebelum tahun 1920. Pada 10 tahun yang lalu, bagaimanapun juga, kita telah melihat sebuah revolusi menakjubkan dalam dunia observatorium utama yang menghasilkan almanak. Jet Propulsion Laboratory di California dan US Naval Observatory di Washington.DC, yang memiliki metode sempurna didukung mesin hitung baru untuk pemodelan gerakan dan interaksi benda-benda langit dalam tata surya. Pada saat yang sama di Paris, the Bureau des Longitudes telah menjadi pusat kegiatan yang bertujuan untuk mendeskripsikan gerakan benda langit secara analitis, dalam bentuk persamaan eksplisit. Sampai saat ini buah karya yang luar biasa ini masih di luar jangkauan masyarakat umum. Datanya tersimpan dalam gulungan tape magnetik yang hanya cocok untuk manusia atau mesin elektronik yang mempunyai otak prima. Namun, Algoritma Astronomi (yang dipaparkan dalam buku ini) merubah semua itu. Dengan bakat luar biasanya untuk segala macam perhitungan, penulis telah membuat teknik perhitungan modern yang esensial dan mudah dimanfaatkan bagi kita semua. Kita juga berdiri di persimpangan jalan astronomi yang membingungkan. Dalam hanya beberapa tahun terakhir International Astronomical Union telah memperkenalkan dengan baik perubahan-perubahan kerangka acuan yang digunakan untuk koordinat benda-benda langit, baik di dalam tata surya kita maupun jauh di luarnya. Penuntasan perubahan-perubahan ini sangat didambakan oleh astronom-astronom profesional, the Explanatory Supplement to the Astronomical Ephemeris, yang diterbitkan pada tahun 1961, sekarang sudah ketinggalan zaman. Sementara jurnal-jurnal ilmiah telah menyorot sebuah kebingungan tercermin dari penulisan makalahmakalah ilmiah tentang masalah ini, buku yang anda pegang sekarang ini adalah yang pertama menawarkan metode ringkas dan praktis untuk mengatasi masa peralihan. Hal itu masih memerlukan waktu bertahun-tahun untuk mengkonversikan basis data astronomi dan katalog sepenuhnya ke dalam sistem baru, dan siapa saja yang membutuhkan secara rinci pemahaman tentang apa yang sedang terjadi dan ingin mengetahui komentar buku ini tentang kerangka acuan FK4 dan FK5, "kesalahan ekuinoks," dan perbedaan antara "J" dan "B" ketika ditempatkan sebelum epoch seperti 2000.0.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 2 Hampir setiap rumus disajikan dengan contoh numerik yang utuh - sangat penting untuk keperluan pengecekan perhitungan (proses debugging). Penekanannya adalah pada pengujian, pengaturan rumus yang tepat, dan tidak keluar dari rentang waktu yang sah. Bab 2 mengandung banyak kebijaksanaan semacam ini, tumbuh dari pengalaman panjang penulis dengan berbagai komputer dan bahasa pemrograman. Dia mengingatkan kita jebakan-jebakan lainnya melalui paparannya. Siapapun yang mencoba untuk memetakan jalur komet, misalnya, untuk menguji persamaan Kepler. Hal ini sangat membuat jengkel astronom selama bertahun-tahun bahwa ratusan solusi telah diusulkan, buku ini dengan grafik yang jelas seperti pada Bab 29 memberikan ide yang baik mengapa. Setiap kali saya membaca tentang teknik interpolasi, seperti dalam Bab 3, saya teringat Komet Kohoutek. Berita penemuannya menyebabkan berita besar pada musim semi tahun 1973, dan kemudian membiarkan para pengamat komet tersebut turun dengan kinerja loyo. Tetapi komet ini juga mengajari saya, yang penting pelajaran matematika. Setelah menyiapkan bagan gerakannya dari daftar titik-titik ephemeris, saya melihat bahwa itu akan berlalu sangat dekat dengan Matahari dan mencoba beberapa skema interpolasi dengan harapan mencari tahu kapan waktu terjadinya dengan tepat dan jarak minimumnya. Banyak yang mengejutkan saya, mereka semua gagal untuk memberikan jawaban yang cocok, sedangkan hal itu terlihat sangat jelas pada grafik saya! Pembaca buku ini bisa menyelamatkan diri dari rasa frustrasi yang sama dengan mencermati bahasan pada halaman 107. Di saat-saat dia tidak sibuk menulis atau melakukan seminar tentang teknik komputasi, Meeus suka ikut berkecimpung untuk memecahkan masalah astronomi dengan penuh semangat, terutama jika ia merasa itu adalah masalah perhitungan yang belum pernah dilakukan sebelumnya. Setelah saya bertanya kepadanya tentang tanggal di masa lalu dan masa depan saat Bulan mencapai jarak terdekat dan terjauh yang paling ekstrem dari Bumi. Dalam hitungan minggu dia telah membuat tabel seperti yang ditampilkan dalam Tabel 48.C di dalam buku ini. Dia kemudian mengaku bahwa perhitungan ini telah memakan waktu 470 jam di komputer HP-85-nya, mengkonsumsi listrik 12 kilowatt-jam. Pada kesempatan lain saya mendengar tentang sebuah program yang terlalu besar untuk komputer mainframe yang ia gunakan pada saat itu. Jadi dia merancang skema untuk menghindari kesalahan sejumlah besar koefisien dalam komputer memori yang terbatas, program Fortran-nya secara sederhana hanya membaca dan memutar ulang pita magnetik 915 kali dalam proses menghasilkan jam demi jam lunar ephemeris yang dicarinya. Tidak ada masalah, kecuali bahwa ruang komputer operator agaknya mulai terganggu pemrosesan itu! Perhitungan astronomi memiliki berbagai kegunaan, diantaranya seperti yang diprediksikan oleh programmer-nya. Pada tahun 1962 yang lalu, misalnya, Meeus menerbitkan sebuah artikel di British Astronomical Association Journal tentang kejadian langka yang luar biasa yang akan terjadi di masa mendatang. Jika ada pengamat di Planet Mars pada 11 Mei 1984, jelasnya, mereka harus mampu melihat bayangan hitam Bumi menutup langsung seluruh muka Matahari. Di antara pembacanya adalah penulis fiksi ilmiah Arthur C. Clarke, yang kemudian memasukkan perhitungan tersebut dalam cerita pendek, Transit Bumi. Bagian cerpen tersebut bercerita tentang seorang astronot, terdampar di planet merah, yang nyaris berhasil untuk menyaksikan acara ini sebelum suplai oksigennya habis. Banyak topik dalam buku ini diperuntukkan bagi pengamat benda-benda langit yang serius. Oleh karena itu, Bab 51 dapat membantu untuk memprediksi pencahayaan pada tempat tertentu di Bulan, untuk setiap tanggal dan waktu. Pengamat sering ingin tahu saat-saat yang tepat ketika sinar Matahari hanya mengarah ke seberang kawah tertentu, Rille berliku, atau kubah Bulan yang landai, karena kemiringan pencahayaan sangat ideal untuk pengawasan secara teleskopik, membuat relief yang halus menonjol nampak lebih baik daripada di sebagian besar foto closeup pesawat ruang
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 3 angkasa NASA. Bab ini juga dapat membantu kita menemukan kapan Bulan akan menjalani liberasi yang ekstrim, memutar kawah dekat lengkungan lintasan. Bab 43 memegang peran khusus bagi yang ingin tahu tentang Jupiter. Pertama ada sebuah metode sederhana untuk menempatkan empat satelit yang terkenal, metode yang cukup memadai untuk mengidentifikasi satelit-satelit tersebut melalui teleskop anda sendiri atau menggambar kembali sejarah pada masa Galileo. Kemudian dipaparkan rumus kelompok kedua yang paling akurat. Di sini orang yang hobi komputer bisa menghabiskan waktunya seharian, menciptakan, mengamati jadwal, tidak hanya untuk gerhana dan transit satelit yang umum, namun juga untuk peristiwa timbal balik antara satu satelit dan lainnya. Jurnal Astronomi terlupa dalam melakukan peramalan peristiwa dramatis ini, sehingga banyak dari mereka yang tidak teramati kecuali karena ada unsur kebetulan. Untuk menghitung bulan-bulan Jovian, data-data yang disajikan dalam buku ini bersaing atau bahkan mempunyai ketelitian yang lebih dibandingkan dengan yang digunakan oleh kantor-kantor pembuat almanak nasional dengan reputasi besar. Topik lainnya yang tidak biasa juga ditawarkan dalam buku ini, seperti metode dalam Bab 50 untuk menghitung tanggal ketika deklinasi Bulan pada kondisi ekstrim. Hal ini bukan Perhitungan yang asal-asalan, untuk masalah yang muncul dalam temuan terbaru pada abad lampau yang menyidangkan pembunuhan melibatkan pengacara Illinois dan menjadi Presiden Amerika Abraham Lincoln. Sejarawan telah lama mencoba untuk memecahkan konflik kesaksian yang bertentangan tentang Bulan dalam perannya bahwa saksi mungkin melihat peristiwa pembunuhan dengan rinci. Sebagian orang beranggapan bahwa Lincoln, sebagai pengacara untuk pertahanan, sepertinya tidak didukung dengan almanak. Tidak sampai tahun 1990, situasi yang membuat penasaran ini dapat dijelaskan, dan integritas Lincoln dikukuhkan, ketika Donald W. Olson dan Russell Doescher melihat sesuatu yang tidak biasa tentang Bulan di malam tersebut: 29 Agustus 1857. Sebagai pembaca buku ini dapat mengkonfirmasi, Bulan memiliki deklinasi jauh ke arah selatan malam itu, hampir mendekati nilai ekstrem dalam siklusnya 18.6 tahun, serta keadaan ini membuat waktu Moonset (Bulan terbenam) terjadi tidak sesuai dengan fasenya. Berikut adalah contoh indah, bahwa astronom melangkah dan membawa pengetahuan perhitungan untuk menjelaskan teka-teki yang berlangsung lama bagi para sejarawan. Kita sekarang hidup dalam waktu yang mendebarkan bagi para praktisi yang berkecimpung dengan seni mengolah angka-angka. Kalkulator saku dengan empat fungsi yang begitu mahal 20 tahun yang lalu, sekarang dimasukkan sebagai trik pada jam tangan tertentu. Memori RAM berkapasitas 1K yang dirintis MITS Altair Microcomputer terlampaui 500 kali lipat oleh sebuah chip tunggal di beberapa laptop saat ini dan komputer notebook. Siapa yang tahu keajaiban-keajaiban di masa depan? Dengan menyajikan algoritma astronomi dalam standar notasi matematika, bukan dalam bentuk listing program, penulis telah membuatnya dapat diakses oleh pengguna dari berbagai mesin dan bahasa komputer termasuk yang belum ditemukan. Roger W. Sinnott Sky & Telescope majalah
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 4 Pendahuluan Pada tahun 1978, ketika saya menulis edisi (Belgia) pertama Astronomical Formulae for Calculators, industri mikrokomputer baru mulai ekspansi di seluruh dunia. Karena komputer pribadi belum menjangkau setiap orang, buku yang disebutkan tadi ditulis terutama bagi pengguna kalkulator saku dan oleh karenanya metode yang dipaparkan sedapat mungkin menghindari perhitungan yang membutuhkan memori komputer yang besar, atau banyak proses/langkah dalam, atau mengoptimalkan kapasitas yang masih minim. Karya ini merupakan versi perbaikan besar-besaran dari versi yang lama. Kenyataannya buku ini menjadi sama sekali baru. Topik bahasannya diperluas dan isinya telah diperbaiki. Beberapa perubahan sangat diperlukan, karena pertimbangan kesepakatan atau resolusi baru dari the International Astronomical Union, khususnya terkait penerapan epoch standar baru J2000.0, selain itu kita diuntungkan adanya teori-teori baru terkait planet dan Bulan yang dikembangkan oleh the Bureau des Longitudes di Paris. Seperti yang ditulis oleh Gerard Bodifee dalam pendahuluan di dalam karya saya sebelumnya: "Siapapun yang berkecimpung dalam perhitungan astronomi harus mengenal dengan baik konsep-konsep astronomi dasar dan aturan-aturan yang disepakati dan dia harus memiliki pengetahuan yang memadai mengenai teknik matematika dasar. Faktanya, dia harus dapat menyusun program berisikan perintah-perintah yang sempurna untuk mesin hitung, mengetahui semua kemungkinan yang diperlukan oleh pengguna yang kompeten. Namun, semua kebutuhan itu belumlah cukup. Menciptakan sesuatu yang berguna, berupa program yang sukses membutuhkan banyak latihan. Pengalaman adalah pangkal dari semua ilmu pengetahuan. Kebenaran umum tentu berlaku untuk seni pemrograman. Hanya dengan pengalaman-pengalaman dan praktek, orang dapat mempelajari trik-trik perhitungan dan cara-cara yang sangat berguna dalam sebuah program yang baik." Buku Algoritma astronomi ini dimaksudkan untuk menjadi panduan bagi astronom (profesional atau amatir), bagi mereka yang ingin melakukan perhitungan. Sebuah algoritma (dari matematikawan Arab Al-Kharezmi) adalah seperangkat aturan untuk merancang sesuatu yang dilakukan, bagi kami itu adalah prosedur matematika, serangkaian penalaran dan operasi yang menyediakan solusi untuk masalah yang diberikan. Buku ini bukan buku pelajaran umum tentang astronomi. Pembaca tidak akan menemukan darimana teori-teori itu diturunkan. Beberapa definisi dibuat/dijelaskan secara minimal. Ini juga bukan sebuah buku tentang matematika atau petunjuk untuk mikrokomputer. Pembaca diasumsikan dapat menggunakan komputer secara benar. Kecuali hanya dalam beberapa kasus saja, umumnya buku ini tidak memberikan contoh (source code) program. Alasannya jelas. Sebuah program hanya berguna untuk satu bahasa komputer. Bahkan jika kita menganggap BASIC saja, ada begitu banyak versi bahasa ini, sehingga program yang diberikan tidak dapat digunakan begitu saja oleh semua orang tanpa membuat perubahan yang diperlukan. Sehingga, setiap kalkulator harus menyesuaikan bahasa pemrograman yang dipakai dalam membuat program tersebut dengan kalkulator. Dalam situasi lain, tema atau isi yang tepat dari sebuah program biasanya tergantung pada tujuan perhitungan secara spesifik, yang tidak mungkin diantisipasi oleh orang lain. Kami memberikan contoh beberapa program dalam standar BASIC. Kita dapat dengan mudah mengkonversikan menjadi FORTRAN atau bahasa pemrograman komputer yang lain.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 5 Tentu saja, dalam rumus, kita masih menggunakan simbol dan notasi matematika klasik, bukan simbol-simbol yang digunakan dalam bahasa pemrograman. Sebagai contoh, kita menuliskan bukan SQR(A), atau a (1 - e) bukannya A * (1 - E), atau cos2 x bukan COS (X)^2 atau COS (X) ** 2. Penulisan program untuk memecahkan beberapa masalah astronomi memerlukan studi lebih dari satu bab dari buku ini. Misalnya, dalam rangka untuk membuat program untuk perhitungan ketinggian Matahari untuk waktu tertentu pada tanggal tertentu di suatu tempat tertentu, seseorang harus pertama-tama mengubah tanggal dan waktu untuk Hari Julian (Bab 7), kemudian menghitung bujur Matahari untuk saat tersebut (Bab 24), Askensio Rekta Matahari (Bab 12), waktu sideris (Bab 11), dan akhirnya ketinggian Matahari yang diinginkan (Bab 12). Buku ini dibatasi pada hal 'klasik', matematika astronomi, meskipun beberapa hal astronomi berorientasi pada teknik matematika, seperti interpolasi, penyesuaian/ pengepasan kurva (curves fitting) dan penyortiran data. Topik astrofisika tidak dibahas sama sekali. Selain itu, jelas bahwa tidak semua topik matematika astronomi dimuat dalam buku ini. Sehingga tidak ada pembahasan tentang penentuan orbit, okultasi dari bintang oleh Bulan, meteor astronomi, atau gerhana binari. Untuk gerhana Matahari, pembaca yang tertarik akan menemukan elemen Besselian dan banyak rumus yang berguna dalam Canon of Solar Eclipses -2003 to +2526 karya H. Mucke dan J. Meeus (Astronomisches Buero, Wina, 1983), atau dalam Elements of Solar Eclipses 1951 to 2200 yang ditanda tangani (1989). Elemen-elemen dan rumus tentang transit Merkurius dan Venus melintasi piringan Matahari dapat diperoleh dari our transits (1989). Dua buku terakhir diterbitkan oleh Willmann-Bell, Inc. Penulis ingin menyampaikan ucapan terima kasih kepada Dr. S. De Meis (Milan, Italia), A. Dill (Jerman), dan E. Goffin dan C. Stey-aert (Belgia), untuk nasihat berharga dan asistensinya. Jean Meeus
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 6 Daftar Isi Kata Pengantar............................................................................................................................................................ 1 Pendahuluan................................................................................................................................................................. 5 Daftar Isi....................................................................................................................................................................... 7 Simbol dan Singkatan.............................................................................................................................................. 9 Bab 1. Petunjuk dan Tips.................................................................................................................................. 11 Bab 2. Tentang Akurasi...................................................................................................................................... 18 Bab 3. Interpolasi................................................................................................................................................. 26 Bab 4. Pengepasan (Fitting) Kurva............................................................................................................. 38 Bab 5. Iterasi ......................................................................................................................................................... 50 Bab 6. Penyortiran Bilangan ........................................................................................................................... 57 Bab 7. Hari Julian .................................................................................................................................................. 61 Bab 8. Tanggal Paskah ....................................................................................................................................... 69 Bab 9. Waktu Dinamis dan Waktu Universal ........................................................................................... 67 Bab 10. Globe Bumi ................................................................................................................................................ 73 Bab 11. Waktu Sideris di Greenwich .............................................................................................................. 78 Bab 12. Koordinat Transformasi....................................................................................................................... 81 Bab 13. Sudut Paralaks ......................................................................................................................................... 81 Bab 14. Terbit, Transit dan Terbenam .......................................................................................................... 87 Bab 15. Refraksi Atmosfir ................................................................................................................................... 91 Bab 20. Presesi ......................................................................................................................................................... 94 Bab 21. Nutasi dan Kemiringan Ekliptik ....................................................................................................... 102 Bab 24. Koordinat Matahari ........................................................................................................................ 108 Bab 27. Perata (Persamaan) Waktu ............................................................................................................... 115 Bab 39. Koreksi Paralaks .................................................................................................................................... 120 Bab 45. Posisi Bulan ............................................................................................................................................ 123 Bab 46. Kecerlangan Bulan ................................................................................................................................ Bab 47. Fase-fase Bulan ....................................................................................................................................... 134 Bab 52. Gerhana ...................................................................................................................................................... 141 Bab 53. Semidiameter Matahari, Bulan dan Planet .................................................................................. 150 Lampiran I ................................................................................................................................................................... 153 Lampiran II
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 7
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 8
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 9 Simbol dan Singkatan e Eksentrisitas (dari orbit) h Ketinggian di atas ufuk atau cakrawala (horison) r Vektor radius vektor, atau jarak dari benda langit ke Matahari, dinyatakan dalam AU v Anomali sejati (hakiki) A Azimuth H Sudut Jam M Anomali rata-rata R Jarak Bumi ke Matahari, dinyatakan dalam AU T Waktu dalam abad Julian (36525 hari) dari J2000.0 Askensio Rekta Deklinasi Kemiringan ekliptika ( digunakan untuk kemiringan rata-rata) Waktu sideris ( adalah waktu sideris di Greenwich) Paralaks Waktu di Julian millenia atau seribuan tahun (365 250 hari) dari J2000.0 Lintang Geografis ' Lintang Geosentrik Jarak ke Bumi, dinyatakan dalam AU Perbedaan TD - UT Nutasi pada kemiringan ekliptika Nutasi pada Bujur AU Astronomical Unit atau Unit Astronomi INT bagian bilangan bulat dari angka atau bilangan pecahan JD Hari Julian JDE Hari Julian Ephemeris TD Waktu dinamis UT Waktu Universal Menurut praktik umum astronomi yang lama, simbol kecil superior ditempatkan tepat di atas titik desimal, bukan setelah desimal terakhir. Misalnya, 28°.5793 berarti 28.5793 derajat. Selain itu, perhatikan dengan seksama perbedaan antara jam dalam desimal, dan jam-menitdetik. Misalnya, 1h.30 bukanlah 1 jam dan 30 menit, Tetapi jam 1.30, yaitu 1 jam dan 30 per seratus jam, atau 1 jam dan 18 menit. Jangan menggunakan simbol ' dan " untuk menit dan detik waktu. Tanda tersebut digunakan untuk menit dan detik derajat (atau masing-masing untuk menit busur dan detik busur). Menit dan detik waktu memiliki simbol-simbol m dan s. Sebagai contoh, sudut 23°26'44", Tetapi untuk menyatakan waktu dipakai 15h22m07s .
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 10 Memang, kita memiliki 1' = satu menit busur = l/60 derajat. 1m = satu menit waktu = l/60 jam Jangan gunakan simbol ± untuk menyatakan 'kira-kira'. simbol tersebut berarti: plus atau minus (atau keduanya). Misalnya, akar kuadrat dari 25 adalah ± 5. Penulisan = ± 3 adalah tidak benar, sebab tidak sama dengan baik +3 ataupun -3, simbol yang benar untuk digunakan untuk hal itu adalah . Misalnya, 1002 1000. Secara umum, kita akan menggunakan bentuk 'ilmiah' untuk tanggal pada kalender, yang menyatakan satuan waktu dari yang terbesar sampai yang terkecil, sebagai contoh 6 November 1993. Ini kontras dengan bentuk umum di 'Amerika' (November 6, 1993), dan dengan di 'Eropa' (6 November 1993) 1 . Pokoknya, dianjurkan untuk mengeja nama bulan, karena persepsi orang berbeda antara '11/ 6/93' dan yang lain '6/11/93'. 1 Dalam terjemahan ini, penulisan tanggal disesuaikan dengan kaidah dalam bahasa Indonesia.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 11 Bab 1. Petunjuk dan Tips Untuk menjelaskan bagaimana menghitung atau membuat program komputer adalah di luar ruang lingkup buku ini. Sebagai gantinya, pembaca harus mempelajari dengan seksama buku panduan instruksi pemrograman. Namun, penulisan program yang baik tidak dapat dipelajari dalam jangka waktu satu hari. Ini adalah seni yang dapat diperoleh hanya secara progresif. Hanya dengan praktek, orang dapat belajar menulis program yang lebih baik dan lebih efisien. Dalam Bab pertama, akan diberikan beberapa petunjuk praktis dan tips, yang kemungkinan umumnya orang tertarik. Fungsi trigonometri sudut besar Sudut besar2 sering muncul dalam perhitungan astronomi. Dalam contoh 24.a ditemukan bahwa pada 13.0 Oktober 1992 bujur rata-rata Matahari adalah -2318.19281 derajat. Sudut lebih besar ditemukan untuk obyek yang bergerak cepat, seperti Bulan dan satelit yang cerah dari Jupiter, atau rotasi planet-planet (lihat, misalnya, sudut W pada langkah 9 dari contoh 41.a). Mungkin perlu untuk mereduksi sudut supaya terletak di interval 0 - 360 derajat, karena beberapa kalkulator saku atau beberapa bahasa pemrograman mungkin saja memberikan nilai yang salah untuk fungsi trigonometri sudut besar. Misalnya, cobalah menghitung sinus 36 000 030 derajat. Hasilnya harus persis 0.5. Mode Sudut Kebanyakan mesin hitung tidak langsung menghitung fungsi-fungsi trigonometri sudut yang dinyatakan dalam derajat, menit dan detik. Sebelum melakukan fungsi-fungsi trigonometri, sudut harus dikonversi ke derajat desimal. Dengan demikian, untuk menghitung cosinus dari 23°26'49", pertama harus merubah sudut tersebut menjadi 23.446 944 44 derajat, dan selanjutnya menghitung dengan menggunakan fungsi COS. Ada komplikasi tambahan bahwa kebanyakan komputer dapat menghitung hanya dalam radian, bukan dalam derajat. Hal ini menjadi gangguan yang tidak nyaman untuk mengkonversi derajat ke radian sepanjang waktu, tetapi pada kebanyakan komputer, hal ini harus dilakukan sebelum menghitung fungsi trigonometri sudut yang dinyatakan dalam derajat. Askensio Rekta Askensio Rekta, umumnya dinyatakan dalam jam, menit dan detik waktu. Jika suatu fungsi trigonometri Askensio Rekta harus dihitung, maka perlu untuk mengkonversikan nilai tersebut ke derajat (dan kemudian ke radian, jika perlu). Ingat bahwa satu jam berkorelasi dengan 15 derajat. Contoh 1.a — Hitung tan , di mana = 9h14m55s .8. Pertama, konversikan ke jam desimal: 9h14m55s .8 = 9 + 14/60 + 55.8/3600 = 9.248 833 333 jam. Kemudian, kalikan dengan 15, = 138°.7325 22 Sudut Besar adalah sudut yang besaran nilainya lebih dari 360 derajat.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 12 Bagilah nilai ini dengan 180/ = 57.295 779 513 ... menghasilkan dalam radian. Selanjutnya kita dapatkan tan = -0.877 517. Kuadran yang benar Ketika sinus, cosinus atau tangen dari sudut diketahui, sudut itu sendiri dapat diperoleh dengan menggunakan fungsi 'sebaliknya', yaitu arcsine (ASN atau ASIN), arccosine (ACS atau ACOS), atau arctangent (ATN atau ATAN). Perlu dicatat bahwa fungsi arcsine dan arccosinus tidak tersedia di beberapa mesin hitung dalam beberapa bahasa pemrograman, umumnya pada hampir semua mikrokomputer di masa awal. Fungsi trigonometri inversi (arcsine, arccosine, arctangent) menghasilkan sudut yang tidak tunggal. Misalnya, jika sin = 0.5, maka = 30°, 150°, 390°, dll. Untuk alasan ini, komputer elektronik kembali ke fungsi trigonometri inversi, secara benar hanya setengah cakupan 0 sampai 360 derajat: arcsine dan arctangent memberikan sudut terletak antara -90 dan +90 derajat, sedangkan arccosine memberikan nilai antara 0 dan 180 derajat. Sebagai contoh, cobalah cos 147°. Jawabannya adalah -0.8387, yang kembali mendapatkan sudut 147° ketika anda menerapkan fungsi invers. Tetapi sekarang coba cos 213°. Jawabannya adalah -0.8387 lagi, jika anda mengambil arccosine-nya, memberikan hasil 147°. Oleh karena itu, setiap kali fungsi inversi dari SIN, COS atau TAN memproses sudut, muncul ambiguitas yang harus dipecahkan, bila diperlukan, dengan satu atau cara lain. Setiap masalah harus diperiksa secara terpisah. Misalnya, rumus (12.4) dan (24.7) menghasilkan sinus dari deklinasi benda langit. Selanjutnya fungsi arcsine akan selalu memberikan deklinasi ini di kuadran yang benar, karena semua deklinasi terletak antara -90 dan +90 derajat. Jadi, tidak ada tes khusus yang harus dilakukan di sini. Kasus pemisahan sudut terkait fungsi cosinus diberikan oleh rumus (16.1). Pemisahan sudut pada rentang 0° hingga 180°, yang cocok dengan inversi fungsi cosinus. Tapi, pertimbangkan konversi dari Askensio Rekta ( ) dan deklinasi ( ) ke bujur langit ( ) dan lintang ( ) dengan cara rumus berikut: Sebut saja A dan B adalah mewakili kedua persamaan. Kemudian, membagi persamaan pertama dengan persamaan kedua, kita memperoleh tan = A/B. Penerapan fungsi arctangent ke quotient A/B akan menghasilkan , yakni sudut antara -90° dan +90°, terdapat ketidakpastian sebesar ± 180°. Ketidakpastian ini dapat dihilangkan dengan pengujian berikut: jika B < 0, tambahkan hasilnya dengan 180°. Namun, beberapa bahasa komputer mempunyai fungsi penting, yakni arctangent ke dua, ATN2 atau ATAN2, yang menggunakan dua argumen A dan B secara terpisah dan mengkoreksi sudut sehingga masuk dalam kuadran yang tepat. Untuk contoh, misalkan A = -0.45, B = -0.72, kemudian ATN (A/B) akan menghasilkan sudut 32°, sementara ATN2 (A, B) akan menghasilkan nilai yang benar -148°, atau 212°. Input sudut negatif Sudut dinyatakan dalam derajat, menit dan detik dapat menjadi input sebagai tiga bilangan yang berbeda (INPUT D, M, S). Misalnya, sudut 21°44'07" dapat dimasukkan sebagai tiga angka 21, 44, dan 7. Kemudian, dalam program H sudut dalam derajat dihitung dengan cara H = D + M/60 + S/3600.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 13 Dalam kasus seperti itu, perlakukan sudut negatif harus dilakukan dengan hati-hati. Jika sudut itu, misalnya, -13°47'22", maka ini berarti -13° dan -47' dan -22". Dalam kasus ini, tiga angka adalah D = -13, M = -47, dan S = -22. Semua tiga angka memiliki tanda yang sama! Hal yang menyesatkan, jika memakai notasi -13°47'22", seseorang dapat memiliki kecenderungan untuk memasukkan -13, +47 dan +22, sehingga sudut yang diinputkan menjadi -12°12'38". Untuk menghindari kesalahan ini dimungkinkan menulis program sedemikian rupa sehingga kesalahan seperti itu dapat dikoreksi secara otomatis: 200 INPUT D, M, S 210 JIKA D <0 THEN M =-ABS (M): S =-ABS (S) 220 H = D + M/60 + S/3600 Pada baris 210, menit dan detik yang dibuat negatif, jika derajat negatif. Dua fungsi ABS memastikan bahwa tidak ada kesalahan dibuat ketika M dan S sebenarnya dimasukkan sebagai angka negatif. Namun prosedur ini tidak bekerja dengan baik, apabila besarnya sudut antara 0° dan -1°. Jika sudut dimaksud, misalnya, sama dengan -0°32'41", maka kita memiliki D = -0, yang komputer secara otomatis mengkonversi ke 0, yang tidak negatif, sehingga sebagai gantinya mesin hitung akan menyimpulkan bahwa sudut tersebut 0°32'41". Salah satu solusi (dalam BASIC) adalah memasukkan derajat sebagai 'string' bukan sebuah variabel numerik, maka dengan cara INPUT D$ bukan INPUT D. Kemudian salah satu dapat menggunakan fungsi VAL dan lakukan pengujian pada karakter pertama dari string D$. Pangkat waktu Beberapa kuantitas dihitung dengan rumus yang berisi pangkat waktu (T, T2, T3, ...). Penting untuk dicatat bahwa rumus polinomial tersebut hanya berlaku untuk nilai T yang tidak terlalu besar. Misalnya, rumus e = 0.046 295 90 - 0.000 027 337 T + 0.000 000 0790 T2 (1.1) memberikan eksentrisitas e dari orbit Uranus, T adalah waktu diukur dalam abad Julian (36525 hari) dari awal tahun 2000. Hal ini terbukti bahwa rumus ini hanya berlaku terbatas beberapa abad sebelum dan sesudah tahun 2000 Masehi, misalnya untuk T terletak di antara -30 dan +30. Untuk |T| jauh lebih besar dari 30, rumus di atas tidak berlaku lagi. Untuk T = -3305.8 rumus akan memberikan e = 1, dan orang yang tidak kompeten, berpikir bahwa "komputer tidak dapat membuat kesalahan", akan menyimpulkan bahwa pada tahun -328 580 orbit Uranus adalah parabola dan karenanya bahwa planet ini berasal dari luar tata surya kita - membawa kita di ranah pseudosains. Bahkan, eksentrisitas orbit e planet berubah agak tidak teratur seiring perjalanan waktu, meskipun tidak dapat melebihi batas atas yang didefinisikan. Tetapi untuk interval waktu dari beberapa milenium, eksentrisitas secara akurat dapat dimodelkan dengan polinomial derajat kedua seperti (1.1). Lebih lanjut, kita harus mencatat dengan hati-hati bahwa perbedaan antara komponen periodik (komponen dalam sinus dan/atau cosinus), yang tetap kecil di semua waktu, dan komponen waktu (komponen dalam T, T2, T3, ...) yang meningkat semakin cepat seiring dengan perjalanan waktu. Komponen T2 adalah sangat kecil ketika T kecil, menjadi semakin besar nilainya untuk |T|. Dengan demikian, untuk nilai-nilai |T| yang besar tidak ada artinya untuk diperhitungkan dalam perhitungan.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 14 Menghindari pangkat Misalkan seseorang ingin menghitung polinomial dengan A, B, C, D dan E konstanta, dan variabel x. Sekarang, seseorang mungkin memprogram mesin untuk menghitung polinomial ini secara langsung dengan menambahkan komponen, sehingga untuk setiap x yang diberikan mesin akan memberikan nilai polinomial. Namun, sebagai pengganti penghitungan semua pangkat x, tampaknya lebih bijaksana untuk menulis polinomial sebagai berikut: y = A + x (B + x (C + x (D + x E))) Dalam rumus ini semua fungsi pangkat telah menghilang dan hanya penambahan dan perkalian yang tersisa. Cara menuliskan polinomial seperti ini disebut metode Horner, sebuah pendekatan yang sangat cocok untuk perhitungan otomatis dengan menghindari pangkat. Cara ini juga, akan lebih baik untuk menghitung kuadrat dari angka A dengan cara perkalian A * A daripada menggunakan fungsi pangkat. Cobalah hitung kuadrat pertama 200 bilangan bulat positif pada mikro-computer HP-85. Menggunakan prosedur sebagai berikut: FOR I = 1 TO 200 K = I^2 NEXT I Perhitungan diselesaikan setelah 10.75 detik. Tetapi ketika baris kedua digantikan oleh K = I * I, maka perhitungan memakan waktu 0.96 detik! Untuk mempersingkat program Untuk membuat program sesingkat mungkin tidak selalu merupakan seni bagi para pencari seni, Tetapi kadang-kadang kebutuhan kapasitas memori perhitungan yang terbatas pada mesin hitung yang digunakan. Ada banyak trik untuk membuat program yang lebih pendek, bahkan perhitungan sederhana. Misalkan seseorang ingin menghitung jumlah S dari banyak komponen: S = 0.0003233 sin (2.6782 + 15.54204 T) + 0.0000984 sin (2.6351 + 79.62980 T) + 0.0000721 sin (1.5905 + 77.55226 T) + 0.0000198 sin (3.2588 + 21.32993 T) + .... Pertama, karena koefisien dari semua sinus adalah angka kecil, seseorang dapat menghindari pengetikan desimal dengan mengambil sebagai unit desimal terakhir (dalam kasus ini 10-7). Jadi, bukannya menggunakan angka 0.0003233, dll, tetapi gunakan 3233, dll. Kemudian, setelah jumlah komponen telah dihitung, bagilah hasilnya dengan 107. Kedua, tidak baik untuk menulis semua komponen secara eksplisit ke dalam program. Sebaliknya, bisa memanfaatkan apa yang disebut proses melingkar (loop). Setiap komponen di atas adalah bentuk A sin (B + C T), jadi kita tempatkan semua nilai A, B, C sebagai DATA dalam program. Misalkan ada 50 komponen. Maka program akan terlihat seperti ini: 100 S = 0 110 RESTORE 170 120 FOR I = 1 TO 50 130 READ A, B, C
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 15 140 S = S +A*SIN (B + C*T) 150 NEXT I 160 S = S/10000000 170 DATA 3233, 2.6782, 15.54204, 984, etc... Tes keamanan Sertakan test keamanan dalam kasus situasi yang 'tidak mungkin' terjadi, misalnya dalam rangka untuk menghentikan perhitungan, ketika setelah sejumlah iterasi tertentu, ketelitian yang diinginkan belum tercapai. Atau pikirkan misalnya kasus okultasi bintang oleh Bulan. Di dalam sebuah program untuk keadaan setempat, waktu terbenam dan terbitnya kembali bintang itu akan dihitung. Bagaimanapun juga mungkin saja terjadi, , bahwa bintang tidak okultasi seperti yang terlihat dari tempat tertentu; dalam kasus seperti itu, tentu saja, saat ingress dan egress tidak ada, dan mencoba untuk menghitungnya agar sesuai dengan menghitung akar angka negatif. Untuk menghindari masalah ini, program harus ditulis sedemikian rupa bahwa pertama-tama nilai jarak bintang setidaknya jarak ke pusat piringan Bulan (seperti yang terlihat dari tempat tertentu) dihitung, jika dan hanya jika, jarak ini lebih kecil dari jari-jari piringan Bulan, waktu ingress dan egress dapat dihitung. Debugging Setelah program ditulis, program beserta hasil perhitungannya harus dicheck dari kemungkinan adanya kesalahan, yang disebut bugs (kesalahan). Proses menemukan bug (kesalahan) dan mengoreksinya disebut debugging. Beberapa jenis kesalahan dapat terjadi untuk pemrograman dalam bahasa apapun: a. kesalahan sintaks melanggar aturan bahasa, seperti ejaan kurung dilupakan, atau konvensi lainnya yang spesifik untuk setiap bahasa. Misalnya, dalam BASIC, A = SIM (B) harusnya : A = SIN (B) P = SQR (ABS (A + B) harusnya : P = SQR (ABS (A + B)) b. kesalahan semantik, seperti program baris terlupakan. Misalnya, GOTO 800 bila tidak ada garis 800 ada dalam program ini. c. kesalahan run-time, yang terjadi selama eksekusi program. Sebagai contoh: A = SQR (B). Variabel B dihitung selama eksekusi program, tetapi nilainya kebetulan negatif; ON X GOTO 1000, 2000, 3000, Tetapi X lebih besar dari 3. d. kesalahan pemrograman lain. Kesalahan berikut sering terjadi: • Mengetik huruf 0 ('oh') bukan angka nol (0 atau ), atau sebaliknya, atau mengetik angka 1 bukannya huruf I. Sebuah daftar referensi, jika tersedia, dapat membantu di sini. • Nama variabel digunakan dua kali dalam program (dengan arti yang berbeda). • Kesalahan dalam menyalin konstanta numerik (seperti 127.3 bukannya 127.03, atau 15 bukannya .15), mengetik * bukannya +, dll
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 16 • Satuan yang digunakan secara salah. Misalnya, sudut dinyatakan dalam derajat, bukan radian, atau Askensio rekta dinyatakan dalam jam belum dikonversi ke derajat atau radian. • Sudut berada pada kuadran yang salah. Lihat 'kuadran yang benar' pada halaman 12. • Kesalahan pembulatan. Misalnya, cosinus dari sudut d telah dihitung, dari situ seseorang ingin menyimpulkan sudut tersebut. Hal ini tidak bekerja dengan baik ketika sudutnya sangat kecil. Memang, jika d sangat kecil, cosinus-nya hampir sama dengan 1 dan bervariasi cukup lambat sebagai fungsi dari d. Dalam hal ini, nilai d sulit ditentukan dan tidak dapat dihitung secara akurat. Misalnya, cos 15" = 0.999 999 997 Tetapi cos 0" adalah persis 1. Jika seseorang mengharapkan bahwa sudut d bisa sangat kecil, maka nilainya harus dihitung dengan menggunakan metode lain. Lihat, Misalnya, Bab 16. Prosedur iterasi yang tidak menjamin konvergensi dalam beberapa kasus. Lihat Bab 5 (Iterasi) dan 29 (Persamaan Kepler). Terlanjur menggunakan Metode perhitungan yang salah. Misalnya, untuk mempertukarkan dua bilangan X dan Y, dibutuhkan variabel tambahan A 3 : Prosedur yang Salah Y = X X = Y Prosedur yang benar A = Y Y = X X = A Dalam QUICKBASIC, GWBASIC dan beberapa versi BASIC lainnya, terdapat fungsi SWAP: SWAP (X, Y) mempertukarkan nilai pada variabel X dan Y. Memeriksa hasil Tentu saja, program tidak hanya harus 'tata bahasa'-nya saja yang benar: tetapi juga harus memberikan hasil yang benar. Uji program anda menggunakan solusi yang sudah diketahui. Jika, misalnya, anda menulis sebuah program untuk perhitungan posisi planet atau waktu fase-fase Bulan, anda dapat membandingkan hasilnya dengan nilai yang diberikan dalam almanak astronomi. Uji program anda untuk beberapa kasus 'khusus'. Misalnya, apakah hasilnya masih tepat untuk nilai deklinasi negatif? atau untuk deklinasi terletak di antara 0° dan -1°? Atau jika lintang pengamat yang persis nol? Atau untuk nilai negatif dari waktu T? 3 Ini tidak cukup tepat. Secara teoritis, adalah mungkin untuk pertukaran dua bilangan tanpa menggunakan pihak ketiga, variabel tambahan, seperti berikut: X = X + Y Y = X - Y X = X - Y Tapi, tentu saja, metode ini mengundang rasa ingin tahu,karena eksekusi operasi ini membutuhkan waktu ekstra pada komputer, dan terlebih lagi karena kesalahan pembulatan dapat terjadi.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 17 Bab 2. Tentang Akurasi Topik-topik yang akan dipaparkan dalam Bab ini: akurasi yang diperlukan untuk masalah tertentu, akurasi yang dihasilkan bahasa pemrograman, dan juga akurasi dalam mempublikasikan hasil. Akurasi yang diperlukan untuk masalah tertentu Keakuratan yang dibutuhkan dalam perhitungan tergantung pada tujuannya. Misalnya, apabila seseorang ingin menghitung posisi planet dengan tujuan memperoleh waktu terbit dan terbenamnya, maka akurasi 0.01 derajat sudah memadai. Alasannya jelas: gerakan harian tampak dari bola langit bersesuaian dengan rotasi lebih dari satu derajat selama interval waktu empat menit, dan 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. Misalkan, untuk perhitungan posisi bintang, program 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 okultasi, atau untuk perhitungan konjungsi. Jika diperlukan akurasi tertentu, kita 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
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 18 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 desimal! Misalnya, bilangan 0.0000183 memiliki tujuh desimal, tetapi hanya tiga angka yang signifikan. Angka 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 angka, tetapi menghilangkan angka nolnya memberikan hasil hanya ada satu angka signifikan! Selain itu, dua angka yang diberikan telah dibulatkan. Jika demikian halnya, maka bahkan situasinya bisa lebih buruk. Misalkan bahwa dua bilangan yang sebenarnya 6.927 3649 dan 6.927 3451. Sedangkan hasil yang benar adalah 0.000 0198, yang hampir dua kali hasil sebelumnya! Enam atau delapan angka signifikan, seperti aturan umum untuk mikrokomputer masa-masa awal, atau 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 akhir. Mari kita perhatikan, misalnya, rumus berikut ini menghasilkan bujur rata-rata Bulan, L' untuk setiap waktu yang diinginkan, dalam derajat (Bab 45): L' = 218.316 4591 + 481 267.881 342 36 T - 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 derajat, orang 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 contoh, mari kita hitung L' untuk T = 0.4, yang berkorelasi dengan 1 Januari 2040 jam 12h TD. Kita dapatkan L' = 192 725°.469, yang direduksi menjadi 125°.469 adalah jawaban yang benar. Tetapi jika mesin bekerja dengan hanya enam angka signifikan, tidak akan menemukan L' = 192 725°.469, melainkan 192 725° (enam digit!), yang akan direduksi menjadi 125°, sehingga dalam hal ini hasil akhir hanya sampai derajat terdekat, dan kesalahannya adalah 0.469 derajat atau 28', dan ini terjadi hanya dalam waktu 40 tahun setelah permulaan epoch. Dalam 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
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 19 30 X = X * 2 40 IF X + 1 <> X THEN 60 50 GOTO 80 60 J = J + 1 70 GOTO 30 80 PRINT J, J * O.30103 90 END Di sini, J adalah jumlah bit yang signifikan dalam mantissa dari angka floating, sementara 0.30103 J adalah jumlah angka signifikan dalam angka desimal. Konstanta 0.30103 adalah log10 2. Misalnya untuk komputer HP-85 memberikan J = 39, dari mana 11.7 digit, dengan HP-UX Technical Basic 5.0, bekerja 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 = (9 * X + 1) * X -1 40 PRINT I, X 50 NEXT I 60 END Operasi pada baris 30 sebenarnya menggantikan X dengan sendirinya. namun 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
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 20 dan nilai dari urutan 10217 setelah 30 langkah! Perbedaan akurasi antara mikrokomputer atau bahkan kalkulator genggam dapat ditunjukkan dengan tes sederhana [2]: berulang kali mengkuadratkan 1.000 0001. Setelah 27 kali, hasilnya ke 10 angka penting harus 674 530.4707. Hasil 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 Techn. Basic) 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 komputer. Beberapa mesin, seperti HP-85 lama, menggunakan skema BCD atau Binary Coded Decimal (Kode Biner Desimal) untuk mempresentasikan Bilangan secara internal, tetapi dalam banyak kasus lain representasi biner digunakan. BCD adalah skema dimana nilai sebenarnya dari setiap digit bilangan disimpan secara individual. Hal ini memungkinkan bilangan yang direpresentasikan secara tepat, untuk presisi sampai angka tertentu dari mesin yang dimaksudkan atau bahasa pemrograman. Biner, di sisi lain, merepresentasikan semua bilangan karena beberapa kombinasi pangkat dari 2. Dalam biner, fraksi juga direpresentasikan sebagai pangkat 2, sehingga tidak mungkin untuk merepresentasikan bilangan yang bukan kombinasi yang tepat dari pangkat negatif dari 2 di dalam sistem biner. Misalnya, 1/10 secara rasional tidak dinyatakan sebagai kombinasi pangkat negatif dari 2, karena 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 bilangan, bahkan dengan bilangan kecil desimal, tidak direpresentasikan tepat. Akibatnya, hasil dari operasi aritmatika bisa saja salah, bahkan ketika bilangan hanya beberapa desimal saja. Misalkan X = 4.34. Kemudian hasil yang benar dari operasi H = (INT 100 * (X - INT (X))) adalah 34. Namun, banyak bahasa komputer menghasilkan H = 33. Alasannya bahwa dalam kasus ini nilai X adalah direpresentasikan secara internal sebagai 4.3399999998, atau semacamnya. Contoh lain yang mengejutkan adalah 2 + 0.2 + 0.2 + 0.2 + 0.2 + 0.2 - 3. Pada banyak komputer, hasilnya tidak nol! Di HP-Integral, menggunakan HP-UX Technical Basic 5.0, hasilnya adalah 8.88 x 10-16. Tetapi pada mesin yang sama 0.2 + 0.2 + 0.2 + 0.2 + 0.2 + 2 - 3 menghasilkan nol, sehingga urutan di mana operasi dilakukan dapat menjadi sangat penting di sini! Anehnya, 2 + (5 * 0.2) - 3 memberikan hasil persis nol pada HP-Integral, dan 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
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 21 30 NEXT I 40 PRINT U 50 END Di sini, I dan U mengambil nilai-nilai yang berurutan dari 0 sampai 100 dengan langkahlangkah 0.1, dan nilai terakhir dari U harus persis 100. HP-85 tidak menghasilkan 100 memang, Tetapi HP-Integral memberikan 99.999 999 999 9986, yang dapat memiliki konsekuensi berbahaya dalam beberapa aplikasi. Kesalahan akibat fakta bahwa nilai langkah 0.1 diterjemahkan ke dalam biner sebagai 0.0999999. Bedanya dengan 0.1 sangat kecil tetapi, karena ada 1000 langkah, kesalahan terakhir menjadi 1000 kali lebih besar dari perbedaan kecil. Dalam kasus ini, masalahnya 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 lain. Atau coba, misalnya, A = 0.1, PRINT 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 adalah, bilangan didefinisikan sebagai INTEGER). Jika demikian adalah bilangan 'bulat yang bagus', maka hal ini menunjukkan bahwa mesin bekerja di BCD. Sebagai 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 BCD. Pada TRS-80 lama, bahwa 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 mikrokomputer, hasil SQR (25) - 5 tidak nol! Ini bisa menjadi masalah jika pengujian pada hasil. Apakah 25 merupakan kwadrat sempurna? Orang mungkin berpikir jawabannya adalah tidak, karena 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 terdekat. Misalnya, 15.88 yang akan
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 22 dibulatkan menjadi 15.9, atau 16, bukan 15. Namun, tanggal dan tahun kalender adalah pengecualian. Misalnya, 15.88 Maret menunjukkan suatu tanggal tertentu, yakni 15 Maret: itu berarti 0.88 hari setelah tanggal 15 Maret jam 0h. Jadi, jika kita membaca bahwa suatu peristiwa terjadi pada tanggal 15.88, itu terjadi pada tanggal 15 Maret, bukan pada 16 Maret. Demikian pula, 1977.69 menunjukkan sekejap milik tahun 1977, bukan 1978. Hanya angka yang bermakna harus dipertahankan. Misalnya, Rumus Muller untuk menghitung besarnya Jupiter secara visual adalah: m = -8.93 + 5 log r dimana r adalah jarak Jupiter ke Matahari, jarak ke Bumi (keduanya dalam unit astronomi), dan logaritma dengan basis 10. Sekarang, pada 14 Mei 1992 pada jam 0h TD, kita memiliki: r = 5.417 149 = 5.125 382 dari mana m = -1.712 514 898. Namun menyebutkan semua desimal tersebut, di bawah dalih bahwa mereka dihasilkan oleh komputer, akan 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 diharapkan. Dan di setiap kasus, fenomena 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 lain, John Mosley [3] menyebutkan program komersial yang tersedia menghasilkan waktu terbit dan terbenam benda langit sampai 0.1 detik, yang mustahil tepat. Beberapa 'perasaan' dan pengetahuan astronomi yang cukup diperlukan di sini. Misalnya, 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. Contoh: Hitung 1.4 + 1.4 ke bilangan bulat terdekat. Jika kita pertama membulatkan bilangan-bilangan yang dimasukan, kita memperoleh 1 + 1 = 2. Kenyataannya, 1.4 + 1.4 = 2.8, yang akan dibulatkan menjadi 3. Berikut adalah contoh lain. Pada tanggal terjadinya oposisi, 18 Juli 1996 deklinasi Neptunus adalah = -20°24'. Berapa ketinggian planet hm pada saat transit melalui meridian selatan, di Sonneberg Observatory, Jerman, ke derajat terdekat? lintang 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".
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 23 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 akhir, kita nyatakan bahwa menghilangkan nol bisa merupakan hal penting. Misalnya, 18.0 adalah tidak sama dengan 18. Nilai sebelumnya berarti bahwa jumlah sebenarnya terletak antara 17.95 dan 18.05, sedangkan nilai kedua telah dibulatkan ke bilangan bulat terdekat dan dapat berarti sama dengan bilangan antara 17.5 dan 18.5. Untuk alasan ini, angka nol harus disertakan dalam hasil untuk menunjukkan akurasi: bintang besarnya 7 tidak sama sebagai bintang besarnya 7.00. Daftar Pustaka 1. John Mosley, Sky and Telescope, Vol. 78, hal. 300 (September 1989). 2. F. Gruenberger, 'Computer Recreation', Scientific American, Vol. 250, hal. 10 (April 1984). 3. John Mosley, Sky and Telescope, Vol. 81, hal. 201 (Februari 1991).
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 24 Bab 3. Interpolasi Almanak astronomi atau publikasi lainnya berisi tabel numerik yang menyajikan data kuantitas y untuk argumen x yang berjarak sama. Sebagai contoh, y adalah askensio rekta Matahari, dan nilai x adalah urutan hari dalam suatu tahun pada jam 0h TD. Interpolasi adalah proses atau metode untuk menemukan nilai-nilai untuk waktu tertentu, kuantitas, dll., berdasarkan data yang disajikan dalam sebuah tabel. Tentu saja, sebuah 'tabel' tidak harus diambil dari buku, tetapi bisa saja dihitung dengan sebuah program komputer. Misalkan posisi Matahari yang akan dihitung sangat banyak (> 3) pada saat tertentu pada hari yang sama. Kemudian seseorang dapat menghitung posisi Matahari untuk 0h, 12h dan 24h pada hari itu, dan kemudian menggunakan hasil-hasilnya untuk melakukan interpolasi untuk setiap saat yang diinginkan pada hari tersebut. Cara ini akan membutuhkan waktu komputer lebih sedikit dibandingkan dengan menghitung posisi Matahari secara langsung untuk setiap saat. Dalam Bab ini, kita akan membahas dua kasus: interpolasi dari tiga atau lima nilai yang didapatkan dari tabel. Dalam kedua kasus kita juga akan memperlihatkan bagaimana nilai ekstrem atau nol dari suatu fungsi dapat ditemukan. Kasus interpolasi hanya dengan dua nilai dari tabel tidak akan dibahas di sini, karena dalam kasus semacam ini dapat dilakukan interpolasi linear, dan ini sama sekali tidak sulit. Tiga nilai tabular Tiga nilai tabular y1, y2, y3 dari fungsi y diberikan, sesuai dengan nilai-nilai x1, x2, x3 dari argumen x. Mari kita membentuk tabel tingkat perbedaan seperti berikut ini: x1 y1 a x2 y2 c b x3 y3 (3.1) dimana a = y2 - y1 dan b = y3 - y2 disebut perbedaan-perbedaan tingkat pertama. Perbedaan tingkat kedua c adalah sama dengan b - a, yaitu c = y1 + y3 - 2 y2 Umumnya, perbedaan dengan tingkatan berurutan secara gradual semakin mengecil. Interpolasi dari tiga nilai tabular diperbolehkan ketika perbedaan tingkat kedua dari tabel hampir, yakni ketika perbedaan tingkat ketiga hampir nol. Dalam hal ini, dibutuhkan perasaan dan pengalaman yang baik dari seorang pembuat program. Misalnya, posisi Bulan bisa diinterpolasi akurat dari tiga posisi diberikan pada interval per jam, tetapi tidak cukup teliti ketika intervalnya satu hari. Mari kita perhatikan, misalnya, jarak dari Mars ke Bumi dari 5 sampai 9 Nopember 1992, pada jam 0h TD. Nilai-nilai yang diberikan dalam satuan astronomi, dan tingkat perbedaannya dalam satuan desimal ke 6:
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 25 5 November 1992 0.898 013 -6904 6 0.891 109 +21 -6883 +2 7 0.884 226 +23 -6860 +2 8 0.877 366 +25 -6835 9 0.870 531 Karena perbedaan tingkat ketiga hampir nol, maka kita dapat menginterpolasikan dari hanya tiga nilai tabular. Nilai tengah x2 harus dipilih sedemikian rupa bahwa nilai tersebut adalah nilai x yang terdekat dengan nilai x yang ingin kita interpolasikan. Misalnya, jika dari tabel di atas kita harus menyimpulkan nilai fungsi untuk 7 November pada 22h14m, maka y2 adalah nilai untuk 8.00 November. Dalam hal ini, kita harus mempertimbangkan nilai-nilai tabel untuk 7, 8 dan 9 November, yaitu tabel: 7 November y1 = 0.884 226 8 y2 = 0.877366 9 y3 = 0.870531 (3.2) dan tingkat perbedaannya adalah: a = -0.006 860 c = 0.000 025 b = -0.006 835 Misalkan n adalah faktor interpolasi. Artinya, jika nilai fungsi y diperlukan untuk nilai argumen x, kita memiliki n = x - x2 dengan satuan seperti pada interval tabel. Nilai n adalah positif jika x > x2, yaitu untuk nilai 'setelah' x2, atau dari x2 ke bagian bawah tabel. Jika x mendahului x2, maka n < 0. Jika y2 telah dipilih dengan benar, maka n antara -0.5 dan +0.5, Meskipun rumus berikut ini juga akan memberikan hasil yang benar untuk semua nilai n antara -1 dan +1. Rumus interpolasi adalah Contoh 3.a — Dari tabel (3.2), Hitunglah jarak Mars ke Bumi pada 8 November 1992 pada jam 4h21m TD. Kita memiliki 4h21m = 4.35 jam, dan karena interval tabel adalah 1 hari atau 24 jam, maka n = 4.35/24 = 0.18125. Rumus (3.3) memberikan hasil y = 0.876 125, seperti yang diinginkan. Jika fungsi ditabulasikan mencapai suatu nilai ekstrem (yaitu, nilai maksimal atau nilai minimum), hal ini dapat ditemukan sebagai berikut. Buatlah tingkat perbedaan (3.1) untuk bagian yang tepat dari ephemeris. Selanjutnya nilai ekstrem fungsi adalah: (3.4)
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 26 dan nilai yang berkorelasi dengan argumen x dirumuskan dengan: (3.5) dalam satuan interval tabel, dan diukur dari nilai pusat x1. Contoh 3.b — Hitung waktu perjalanan Mars melalui perihelion Mei 1992, dan besarnya vektor radius pada saat itu. Nilai berikut untuk jarak Matahari ke Mars telah dihitung dengan interval empat hari: 12.0 TD Mei 1992 1.3814294 16.0 1.3812213 20.0 1.3812453 Tingkat perbedaannya adalah a = -0.000 2081 c = 0.000 2321 b = 0.000 0240 dari tingkat perbedaan di atas kita menyimpulkan ym = 1.3812030 dan nm = +0.39 660 Oleh karena itu, setidaknya jarak dari Mars ke Matahari adalah 1.381 2030 AU. Waktu yang sesuai diperoleh dengan mengalikan 4 hari (interval tabel) dengan 0.39 660. Ini menghasilkan 1.58 640 hari, atau 1 hari dan 14 jam belakangan dari waktu pusat, yaitu 17 Mei 1992 jam 14h TD. [Tentu saja, jika nm negatif, keadaan ekstrem akan berlangsung lebih awal dari waktu pusat.] Nilai argumen x dimana fungsi y adalah nol dapat ditemukan dengan merangkai kembali tabel tingkat perbedaan (3.1) untuk bagian yang tepat dari ephemeris. Faktor interpolasi berkorelasi dengan nilai nol dari fungsi tersebut, kemudian dirumuskan dengan: (3.6) Persamaan (3.6) dapat diselesaikan dengan terlebih dahulu menempatkan = 0 di sebelah kanan. Kemudian rumus memberikan nilai perkiraan no. Nilai ini kemudian digunakan untuk menghitung sisi kanan lagi, yang memberikan nilai yang masih lebih baik untuk no. Proses ini disebut iterasi (Latin: iterare = mengulang), dapat dilanjutkan sampai nilai ditemukan no tidak lagi bervariasi, sesuai dengan ketepatan komputer. Contoh 3.c — Diketahui nilai berikut adalah deklinasi Merkurius pada : 26.0 TD Februari 1973 -0° 28'13".4 27.0 +0 06 46.3 28.0 +0 38 23.2 Hitunglah kapan saat deklinasi planet adalah nol. Pertama, kita mengubah nilai-nilai dari tabel ke dalam detik derajat dan kemudian membentuk tingkat perbedaan:
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 27 yi = -1693.4 a = 2099.7 y2 = + 406.3 c = -202.8 b = 1896.9 y3 = +2303.2 Rumus (3.6) kemudian menjadi Tempatkan no = 0 di bagian kanan, kita dapatkan no = -0.20332. Ulangi perhitungan, kita dapatkan berturut-turut -0.20125 dan -0.20127. Oleh karena itu, no = -0.20127 dan selanjutnya, interval tabular adalah satu hari, Merkurius melintasi ekuator langit pada: 27.0 Februari 1973 - 0.20127 = 26.79873 Februari 26 Februari jam 19h10m TD. Untuk nilai perhitungan nilai faktor interpolasi no dengan nilai fungsinya adalah nol, rumus (3.6) sangat tepat, ketika, seperti dalam Contoh 3.c, yang mana fungsi tersebut 'hampir garis lurus' di dalam Interval yang diperhitungkan. Namun, jika kelengkungan fungsi ini dianggap penting, penggunaan rumus mungkin memerlukan banyak iterasi, apalagi, dapat menyebabkan divergensi sekalipun iterasi dimulai dari nilai no yang hampir benar. Dalam hal ini, metode yang lebih baik untuk menghitung no adalah sebagai berikut: koreksi ke no yang nilainya diasumsikan: (3.7) Perhitungan harus diulang, dengan menggunakan nilai baru no sampai didapatkan no yang tidak lagi bervariasi. Contoh 3.d — Anggaplah sebuah fungsi dengan nilai sebagai berikut: x1 = - 1 y1 = - 2 x2 = 0 y2 = +3 x3 = +1 y3 = +2 Ketiga titik sebenarnya mewakili parabola y = 3 + 2x - 3 x 2, yang memiliki kelengkungan yang kuat antara x = -1 dan x = +1 (lihat Gambar di sebelah kiri). Dimulai dengan no = 0, rumus (3.6) memberikan hasil berturut-turut: -1.5 -0.461 538 ... -0.886 363 . . -0.643 902 ... -0.763 027 ... -0.699 450 ...
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 28 dan seterusnya. Nilai yang benar dengan desimal ke enam diperoleh setelah tidak kurang dari 24 iterasi. Tetapi jika kita menggunakan rumus (3.7), sekali lagi dimulai dengan no = nol, kita menemukan berturut-turut -1.5 -0.886 363 636 364 -0.732 001 693 959 -0.720 818 540 935 -0.720 759 221 726 -0.720 759 220 056 -0.720 759 220 056 sehingga desimal kedua belas yang diperoleh dengan benar hanya diperlukan enam iterasi dalam kasus ini. Lima nilai tabular Jika tingkat perbedaan ketiga tidak dapat diabaikan, lebih dari tiga nilai tabular harus digunakan. Mengambil lima nilai tabular berturut-turut, y1 sampai y5, kita membentuk, seperti sebelumnya, tabel tingkat perbedaan y1 A y2 E B H y3 F K C J y4 G D y5 di mana A = y2 - y1, H = F - E, dst. Jika n adalah faktor interpolasi, diukur dari nilai sentral y3 dalam satuan interval tabular, positif ke arah y4, rumus interpolasinya adalah yang juga dapat ditulis (3.8) Contoh 3.e — Anggaplah nilai-nilai berikut dari paralaks horisontal Bulan pada ekuator: 27.0 TD Februari 1992 54'36".125 27.5 54 24.606 28.0 54 15.486 28.5 54 08.694 29.0 54 04.133 Tingkat perbedaan (dalam ") adalah n
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 29 A = -11.519 E = +2.399 B = -9.120 H = -0.071 F = +2.328 K = -0.026 C = -6.792 J = -0.097 G = +2.231 D = -4.561 Kita melihat bahwa tingkat perbedaan ke tiga (H dan J) tidak dapat diabaikan, kecuali akurasi sekitar 0".1 dianggap sudah memadai. Mari kita sekarang menghitung paralaks Bulan pada 28 Februari jam 3h20m TD. Interval tabular adalah 12 jam, kita memiliki Rumus (3.8) kemudian memberikan y = 54'15".486 - 2".117 = 54'13".369. Faktor interpolasi nm berkorelasi dengan fungsi ekstrem dapat diperoleh dengan menyelesaikan persamaan: (3.9) Seperti sebelumnya, ini dapat dilakukan dengan iterasi, pertama menempatkan nm = 0 di anggota kedua atau sebelah kanan. Setelah nm ditemukan, nilai fungsi yang sesuai dapat dihitung dengan cara rumus (3.8). Akhirnya, faktor interpolasi no berkorelasi dengan fungsi nol dapat ditemukan dari (3.10) di mana, sekali lagi, no dapat ditemukan dengan iterasi, mulai dengan menempatkan no = 0 di bagian kanan atau anggota kedua. Catatan yang dibuat pada hal. 27 tentang rumus (3.6) berlaku di sini juga. jika fungsi kelengkungan dalam interval yang diinginkan merupakan hal penting, maka metode yang lebih baik untuk menghitung no adalah sebagai berikut. Hitung: Kemudian koreksi dengan nilai diasumsikan no (3.11) dan, sekali lagi, perhitungan harus diulang dengan nilai baru no sampai no tidak lagi bervariasi. L a t i h a n . - Dari nilai berikut dari lintang heliosentris Merkurius, cari kapan saat lintangnya sama dengan nol dengan menggunakan rumus (3.10).
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 30 25.0 TD Januari 1988 -1°11'21".'23 26.0 -0 28 12.31 27.0 +0 16 07.02 28.0 +1 01 00.13 29.0 +1 45 46.33 Jawab: orbit Merkurius mencapai titik daki (ascending node) no = -0.361413, yaitu pada 26.638 587 Januari 1988, atau 26 Januari jam 15h20m TD. Menggunakan hanya tiga nilai tengah dan rumus (3.6), maka akan didapatkan hasil no = - 0.362 166, berbeda 0.000 753 hari, atau 1.1 menit, dengan hasil sebelumnya. Catatan-catatan penting 1. Interpolasi tidak dapat dilakukan pada kuantitas yang kompleks4 secara langsung. Kuantitas tersebut harus diubah terlebih dahulu menjadi tunggal, dengan satuan yang sesuai. Misalnya, sudut dinyatakan dalam derajat, menit dan detik harus dikonversi baik ke derajat desimal atau detik busur, sebelum dapat digunakan untuk interpolasi. 2. Interpolasi Waktu dan Askensio Rekta. — Kita memperhatikan fakta bahwa Waktu dan Askensio Rekta melompat ke nol ketika nilainya mencapai 24 jam. Hal ini harus diperhitungkan ketika interpolasi dilakukan pada nilai-nilai yang ditabulasikan. Anggaplah, misalnya, bahwa kita ingin menghitung Askensio Rekta Merkurius pada saat 6.2743 TD April 1992, menggunakan tiga nilai berikut: 5.0 TD April 1992 = 23h51m56 6.0 23 56 28.49 7.0 0 01 00.71 Tidak hanya diperlukan untuk mengubah nilai-nilai tersebut ke jam dan desimal, tetapi nilai terakhir harus ditulis sebagai 24h00m00s .71, jika tidak, mesin akan menganggap bahwa, dari 6.0 - 7.0 April, nilainya menurun dari 23h56m ke 0h01m. Kita temukan situasi yang sama dalam beberapa kasus lainnya. Misalnya, di sini adalah bujur meridian pusat Matahari selama beberapa tanggal: 14.0 UT Juni 1992 37°.96 15.0 24.72 16.0 11.48 17.0 358.25 Jelaslah bahwa variasinya sekitar -13.24 derajat per hari. Oleh karena itu, seseorang tidak harus menginterpolasikan secara langsung antara 11.48 dan 358.25. Entah nilai pertama harus ditulis sebagai 371°.48, atau nilai kedua harus dinyatakan sebagai -1.75 derajat. 3. Sebisa mungkin, hindari melakukan interpolasi untuk | n | > 0.5. Dalam kasus apapun, interpolasi faktor n harus dibatasi antara -1 dan +1. Aturan yang sama berlaku untuk perhitungan sebuah fungsi dengan nilai ekstrem (nm) atau nol (no). Pilih nilai sentral y sedemikian rupa bahwa nilai tersebut adalah nilai tabel terdekat ke nilai ekstrem atau nol. Tentu saja, nilai yang tepat dari nm atau no tidak diketahui sebelumnya, namun nilai perkiraan dapat dihitung terlebih dahulu, setelah itu pilih nilai sentral (y3 atau y2) dari sebuah fungsi dapat disesuaikan. 4 Menurut definisi, kuantitas kompleks adalah kuantitas yang terdiri dari satuan yang berbeda, di antaranya memiliki rasio yang berbeda dari pangkat bilangan 10. Contoh 'kuantitas kompleks': 10h 29m 55s , 23°26'44 "; £, Shilling, pence, yd, kaki, inchi, a + bi
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 31 Jika nilai yang dipilih terlalu jauh dari nilai nol atau ekstrem, rumus yang diberikan dalam Bab ini untuk menghitung titik-titik tersebut akan memberikan hasil yang salah, atau bahkan tidak masuk akal. Mari kita lihat contoh. Kita tahu bahwa sin x mencapai maksimum untuk x - 90°. Tetapi mari kita lihat sinus berikut, dengan sepuluh desimal: sin 29° 0.484 809 6202 sin 30° 0.500 000 0000 sin 31° 0.515 038 0749 sin 32° 0.529 919 2642 sin 33° 0.544 639 0350 Menggunakan tiga nilai utama, rumus (3.4) memberikan ym = 1.22827 (bukannya eksak 1), dan (3.5) menghasilkan nm = 95.35, atau maksimum terjadi di tempat 31° + 95°.35 = 126°.35 bukannya 90°. Menggunakan semua lima nilai, rumus (3.9) memberikan nm = 57.30, yang mana maksimum terjadi pada 88°.30, dari mana nilai 0.99348 ditemukan untuk maksimum. Meskipun hasil ini jauh lebih baik dari yang diperoleh dengan hanya tiga poin, tetapi masih tidak memadai! Interpolasi pada bagian tengah Jika nilai-nilai fungsi y1, y2, y3, y4 diketahui untuk empat absis sama-spasi x1, x2, x3 dan x4, maka nilai fungsi untuk titik persis setengah jalan antara x2 dan x3 mudah dihitung: (3.12) Rumus ini berlaku bila perbedaan ke empat nilai tabulasi diabaikan. Contoh 3.f — Diketahui nilai berikut adalah Askensio Rekta Bulan pada: 25 Maret 1994 jam 8h TD = 10h18m48s . 732 10 10 23 22.835 12 10 27 57.247 14 10 32 31.983 Hitunglah Askensio Rekta untuk 11h00m TD. Konversi menit dan detik, setelah 10h, dalam hitungan detik, kita mengubah empat data yang diberikan ke y1 = 1128.732 detik y2 = 1402.835 y3 = 1677.247 y4 = 1951.983 Rumus (3.12) kemudian menghasilkan y = 1540.001 detik = 25m40s .001, sehingga Askensio Rekta yang dicari = 10h25m40s .001. Interpolasi dengan spasi tidak merata: Rumus Interpolasi Lagrange Ketika absis (nilai-nilai koordinat independen x) pada titik yang diberikan mempunyai spasi yang tidak sama, Rumus interpolasi Lagrange dapat digunakan. (Tentu saja, rumus ini dapat juga digunakan untuk kasus titik-titik tersebut spasinya sama).
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 32 Rumus sederhana ini dikembangkan oleh matematikawan Prancis J.L.Lagrange (1736-1813), menentukan polinomial derajat n-1 dengan pencocokan titik-titik yang diketahui n secara persis. Jika titik-titik yang diketahui adalah xi, yi (i = 1 sampai n), rumus ini, untuk x tertentu, (3.13) dimana berarti bahwa produk dari fraksi harus dihitung untuk semua nilai j = 1 sampai n, kecuali untuk j = i. Artinya, Perlu dicatat bahwa nilai xi dari titik-titik yang diberikan harus berbeda semua. Program berikut dalam BASIC dapat digunakan. 10 DIM X(50), Y(50) 20 PRINT "NUMBER OF GIVEN POINTS = " ; 30 INPUT N 40 IF N < 2 OR N > 50 THEN 20 50 PRINT 60 FOR I = 1 TO N 70 PRINT "X, Y FOR POINT No."; I 80 INPUT X(I), Y(I) 90 IF I = 1 THEN 130 100 FOR J = 1 TO 1-1 110 IF X(I) = X(J) THEN PRINT "THIS VALUE OF X HAS ALREADY BEEN USED !" : GOTO 70 120 NEXT J 130 NEXT I 140 PRINT : PRINT "POINT X FOR INTERPOLATION = "; 150 INPUT Z 160 V = 0 170 FOR I = 1 TO N 180 C = 1 190 FOR J = 1 TO N 200 IF J = I THEN 220 210 C = C*(Z-X(J))/(X(I)-X(J)) 220 NEXT J 230 V = V + C*Y(I) 240 NEXT I 250 PRINT : PRINT "INTERPOLATED VALUE = "; V 260 PRINT : PRINT "STOP @) OR INTERPOLATION AGAIN A) "; 270 INPUT A 280 IF A = 0 THEN STOP
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 33 290 IF A = 1 THEN 140 300 GOTO 260 Program ini pertama kali bertanya berapa banyak nilai-nilai yang anda ketahui yang akan dimasukkan ke tabel dan memungkinkan anda untuk memasukkan pada saat bersamaan. Kemudian, program meminta anda secara berulang untuk nilai tengah yang dikehendaki, untuk dihitung nilai interpolasinya. Sebuah fitur yang luar biasa dari interpolasi Lagrange adalah bahwa nilai-nilai input awalnya tidak harus berada di urutan, atau spasi sama. Namun, akurasi yang didapatkan biasanya lebih baik dengan jarak seragam. Sebagai latihan, cobalah program pada berikut enam titik yang diberikan: x = sudut dalam derajat 29.43 30.97 27.69 28.11 31.58 33.05 y = sinus 0.491359 8528 0.514 589 1926 0.464 687 5083 0.471 165 8342 0.523 688 5653 0.545 370 7057 Berapa sinus 30°, anda harus mendapatkan persis 0.5. Luar biasa, bahkan untuk nilai-nilai yang jauh, misal x = 0° dan x = 90°, dengan rumus interpolasi Lagrange dilakukan dengan enam titik data menghasilkan nilai-nilai masih cukup baik masing-masing 0.000 0482 dan 1.00 007, nilai yang benar adalah 0 dan 1 tepat. Rumus-rumus (3.13) adalah polinomial derajat n - 1, dan itu adalah polinomial unik dengan derajat yang mengambil nilai-nilai y1, y2, ... , yn untuk x = x1, x2, ..., xn. Tetapi rumus Lagrange memiliki kelemahan, yaitu tidak memberikan indikasi jumlah titik yang dibutuhkan untuk mengamankan tingkat akurasi yang diinginkan. Namun, ketika kita ingin menerapkan interpolasi polinomial secara eksplisit sebagai fungsi dari variabel x daripada membuat interpolasi baru, maka penggunaan rumus Lagrange sangat menguntungkan. Contoh 3.g — Buatlah polinomial orde ke 3 yang (unik) melewati nilai berikut: Dengan mengganti nilai yang diberikan x dan y ke dalam (3.13), kita memperoleh: yang setelah penyederhanaan tereduksi menjadi:
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 34 Bab 4. Pengepasan (Fitting) Kurva Dalam banyak kasus, hasil dari sebagian besar pengamatan adalah serangkaian titik dalam grafik, setiap titik yang didefinisikan oleh nilai-x dan nilai-y. Dari hasil tersebut, kadang diperlukan, untuk menggambarkan melalui titik-titik dengan cara pengepasan (fitting) kurva terbaik. Beberapa kurva dapat dipaskan melalui sekumpulan titik-titik: sebuah garis lurus, eksponensial, polinomial, kurva logaritmik, dan lain-lain Untuk menghindari subyektivitas individu, diperlukan kesepakatan mengenai definisi "pengepasan terbaik" suatu kurva. Anggaplah Gambar 1, di mana data sebanyak N titik yang direpresentasikan oleh (x1, y1), (x2, y2), ... , (xN, yN). Nilai x dalam hal ini adalah eksak atau tepat, sedangkan nilai y merupakan hasil pengukuran, sehingga dimungkinkan adanya kesalahan. Untuk nilai x yang diketahui, katakan x1, di situ akan ada perbedaan antara nilai y1 dengan nilai korelasinya seperti yang ditentukan pada kurva C. Gambar 1 Seperti ditunjukkan pada gambar, kita notasikan perbedaan ini dengan D1. , yang kadangkadang disebut sebagai penyimpangan, kesalahan atau residu dan mungkin positif, negatif atau nol. Demikian pula, berkorelasi dengan nilai-nilai x2, .... xN kita memperoleh deviasi D2, ..., DN. Ukuran dari 'kualitas pengepasan' kurva C berdasar data yang diberikan diperoleh dengan menganalisa kuantitas . Jika nilai ini kecil, maka pengepasan sudah baik, jika nilai tersebut ternyata besar, maka pengepasan masih buruk. Oleh karena itu kita membuat definisi sebagai berikut: dari pendekatan semua kurva diberikan sejumlah data berupa titik-titik, kurva memiliki sifat bahwa adalah minimal, disebut pengepasan kurva terbaik (a best fitting curve). Dalam hal ini berarti penjumlahan dari. Sebuah kurva yang mempunyai sifat seperti ini dikatakan pas dengan data dalam kuadrat terkecil, dan disebut kurva kuadrat terkecil (a least square curve). Seperti yang telah dikatakan di atas, semua nilai variabel independent x dianggap eksak. Tentu saja, memungkinkan juga untuk mendefinisikan kurva kuadrat terkecil lain dengan mempertimbangkan jarak tegak lurus dari setiap titik dengan kurva sebagai ganti jarak vertikal. Namun, hal ini biasanya tidak digunakan. Dalam Bab ini kita akan mempertimbangkan secara prinsip terutama kasus di mana pengepasan kurva terbaik adalah garis lurus, yaitu permasalahan yang disebut regresi linear. Nama 'regresi' mungkin tampak asing, karena dalam perhitungan pengepasan kurva terbaik tidak ada yang 'regresi'! Alt [1] menulis: "Penamaan regresi dikemukan oleh Galton (1822 - 1911), yang membandingkan panjang tubuh orang tua dan anak-anak melalui pengamatan. Secara umum jika ayahnya besar, maka anak laki-lakinya juga besar, meskipun korelasi ini tidak selalu benar, karena besarnya tubuh anak laki-laki sementara itu sedikit lebih kecil dibandingkan dengan ayahnya, tetapi sebaliknya orang tua yang kecil sementara itu mempunyai anak-anak yang sedikit lebih besar. Ketidak-cocokan rata-rata besar tubuh penduduk disebut dengan "Regresi".
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 35 Istilah yang lebih tepat adalah pengepasan kurva (curve fitting), dan dalam kasus garis lurus adalah pengepasan kurva linear. Pengepasan Kurva Linear (regresi linier) Kita ingin menghitung koefisien dari persamaan linier (4.1) menggunakan metode kuadrat terkecil. Kemiringan a dan intersepsi-y yaitu b dapat dihitung dengan cara rumus (4.2) di mana N adalah jumlah titik. Catatan bahwa kedua fraksi memiliki penyebut yang sama. Tanda menunjukkan penjumlahan. Dengan demikian, adalah jumlah dari semua nilai x, jumlah semua nilai y, jumlah kuadrat dari semua nilai x, jumlah perkalian x dan y dari semua pasangan nilai-nilai, dll. Perlu dicatat bahwa tidak sama dengan (jumlah perkalian tidak sama sebagai perkalian dari jumlah), dan tidak sama dengan (kuadrat dari jumlah ini tidak sama dengan penjumlahan kuadrat)! Sebuah aplikasi astronomi yang menarik adalah pencarian hubungan antara kecerlangan intrinsik dari komet dan jaraknya ke Matahari. Magnitudo komet m umumnya dapat diwakili oleh rumus dalam bentuk Di sini, dan r adalah jarak dalam satuan astronomi masing-masing dari komet ke Bumi dan dari komet ke Matahari. Alogaritmanya adalah dengan basis 10. Magnitudo mutlak g dan koefisien harus didapatkan dari hasil pengamatan. Hal ini dapat dilakukan ketika m besarnya telah diukur selama periode yang cukup panjang. Lebih tepatnya, cakupan r harus cukup besar. Untuk setiap nilai m, nilai-nilai dan r harus didapatkan dari ephemeris, atau dihitung dari elemen orbit. Dalam hal ini, yang tidak diketahui adalah g dan . Rumus di atas dapat ditulis dengan: yang merupakan bentuk (4.1), ketika kita menuliskan , dan x = log r. Kuantitas y dapat disebut Magnitudo 'heliosentris', karena pengaruh jarak variabel ke Bumi telah dihilangkan. Contoh 4. a — Tabel 4.A berisi perkiraan magnitudo secara visual, m dari komet Wild 2 (1978b), yang dibuat oleh John Bortle. Nilai-nilai yang berkorelasi r dan telah dihitung dari elemen orbit [2]. Kuantitas x dan y digunakan untuk menghitung jumlah Kita menemukan N = 19 = 4.2805 = 1.0031 = 192.0400 = 43.7943 dari mana, dengan rumus (4.2), a = 13.67 b = 7.03
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 36 Akibatnya, pengepasan garis lurus 'terbaik' sesuai pengamatan adalah y = 13.67 x + 7.03 atau 13.67 log r + 7.03 Oleh karena itu, untuk komet periodik Wild 2 pada tahun 1978, kita dapatkan m = 7.03 + + 13.67 log r TABEL 4.A 1978 UT M r Febr. Maret April Mei Juni 4.01 5.00 9.02 10.02 25.03 7.07 14.03 30.05 3.05 10.06 26.07 1.08 3.07 8.07 26.09 28.09 29.09 2.10 6.09 11.4 11.5 11.5 11.3 11.5 11.5 11.5 11.0 11.1 10.9 10.7 10.6 10.7 10.7 10.8 10.6 10.6 10.5 10.4 1.987 1.981 1.958 1.952 1.865 1.809 1.772 1.693 1.674 1.643 1.582 1.566 1.560 1.545 1.507 1.504 1.503 1.498 1.495 1.249 1.252 1.266 1.270 1.335 1.382 1.415 1.487 1.504 1.532 1.592 1.610 1.617 1.634 1.696 1.703 1.707 1.721 1.736 0.2982 0.2969 0.2918 0.2905 0.2707 0.2574 0.2485 0.2287 0.2238 0.2156 0.1992 0.1948 0.1931 0.1889 0.1781 0.1772 0.1770 0.1755 0.1746 10.92 11.01 10.99 10.78 10.87 10.80 10.75 10.14 10.21 9.97 9.69 9.57 9.66 9.63 9.65 9.44 9.44 9.32 9.20 Koefisien Korelasi Sebuah koefisien korelasi adalah ukuran statistik, yaitu level korelasi antara dua variabel yang berhubungan satu sama lain. Dalam kasus persamaan linier, koefisien korelasi (4.3) Koefisien ini selalu antara 1 dan -1. Sebuah nilai +1 atau -1 akan menunjukkan bahwa kedua variabel tersebut benar-benar berkorelasi, yang akan menunjukkan hubungan linear sempurna, semua titik yang mewakili pasangan nilai-nilai x dan y tepat berada pada garis lurus yang mewakili korelasi ini. Jika r = +1, kenaikan korelasi x terhadap kenaikan y (Gambar 2). Jika r = -1, sekali lagi,
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 37 hal ini merupakan korelasi linear yang sempurna, Tetapi y menurun jika x bertambah (lihat Gambar 3). Ketika r adalah nol, tidak ada hubungan antara x dan y (Gambar 4). Dalam prakteknya, bagaimanapun, jika tidak ada korelasi, orang mungkin akan menemukan bahwa r tidak persis sama dengan nol, karena faktor kebetulan yang umumnya terjadi kecuali untuk jumlah titik yang tak terbatas. Jika | r | adalah antara 0 dan 1, maka ada kecenderungan antara x dan y, meskipun tidak ada korelasi yang ketat (Gambar 5). Di sini, sekali lagi, perlu dicatat bahwa, sebenarnya ada korelasi antara dua variabel; perhitungan akan menghasilkan nilai r tidak persis sama dengan +1 atau -1, dengan alasan adanya ketidakakuratan dalam semua pengukuran/pengamatan. Perlu dicatat bahwa r adalah sebuah kuantitas tidak berdimensi, yaitu, tidak tergantung pada satuan yang digunakan. Gambar 2 Hubungan linear yang sempurna, korelasi positif Gambar 3 Hubungan linear yang sempurna, korelasi negatif Gambar 4 Tidak berkorelasi
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 38 Gambar 5 Berkorelasi sebagian Tanda r hanya menginformasikan kepada kita apakah meningkat atau menurun y saat x bertambah. Kenyataan penting adalah bukan tandanya, tetapi besarnya r karena besarnya ini yang menunjukkan seberapa baik aproksimasi linear dimaksud. Perlu ditekankan bahwa nilai r yang dihitung dalam hal apapun adalah mengukur derajat hubungan relatif terhadap jenis fungsi yang diasumsikan, yaitu persamaan linier. Jadi, jika nilai r muncul yang mendekati nol, artinya tidak ada korelasi linear antara variabel-variabel tersebut. Akan tetapi, tidak selalu berarti bahwa tidak ada korelasi sama sekali, karena sebenarnya ada korelasi tinggi non-linear antara variabel-variabel. Misalnya, anggaplah tujuh titik x -4 -3 -2 -1 0 +1 +2 y -6 -1 +2 +3 +2 -1 -6 Rumus (4.3) menghasilkan r = nol, meskipun titik-titik tersebut terletak persis pada parabola y = 2 - 2x - x 2 (Gambar 6). Hal ini juga harus menunjukkan bahwa koefisien korelasi tinggi (yaitu, dekat +1 atau -1) tidak selalu menunjukkan secara langsung, variabel-variabel tersebut ada ketergantungan fisik. Jadi, jika kita mempertimbangkan jumlah yang cukup besar dari teritori administrasi, Gambar 6 orang dapat memperoleh korelasi tinggi antara jumlah tempat tidur di rumah sakit jiwa dan jumlah antena televisi dari setiap teritori. Korelasi matematika tingkat tinggi, memang, tetapi secara fisik omong kosong. Contoh 4.b— Tabel 4.B memberikan untuk masing-masing dua puluh dua spot Matahari maksimum yang telah terjadi antara tahun 1761-1989, interval waktu x, dalam bulan, sejak spot Matahari sebelumnya minimum, dan ketinggian maksimal y (rata-rata bulanan tertinggi yang sudah diperhalus atau smoothed). dan kemudian, rumus (4.2) dan (4.1), y = 244.18 - 2.49 x (4.4)
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 39 TABEL 4.B Epoch Maksimum X y Epoch Maksimum x y Juni 1761 Okt. 1769 Mei 1778 Nov. 1787 Des. 1804 Maret 1816 Juni 1829 Feb. 1837 Nov. 1847 Juli 1860 Juli 1870 73 38 35 42 78 68 74 42 52 54 39 90.4 125.3 161.8 143.4 52.5 50.8 71.5 152.8 131.3 98.5 144.8 Jan. 1884 Agus. 1893 Okt. 1905 Agus. 1917 Juni 1928 Mei 1937 Juli 1947 Nov. 1957 Feb. 1969 Nov. 1979 Okt. 1989 61 42 49 50 62 44 39 43 54 44 37 78.1 89.5 63.9 112.1 82.0 119.8 161.2 208.4 111.6 167.1 162.1 Persamaan (4.4) merupakan pengepasan garis lurus terbaik yang diberikan dalam 22 titik. Titik-titik tersebut dan garisnya ditunjukkan pada Gambar 7. Dari rumus (4.3) kita menemukan r = -0.767. Hal ini menunjukkan bahwa ada kecenderungan jelas adanya koneksitas, dan tanda negatif r menunjukkan bahwa korelasi antara x dan y adalah negatif: semakin lama durasi kenaikan dari minimum ke maksimum berikutnya dari aktivitas spot Matahari, pada umumnya semakin rendah maksimum ini.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 40 TABEL 4.C Tahun x y Tahun x y Tahun x Y 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 2.7 5.0 24.4 42.0 63.5 53.8 62.0 48.5 43.9 18.6 5.7 3.6 1.4 9.6 47.4 57.1 103.9 80.6 63.6 37.6 26.1 14.2 5.8 16.7 44.3 63.9 69.0 77.8 64.9 35.7 700 762 854 663 912 821 622 678 842 990 741 941 801 877 910 1054 851 848 980 760 417 938 917 849 1075 896 837 882 688 953 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 21.2 11.1 5.7 8.7 36.1 79.7 114.4 109.6 88.8 67.8 47.5 30.6 16.3 9.6 33.2 92.6 151.6 136.3 134.7 83.9 69.4 31.5 13.9 4.4 38.0 141.7 190.2 184.8 159.0 112.3 858 858 738 707 916 763 900 711 928 837 744 841 738 766 745 861 640 792 521 951 878 926 557 741 616 795 801 834 560 962 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 53.9 37.5 27.9 10.2 15.1 47.0 93.8 105.9 105.5 104.5 66.6 68.9 38.0 34.5 15.5 12.6 27.5 92.5 155.4 154.6 140.5 115.9 66.6 45.9 17.9 13.4 29.2 100.2 157.6 142.6 903 862 713 785 1073 1054 707 776 776 727 691 710 690 1039 734 541 855 767 839 913 1016 800 689 931 758 946 908 1005 639 759 Perlu dicatat di sini, bahwa seperti dalam semua studi statistik, sampel harus cukup besar untuk memberikan hasil yang berarti. Sebuah koefisien korelasi mendekati +1 atau -1 tidak memiliki arti fisik jika didasarkan pada jumlah data yang terlalu sedikit. Beberapa kasus koefisien korelasi secara kebetulan dapat cukup besar. Sebagai latihan, tunjukkan bahwa tidak ada korelasi antara curah hujan di Observatorium Uccle, Belgia, dan aktivitas sunspot, menggunakan data dari Tabel 4.C, di mana x = rata-rata tahunan angka sunspot definitif di Zurich,
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 41 y = total curah hujan tahunan di Uccle, dalam milimeter. Jawaban: koefisien korelasi r = -0.064, yang menunjukkan bahwa tidak ada korelasi yang signifikan antara x dan y. Jika kita menghilangkan dua titik terakhir, korelasi (untuk tahun 1901 - 1988) bahkan turun menjadi -0.027. Pengepasan kurva kuadratik Misalkan kita ingin menggambar, melalui serangkaian N titik yang diberikan (x, y), fungsi kuadrat terbaik y = a x 2 + h x + c Ini adalah sebuah parabola dengan sumbu vertikal. Misalkan: P = x Q = x 2 R = x 3 S = x 4 T = y U = x y V = x 2y D = N Q S + 2 P Q R - Q3 - P2 S - N R2 kemudian kita dapakan (4.6) Pengepasan Kurva Umum (regresi linier ganda) Prinsip pengepasan garis lurus terbaik dapat diperluas untuk fungsi lain dan dengan lebih dari dua koefisien linier yang tidak diketahui. Mari kita anggap ada kasus kombinasi linear dari tiga fungsi. Misalkan kita tahu bahwa y = a fo (x) + b f1(x) + c f2(x) di mana fo, f1 dan f2 tiga fungsi diketahui x, tetapi bahwa koefisien a, b dan c tidak diketahui. Lebih lanjut, anggaplah, bahwa nilai y diketahui setidaknya untuk tiga nilai x. Kemudian koefisienkoefisien a, b, c dapat diperoleh sebagai berikut. Hitung jumlah M = fo 2 U = y fo P = fo f1 V = y f1
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 42 Q = fo f2 W = y f2 R = f1 2 S = f1 f2 T = f2 2 Kemudian (4.7) Contoh 4.c — Kita tahu bahwa y dalam bentuk fungsi berikut: y = a sin x + b sin 2x + c sin 3x dan y mempunyai nilai-nilai berikut ini (lihat gambar dan tabel berikut): Carilah nilai-nilai koefisien a, b, c. Kita tinggalkan sebagai latihan bagi pembaca. Fungsinya adalah y = 1.2 sin x - 0.77 sin 2x + 0.39 sin 3x dan diilustrasikan dalam Gambar di atas. Pembaca tidak akan menemukan 1.2, -0.77, dan +0.39 secara eksak, karena dalam tabel nilainilai y diberikan hanya dalam 4 angka desimal. x (derajat) 3 20 34 50 75 88 111 129 143 160 183 200 218 y 0.0433 0.2532 0.3386 0.3560 0.4983 0.7577 1.4585 1.8628 1.8264 1.2431 -0.2043 -1.2431
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 43 230 248 269 290 303 320 344 -1.8422 -1.8726 -1.4889 -0.8372 -0.4377 -0.3640 -0.3508 -0.2126 Mari kita lihat kasus khusus y = a x 2 + b x + c. Di sini kita memiliki fo = x 2 f1 = x f2 = 1 sehingga T = N (jumlah titik yang diberikan) dan Q = R. untuk rumus (4.7) kemudian mereduksi ke (4.5) dan (4.6), dengan notasi-notasi lainnya. Seperti kasus khusus yang lain, pertimbangkan y = a f (x) dengan hanya satu koefisien diketahui. Yang terakhir ini mudah ditemukan dari (4.8) Contoh 4.d — Carilah a untuk pengepasan kurva terbaik melalui titik-titik berikut ini: x : 0 1 2 3 4 5 y : 0 1.2 1.4 1.7 2.1 2.2 Di sini, , kemudian adalah penjumlahan nilai-nilai x secara mudah. Rumus (4.8) menghasilkan: sehingga fungsi yang dicari adalah: Daftar Pustaka 1. Helmut Alt, Angewandte Mathema.tik, Finanz-Mathematik, Statistik, Informatik für UPNRechner, hal. 125 (Vieweg, Braunschweig, 1979). 2. International Astronomical Union Circular No. 3177 (24 Feb 1978).
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 44 Bab 5. Iterasi Iterasi (dari bahasa Latin iterare = mengulang) adalah metode yang berisikan pengulangan melalui perhitungan beberapa kali, sampai nilai dari suatu kuantitas yang tidak diketahui diperoleh. Umumnya, setelah setiap pengulangan perhitungan akan diperoleh hasil yang lebih dekat dengan solusi yang eksak. kita telah melihat penggunaan iterasi dalam Bab 3, untuk memecahkan persamaan (3.6), (3.7), (3.9), (3.10) dan (3.11). Iterasi digunakan, misalnya, ketika tidak ada metode untuk menghitung langsung kuantitas yang tidak diketahui dengan cara yang mudah. Contohnya adalah: Persamaan derajat kelima x 5 + 17x - 8 = 0; Perhitungan waktu awal dan akhir gerhana Matahari, atau okultasi bintang oleh Bulan, di tempat tertentu di permukaan Bumi; Persamaan Kepler E = M + e sin E (lihat Bab 29), dimana E adalah kuantitas yang tidak diketahui. Untuk melakukan iterasi, kita harus mulai dengan nilai perkiraan untuk kuantitas yang tidak diketahui, dan penggunaan harus dibuat dengan rumus, atau kumpulan, dalam rangka untuk memperoleh nilai yang lebih baik untuk sesuatu yang tidak diketahui. Proses ini kemudian diulang (iterasi) sampai tercapai akurasi yang diinginkan. Sebuah contoh klasik adalah perhitungan akar kuadrat sebuah bilangan. Tentu saja, metode ini saat ini tidak menarik lagi (kecuali kasus khusus), karena semua kalkulator saku dan semua bahasa pemrograman sudah memiliki fungsi atau SQR. Perhitungan dilakukan sebagai berikut. Misalkan N menjadi bilangan yang dicari akarnya. Mulailah dengan perkiraan nilai n untuk akar ini, jika tidak diketahui sama sekali, nilai 1 dapat digunakan. Bagilah N dengan n, dan ambillah rata-rata aritmatika dari hasil bagi dan n. Hasilnya adalah nilai yang lebih baik untuk akar kuadrat. Dengan kata lain, nilai yang lebih baik dinyatakan dengan (n + N/n) / 2. Kemudian perhitungan harus diulang. Contoh 5.a — Hitung sampai delapan desimal. Kita tahu kalau 12 12 = 144, seperti yang dilakukan 12 merupakan nilai perkiraan awal akar kuadrat dari 159. Kita bagi 159 dengan 12 dan tempat hasil bagi 13.2500. Rata-rata Aritmatika dari 12 dan 13.2500 adalah 12.6250, nilai ini lebih baik untuk akar kuadrat yang diperlukan. Kita sekarang membagi 159 dengan 12.6250, hasil baginya adalah 12.59406, Rata-rata dari 12.6250 (hasil sebelumnya) dan 12.59406 adalah 12.60953, nilai menjadi semakin lebih baik untuk akar kuadrat. Dengan cara itu, kita menemukan berturut-turut 12 = nilai awal 12.625 000 00 12.609 529 71 12.609 520 22 12.609 520 22 Seperti yang Anda lihat, hasil 12.609 520 22 menghasilkan 12.609 520 22 lagi, jadi ini adalah akar kuadrat yang dicari dari 159.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 45 Contoh 5.b — Hitung (hanya) akar nyata persamaan x 5 + 17x - 8 = 0 (5.1) Karena tidak ada metode atau rumus untuk perhitungan langsung dari akar persamaan derajat kelima, kita akan memiliki jalan lain melalui prosedur iterasi. Dalam persamaan (5.1) kita masukkan ke dalam x 5 bagian kedua dari persamaan dan memecahkan untuk x, ini memberikan: (5.2) Jumlah yang tidak diketahui kini hadir dalam anggota kanan juga, Tetapi tidak masalah, seperti kita lihat. Kita mulai dengan membiarkan x = 0 pada bagian kanan. Rumus (5.2) kemudian menghasilkan x = 8/17 = 0.470 588 235. Nilai ini adalah sudah lebih baik dari x = 0. Kita sekarang menempatkan nilai x = 0.470 588 235 dalam anggota kanan, dan sekarang rumus memberikan x = 0.469 230 684. Setelah empat iterasi lagi, kita memperoleh nilai definitif tertentu, yakni x = 0.469 249 878. Proses iterasi tidak selalu tanpa masalah, namun seperti ditunjukkan dalam contoh berikut : Contoh 5.c — Anggaplah persamaan x 5 + 3x - 8 = 0. Seperti contoh sebelumnya, kita letakkan x 5 di sebelah kanan, dan kita memperoleh: Jika kita mulai di sini dengan x = 0, kita memperoleh hasil berturut-turut: 0.0000 2.6667 -42.2826 45 049099 -6.18 x 1037 dst ... (nilai awal) sehingga dalam kasus ini, metode tersebut tidak bekerja dengan baik! Hasilnya berturutturut berbeda, nilai absolutnya tumbuh semakin besar. Hasilnya menuju ke arah yang salah. Mengapa metode iterasi bekerja dengan baik dalam contoh 5.b, tetapi tidak dalam contoh 5.c? Ketika x terletak antara 0 dan 1, maka x 5 juga berada antara 0 dan 1. Selanjutnya, x 5 lebih kecil dari x. Itulah alasan mengapa dalam contoh 5.b hasil iterasi yang berurutan konvergen ke nilai yang diharapkan, akar dari persamaan. Akar ini terletak di antara 0 dan 1. Tetapi, seperti yang kita lihat, akar persamaan pada contoh 5.c adalah lebih besar dari 1. Jika x > 1, maka x 5 > x > 1 (untuk x = 2, kita memiliki x 5 = 32), dan peningkatan kecil membuat meningkatnya nilai x 5 menjadi sangat besar. Akibatnya, prosedur iterasi, dilakukan dengan cara seperti pada contoh 5.b, tidak bisa menemukan hasil yang diharapkan: nilai-nilai yang berurutan menyimpang. Namun, dimungkinkan untuk mendapatkan jawabannya, pada kondisi yang kita tuliskan rumus iterasi dalam bentuk lain.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 46 Contoh 5.d — Mari kita lagi pertimbangkan persamaan x 5 + 3x - 8 = 0, Tetapi sekarang kita memperhitungkan fakta bahwa akarnya lebih besar dari 1, dan oleh karenanya x 5 > x. Untuk alasan ini, kita tidak meletakkan x 5 ke dalam bagian kanan. Sebaliknya, kita tetap mempertahankan x 5 berada di sebelah kiri, sehingga persamaan menjadi. Mulai lagi dengan x = 0, kita peroleh akarnya setelah 14 iterasi, yaitu x = 1.321 785 627. Dalam contoh 5.b, kita mencari persamaan akar: x 5 + 17x - 8 = 0 Tetapi, kita dapat menuliskan persamaan sebagai: Sekarang kita dapat menggunakan rumus terakhir sebagai pengganti rumus (5.2). Sebagai latihan, pecahkan persamaan ini dengan cara iterasi; anda akan memperoleh hasil yang sama seperti pada contoh 5.b. Jika kita lakukan yang sama untuk persamaan pada contoh 5.c, kita peroleh rumus iterasi: Jika kita mulai lagi dengan menempatkan nilai x = 0 di sebelah kanan, kita peroleh x = 8/3 = 2.666 .... Tetapi kemudian muncul kejutan: setelah beberapa iterasi, melompat berturut tanpa henti hasil berikut 2.666 223 459 ke 0.149 436 927, dan kembali lagi. Seperti yang anda lihat, metode iterasi tidak berhasil dalam semua kasus, banyak tergantung pada bentuk rumus iterasi. Sebagai contoh lain, perhatikan sin = 3 cos . Tempatkan = 0° di bagian kanan tepat menghasilkan sin = 3, yang jelas tidak mungkin. Letakkan sebaliknya, = 90° di bagian kanan memberikan sin = 0, dari mana = 0 dan membawa kita kembali ke kasus pertama. Tetapi jika kita menulis persamaan sebagai cos = (sin ) / 3, kemudian, dimulai dengan = 0°, kita memperoleh solusi = 71°.565 051 setelah beberapa iterasi. Atau perhatikan sin = 2 cos . Solusinya adalah = 30°, karena sin 30° = cos 60°. Jika kita mulai dengan menempatkan = 29° di sebelah kanan dari persamaan, hasil berturut-turut iterasi menyebar/menyimpang. Namun, jika kita menulis persamaan dengan cara, cos 2 = sin , maka hasil berturut-turut ditemukan! Sebagai ilustrasi lebih lanjut dari prosedur iterasi, mari kita pertimbangkan Metode Newton untuk mencari solusi dari suatu persamaan dengan satu tidak diketahui dengan perkiraan berturutan. Misalkan f (x) menjadi fungsi x, dan kita ingin mendapatkan nilai x dengan nilai fungsinya sama dengan nol. Misalkan f'(x) adalah turunan dari fungsi f(x). Jika diasumsikan xn untuk akar X,kemudian hitung nilai yn dari fungsi f(x), dan nilai yn' turunan f''(x), untuk nilai x.
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 47 Nilai yn' adalah kemiringan tangen kurva di titik xn, yn -- lihat gambar di halaman sebelumnya. Kemudian, nilai yang lebih baik untuk kuantitas yang tidak diketahui diberikan sebagai berikut: Perhitungan ini kemudian diulang menggunakan nilai baru x, sampai nilai akhir x tercapai. Dalam prosedur ini, pilihan nilai awal untuk x, bisa menjadi masalah. Sebagai contoh, untuk persamaan x 5 - 3x - 8 = 0, Fungsi turunannya adalah 5 x 4 - 3 dan, jika kita mulai dengan x = 0, kita memperoleh hasil berosilasi: 0.000 000 000 -2.666 666 667 -2.126 929 222 -1.672 392 941 -1.227 532 073 -0.376 965 299 -2.749 036 974 -2.194 266 642 -1.731 201 846 -1.293 218 530 -0.588 844 800 -3.216 865 068 -2.572 967 057 -2.049 930 313 -1.603 831 482 -1.145 086 797 Alasannya adalah fungsi mencapai maksimal untuk x = -0.88, sehingga garis singgung di kedua sisi titik memiliki kemiringan ke arah yang berlawanan. Tetapi jika kita mulai dengan x = 1, maka nilai yang benar (sampai 9 desimal) tercapai setelah 11 iterasi: +1.000 000 000 +6.000 000 000 +4.803 458 391 +3.850 111311 +3.095 824107 +2.510 476 381 +2.080 081 724 +1.807 461730 +1.690 945 284 +1.671102 262 +1.670 579 511 +1.670 579 156 +1.670 579156
Astronomical Algorithm (Algoritma Astronomi) Jean Meeus 48 Test pada "lebih kecil dari" ("smaller than") Jika pada prosedur iterasi yang digunakan orang, haruskah - seperti yang telah disebutkan di atas - mengulangi perhitungan sampai hasilnya tidak lagi bervariasi. Dengan kata lain, selama hasil akhir berbeda dari yang sebelumnya, iterasi baru harus dilakukan. Tetapi di sini kita dihadapkan dengan masalah kecil, karena faktanya memang komputer tidak menghitung secara eksak. Perhatikan persamaan berikut dari derajat ke tiga s 3 + 3s - W = 0 dimana terjadi dalam perhitungan gerakan orbit parabola (lihat Bab 33). W adalah konstan, sedangkan s adalah kuantitas yang tidak diketahui. Persamaan ini dapat diselesaikan dengan iterasi yang sangat mudah. Mulai dari nilai apapun, pilihan yang baik adalah s = 0. Kemudian nilai yang lebih baik untuk s Setelah beberapa iterasi, nilai yang benar dari s diperoleh. Ambil, misalnya, kasus W = 0.9. Perhitungan dilakukan pada HP-85 mikrocomputer memberikan hasil berturut-turut berikut ini: 0.000 000 000 000 0.300 000 000 000 0.291 743 119 266 0.291 724 443 641 0.291 724 443 546 0.291 724 443 548 0.291 724 443 548 dan karena nilai eksak (dengan dua belas signifikan digit) adalah 0.291 724 443 548. Tetapi jika kita mengulangi perhitungan, pada mesin yang sama, untuk W = 1.5, kita punya kejutan: mesin tidak berhenti dan menemukan berturut-turut: 0.000 000 000 000 0.500 000 000 000 0.466 666 666 667 0.466 220 600 162 0.466 220 523 909 0.466 220 523 911 0.466 220 523 910 0.466 220 523 908 0.466 220 523 911 0.466 220 523 910 0.466 220 523 908 dan selamanya ... 911 ... 910 ... 908 Namun, jika kita coba perhitungan ini (untuk W = 1.5) pada dua mesin lain, dan iterasi prosedur mengerucut, Tetapi kemudian tidak mengerucut untuk nilai-nilai W lain.