- Chebyshev approximation calculator adalah alat yang menghasilkan kode aproksimasi fungsi matematika di web
- Pengguna dapat menentukan fungsi yang akan diaproksimasi, interval, dan jumlah suku melalui
f(x),x min,x max, danTerms - Opsi
Match x min x maxdan area Coefficients menyediakan alur untuk memeriksa atau menyesuaikan batas interval dan nilai koefisien - Di area Generated code, hasil perhitungan ditampilkan dalam bentuk kode; pada layar contoh terlihat koefisien dari
c0hinggac10 - Karena terhubung dengan repositori GitHub, pengguna dapat memeriksa langsung kode implementasi alat web ini
Generator kode aproksimasi Chebyshev
- Chebyshev approximation calculator menghasilkan kode untuk mengaproksimasi fungsi matematika secara efisien
- Kondisi aproksimasi dimasukkan melalui UI web
f(x): fungsi yang akan diaproksimasix min: nilai minimum intervalx max: nilai maksimum intervalTerms: jumlah suku yang digunakanMatch x min x max: opsi yang terkait dengan batas interval
Pemeriksaan koefisien dan kode yang dihasilkan
- Layar dibagi menjadi area Coefficients dan Generated code
- Koefisien yang ditampilkan sebagai contoh dapat diperiksa dari
c0hinggac10c0 = 0.16793649417016518c1 = -0.12411164956092625c2 = -0.09756341588422193c3 = 0.1800765790518846c4 = -0.06972963647223016c5 = -0.09250127939333941c6 = 0.18076946080324185c7 = 0.15990613621816677c8 = -0.028659588693985123c9 = -0.09494966104347571c10 = -0.04980429834982578
- Di layar juga ditampilkan item koefisien dari
c11hinggac39
Repositori kode
- Repositori GitHub terkait: stuffmatic/chebyshev-calculator
1 komentar
Komentar Hacker News
Keren. Sekitar tahun 1974 saya pernah dibayar untuk menulis fungsi yang menghitung akar kuadrat dalam assembly IBM 360
Itu tahun terakhir saya sebagai mahasiswa S1, dan saya diminta membuatnya seefisien mungkin. Masukannya saya skala ke antara 0 dan 1, lalu untuk tebakan awal saya memakai aproksimasi Chebyshev, kemudian menerapkan 2 atau 3 iterasi metode Newton yang di-unroll untuk mendapatkan hasilnya. Itu adalah penghasilan pertama saya dari menulis kode
Dibuat dengan sangat baik. Saya jadi terpikat dengan betapa efisiennya aproksimasi seperti ini, dan jadi jauh lebih paham mengapa implementasi fungsi trigonometri atau fungsi matematika lain di komputer 8-bit dulu sering dilakukan dengan cara seperti itu
Ada juga dokumen asli yang keren dari BBC Research Department tahun 1969 yang membahas mengapa pendekatan ini sangat bagus: https://downloads.bbc.co.uk/rd/pubs/reports/1969-10.pdf
Kalau selama ini hanya pernah melihat aproksimasi Taylor, ini bisa terlihat seperti sihir pada awalnya
Dulu saya pernah mendapat hasil yang bagus dengan Sollya: https://www.sollya.org/
Hanya saja, meskipun hasilnya bagus, perangkat lunaknya sendiri agak merepotkan untuk dipakai
Jika
Math.sin(x)/x, yaitu fungsi sinc, diaproksimasi pada interval[-3,3]dengan 7 suku, maka koefisienc0...c6semuanya menjadiNaN. Apakah ini bug?Sebagai solusi sementara saya memaksa kasus saat
xmendekati 0 menjadi1.0sajaif(Math.abs(x) > 1e-8 ){ Math.sin(x)/x } else { 1.0 }x_j = (xmin) + (xmax - xmin)/2(1 + cos(pi[0..j-1]/(j-1))untuk mendapatkan koefisien Chebyshev, dan jika salah satunya tepat 0 maka ia akan menghitungMath.sin(0)/0, yang menghasilkanNaNJalan memutar lainnya adalah memakai rentang yang sedikit tidak simetris seperti
[-3,+3.0000001]x=0, dan sepertinya kode aproksimasinya tersandung di situ. Agak disayangkan jugaPolinomial Chebyshev terlalu kuat dan serbaguna untuk aproksimasi; orang-orang sampai terlalu menyukainya, mengira ini seperti curang, lalu malah tidak memakainya
Chebyshev seharusnya menjadi metode pertama yang dicoba. Jaringan saraf sebaiknya jadi pilihan terakhir
Luar biasa. Belakangan ini saya ingin melakukan hal seperti ini, tetapi ternyata sangat sulit mencari kode untuk menghitung aproksimasi
Saya sudah menandainya untuk dipakai nanti saat perlu mengaproksimasi fungsi dengan cepat
Chebyshev terasa seperti ilmu hitam. Bahkan setelah melihat penurunannya di kelas pascasarjana pun rasanya masih begitu
Chebfun dari Nick Trefethen dan yang lain juga wajib disebut. Itu adalah alat yang memperluas ide ini ke hampir semua arah yang bisa dibayangkan
Chebfunsbisa dianggap sebagai padanan fungsi dari bilangan floating-point terhadap bilangan matematis nyata. Perangkat lunak yang sangat mengesankanhttps://www.chebfun.org
Ini membuka berbagai kemungkinan, misalnya mencari solusi persamaan diferensial-aljabar hingga presisi mesin, atau mencari minimum/maksimum global fungsi satu dimensi
Setahu saya sekarang mereka memakai algoritme lain, tetapi metodologi dasar yang dulu dipakai Chebfun bisa dilihat di bab 6 buku Trefethen
Spectral Methods in Matlab. Metode terbaru yang memakai fungsi ultrasferis dijelaskan dalam makalah SIAM Review oleh Olver dan Townsend,A Fast and Well-Conditioned Spectral MethodSaya penasaran, semoga tidak apa-apa bertanya di sini. Dulu saya menonton video yang mengatakan bahwa Nintendo 64 tidak punya kemampuan menghitung fungsi sinus, jadi ia memakai tabel lookup dari 0 sampai 2π, dan juga ada trik cerdas untuk mengecilkan ukuran tabelnya
Apakah mungkin melatih jaringan saraf lalu menyimpan bobotnya, atau membuat fungsi dan menyimpan koefisiennya, untuk menghitung sinus dan cosinus?
Jika ada sedikit sisa siklus CPU, Anda bisa memakai aproksimasi hibrida: ambil nilai dari tabel lookup kasar sebagai tebakan awal lalu lakukan beberapa iterasi teknik aproksimasi numerik. Atau, seperti di tulisan utama, simpan saja beberapa koefisien awal dari aproksimasi polinomial
Jaringan saraf bisa berguna jika Anda punya sampel suatu fungsi tetapi tidak tahu cara mengaproksimasinya; di sini bukan itu kasusnya
Jaringan saraf adalah solusi hebat ketika Anda harus mengevaluasi sesuatu yang tidak mudah dianalisis secara matematis, tetapi teknik yang sudah diketahui untuk menghitung dan mengaproksimasi fungsi trigonometri sudah sangat banyak
Melatih jaringan saraf untuk menghitung sinus itu seperti versi matematis dari memakai LLM untuk membalik string. Bisa saja dilakukan, tetapi itu ide yang biasanya muncul hanya kalau Anda tidak tahu bahwa masalah itu pada dasarnya sudah terselesaikan dengan pendekatan yang lebih langsung
Sebelum memakai teknik AI/ML, selalu ada gunanya mengecek apakah para matematikawan sudah punya solusinya. Zaman sekarang kemungkinan besar banyak usaha dihabiskan untuk menempelkan AI/ML pada masalah yang sebenarnya sudah punya solusi yang dikenal, efisien, bahkan optimal—hanya saja pengembangnya belum tahu
Kekuatan utama jaringan saraf baru terasa ketika jumlah masukannya sangat banyak, bukan hanya beberapa. Untuk kasus sederhana seperti
sin(x), ada metode lain seperti alat yang dibagikan di siniSangat keren. Karena iseng, saya ingin melihat seberapa cepat saya bisa membuat fungsi yang sulit diaproksimasi dengan baik
Sejauh ini
Math.cos(x * Math.exp(Math.cos(x * x)))adalah yang paling berhasil. Komposisinya banyak, jadi muncul osilasi cepat dan gradien curam, sehingga sulit diaproksimasi dengan mudah memakai Chebyshev