Teori Latar Belakang yang membantu
Satu fakta kecil yang dapat Anda gunakan untuk membantu memahami apakah turunan numerik dihitung dengan benar atau tidak adalah Cauchy Remainder dari ekspansi Taylor. Itu adalah,
f(x+h)=f(x)+hf′(x)+h22f′′(ξ) untuk beberapaξ∈[x,x+h]
Ini membantu, karena Anda mungkin memperkirakan turunan pertama Anda oleh
f′(x)≈f(x+h)−f(x−h)2h
dengan beberapa kecil (saya biasanya menggunakan , tapi saya yakin suatu hari saya akan menemukan kasus di mana itu tidak sesuai).h10−4
Setelah aljabar kecil, kita dapat menggunakan sisa Cauchy untuk melihat bahwa pendekatan numerik kita secara teoritis harus dalam dari .hf′′(ξ),ξ∈[x−h,x+h]f′(x)
Bahkan, Anda dapat mengikatnya dengan , di mana dan ... yang setara dengan , .h(f′′(ξ1)−f′′(ξ2))ξ1∈[x−h,x]ξ2∈[x,x+h]h2f′′′(ξ)ξ∈[x−h,x+h]
Masalah dalam Praktek
Oke, kami punya teori bagus yang membatasi kesalahan turunan numerik. Tetapi ada dua lubang dalam mencoba secara langsung untuk menggunakan hasil tersebut:
1.) Kami tidak tahu (dan mungkin tidak ingin menghabiskan waktu untuk memperkirakannya)f′′′(x)
2.) karena , menderita ketidakstabilan angkah→0f(x+h)−f(x−h)2h
Jadi dengan menggunakan apa yang kita ketahui dari awal cara saya memeriksa turunan analitik saya (yang mungkin bukan cara terbaik) adalah saya menulis fungsi turunan numerik sebagai fungsi dari . Jika saya tidak tahu apakah perbedaan antara turunan numerik dan analitik disebabkan oleh kesalahan pengkodean atau hanya perkiraan numerik, saya dapat mengurangi dan melihat apakah turunan numerik saya mendekati turunan analitik saya sebelum menderita ketidakstabilan angka (ketika ini terjadi, perkiraan numerik Anda akan menjadi kurang konsisten karena semakin kecil). Perhatikan bahwa istilah harus menghilang secara kuadrat, jadi jika kesalahan saya sekitar denganhhhf′′′(ξ)0.01h=10−4 , seharusnya sekitar dengan dengan asumsi ketidakstabilan numerik belum muncul .0.0001h=10−5
Sayangnya, tidak ada pedoman yang keras dan cepat untuk selalu menentukan hal-hal ini; itu sangat tergantung pada seberapa stabil fungsi itu (dan maksud saya baik dalam hal stabilitas numerik dan turunan yang lebih tinggi). Tetapi dalam pengalaman saya, saya belum pernah melihat kasus di mana kesalahan dari tidak secara definitif mencapai 0 (yaitu menggunakan memberikan jawaban yang hampir sama dengan ) pada saat ketidakstabilan angka dari menendang.h2f′′′(ξ)h=10−4h=10−5h→0