Gambaran
Pertanyaan bagus. Ada sebuah makalah yang berjudul "Meningkatkan akurasi metode diferensiasi matriks untuk titik kolokasi sewenang-wenang" oleh R. Baltensperger. Ini bukan masalah besar menurut saya, tetapi ada benarnya (yang sudah diketahui sebelum penampilan pada tahun 2000): ini menekankan pentingnya representasi akurat dari fakta bahwa turunan dari fungsi konstan f( x ) = 1 harus menjadi nol (ini berlaku persis dalam arti matematika, tetapi tidak harus dalam representasi numerik).
Sangat mudah untuk melihat bahwa ini membutuhkan jumlah baris dari matriks turunan ke-n D( n ) menjadi nol. Hal ini umum untuk menegakkan kendala ini dengan menyesuaikan entri diagonal, yaitu dengan menetapkan D( n )j j: = - Âi = 1i ≠ jNDsaya j.(1)
Jelas bahwa fitur ini tidak berlaku ketika bekerja pada komputer karena kesalahan pembulatan dalam perhitungan floating point. Apa yang lebih mengejutkan adalah bahwa kesalahan ini bahkan lebih parah ketika menggunakan rumus analitik untuk matriks turunan (yang tersedia untuk banyak titik kolokasi klasik, misalnya Gauss-Lobatto).
Sekarang, makalah (dan referensi di dalamnya) menyatakan bahwa kesalahan turunan adalah dalam urutan penyimpangan dari jumlah baris dari nol. Karena itu tujuannya adalah untuk membuat angka-angka ini sekecil mungkin.
Tes numerik
Poin baiknya adalah prosedur Fornberg tampaknya cukup bagus dalam hal ini. Pada gambar di bawah ini saya telah membandingkan perilaku yang tepat, yaitu analitik, matriks turunan pertama dan yang diturunkan oleh algoritma Fornberg, untuk jumlah titik kolokasi Chebyshev-Lobatto yang bervariasi.
Sekali lagi, meyakini pernyataan dalam makalah yang dikutip, ini menyiratkan bahwa algoritma Fornberg akan menghasilkan hasil yang lebih akurat untuk turunannya.
Untuk membuktikannya, saya akan menggunakan fungsi yang sama seperti di kertas,
f( x ) = 11 + x2.(2)
En= maksi ∈ { 0 , … , n }∣∣∣f′( xsaya) - ∑j = 1nDsaya jf( xj) ∣∣∣.(3)
D~j j= Dj j- ( ∑i = 1nDj i) ,untuk semua j .(4)
Kesimpulan
Kesimpulannya, metode Fornberg tampaknya cukup akurat, dalam kasus bahkan sekitar 3 urutan besarnya lebih akurat daripada hasil dari rumus analitik. Ini harus cukup akurat untuk sebagian besar aplikasi. Selain itu, ini luar biasa karena Fornberg tampaknya tidak secara eksplisit memasukkan fakta ini dalam metodenya (setidaknya tidak disebutkan dalam dua makalah Fornberg).N= 512
Urutan besar lainnya dapat diperoleh untuk contoh ini melalui penyertaan langsung Persamaan (4). Karena ini adalah pendekatan yang cukup sederhana dan hanya diterapkan sekali untuk setiap turunan, saya tidak melihat alasan untuk tidak menggunakannya.
Metode dari makalah Baltensperger - yang menggunakan pendekatan yang lebih canggih untuk mengevaluasi jumlah dalam Persamaan (1) untuk mengurangi kesalahan pembulatan - menghasilkan sekitar urutan yang sama besarnya untuk kesalahan. Jadi, setidaknya untuk contoh ini, kira-kira setara dengan metode "Adjusted Fornberg" di atas.