Pertanyaannya menyangkut fungsi kesalahan komplementer
erfc(x)=2π−−√∫∞xexp(−t2)dt
untuk nilai "besar" ( = n / √x dalam pertanyaan asli) - yaitu, antara 100 dan 700.000 atau lebih. (Dalam praktiknya, nilai apa pun yang lebih besar dari sekitar 6 harus dianggap "besar," seperti yang akan kita lihat.) Perhatikan bahwa karena ini akan digunakan untuk menghitung nilai-p, ada sedikit nilai dalam memperoleh lebih dari tiga digit signifikan (desimal) .=n/2–√
Untuk memulai, pertimbangkan perkiraan yang disarankan oleh @Iterator,
f( x ) = 1 - 1 - exp( - x2( 4 + a x2π+ a x2) )----------------------√,
dimana
a = 8 ( π- 3 )3(4−π)≈0.439862.
Meskipun ini merupakan perkiraan yang sangat baik untuk fungsi kesalahan itu sendiri, ini merupakan perkiraan yang mengerikan untuk . Namun, ada cara untuk memperbaikinya secara sistematis.erfc
Untuk nilai-p yang terkait dengan nilai sedemikian besar , kami tertarik pada kesalahan relatif f ( x ) / erfc ( x ) - 1 : kami berharap nilai absolutnya akan kurang dari 0,001 untuk tiga digit presisi yang signifikan. Sayangnya ungkapan ini sulit dipelajari untuk x besarx f(x)/erfc(x)−1x karena arus bawah dalam perhitungan presisi ganda. Berikut adalah satu upaya, yang menggambarkan kesalahan relatif versus untuk 0 ≤ x ≤ 5.8 :x0≤x≤5.8
Perhitungan menjadi tidak stabil setelah melebihi 5,3 atau lebih dan tidak dapat memberikan satu digit signifikan melewati 5,8. Ini tidak mengherankan: exp ( - 5.8x mendorong batas-batas aritmatika presisi ganda. Karena tidak ada bukti bahwa kesalahan relatif akan menjadi kecil untuk x yang lebih besar, kita perlu melakukan yang lebih baik.exp(−5.82)≈10−14.6x
Melakukan perhitungan dalam aritmatika diperpanjang (dengan Mathematica ) meningkatkan gambaran kita tentang apa yang terjadi:
Kesalahan meningkat dengan cepat dengan dan tidak menunjukkan tanda-tanda leveling off. Melewati x = 10 atau lebih, perkiraan ini bahkan tidak memberikan satu digit informasi yang dapat diandalkan!xx=10
Namun, alurnya mulai terlihat linier. Kami mungkin menduga bahwa kesalahan relatif berbanding lurus dengan . (Ini masuk akal dengan alasan teoritis: erfc secara nyata merupakan fungsi yang ganjil dan f adalah bahkan secara nyata, sehingga rasio mereka seharusnya merupakan fungsi yang ganjil. Dengan demikian kita akan mengharapkan kesalahan relatif, jika meningkat, untuk berperilaku seperti kekuatan aneh x .) Ini menuntun kita untuk mempelajari kesalahan relatif dibagi x . Setara, saya memilih untuk memeriksa x ⋅ erfc ( x ) / f ( x )xerfcfx xx⋅erfc(x)/f(x), karena harapannya adalah ini harus memiliki nilai pembatas yang konstan. Ini grafiknya:
Dugaan kami tampaknya terbukti: rasio ini tampaknya mendekati batas sekitar 8 atau lebih. Ketika ditanya, Mathematica akan menyediakannya:
a1 = Limit[x (Erfc[x]/f[x]), x -> \[Infinity]]
Nilainya adalah . Ini memungkinkan kami untuk meningkatkan taksiran:kami ambila1=2π√e3(−4+π)28(−3+π)≈7.94325
f1(x)=f(x)a1x
sebagai penyempurnaan pertama aproksimasi. Ketika benar-benar besar - lebih besar dari beberapa ribu - perkiraan ini baik-baik saja. Karena itu masih tidak akan cukup baik untuk berbagai argumen yang menarik antara 5,3 dan 2000 atau lebih, mari kita beralih prosedur. Kali ini, kesalahan relatif terbalik - khususnya, ekspresi 1 - erfc ( x ) / f 1 ( x ) - harus berperilaku seperti 1 / x 2 untuk x besar (berdasarkan pertimbangan paritas sebelumnya). Dengan demikian, kita kalikan dengan x 2x5.320001−erfc(x)/f1(x)1/x2xx2 dan temukan batas selanjutnya:
a2 = Limit[x^2 (a1 - x (Erfc[x]/f[x])), x -> \[Infinity]]
Nilainya adalah
a2=132π−−√e3(−4+π)28(−3+π)(32−9(−4+π)3π(−3+π)2)≈114.687.
Proses ini dapat berlangsung selama yang kita mau. Saya mengambilnya satu langkah lagi, menemukan
a3 = Limit[x^2 (a2 - x^2 (a1 - x (Erfc[x]/f[x]))), x -> \[Infinity]]
dengan nilai sekitar 1623.67. (Ekspresi penuh melibatkan fungsi rasional tingkat delapan dari dan terlalu lama untuk berguna di sini.)π
Mengurai operasi ini menghasilkan perkiraan akhir kami
f3(x)=f(x)(a1−a2/x2+a3/x4)/x.
Kesalahan sebanding dengan . Impor adalah konstanta proporsionalitas, jadi kami memplot x 6 ( 1 - erfc ( x ) / f 3 ( x ) ) :x−6x6(1−erfc(x)/f3(x))
Dengan cepat mendekati nilai pembatas sekitar 2660.59. Dengan menggunakan perkiraan , kami memperoleh estimasi erfc ( x ) yang akurasi relatifnya lebih baik dari 2661 / x 6 untuk semua x > 0 . Setelah x melebihi 20 atau lebih, kita memiliki tiga digit signifikan (atau lebih, karena x semakin besar). Sebagai tanda centang, berikut adalah tabel yang membandingkan nilai yang benar dengan perkiraan untuk x antara 10 dan 20f3erfc(x)2661/x6x>0xxx1020 :
x Erfc Approximation
10 2.088*10^-45 2.094*10^-45
11 1.441*10^-54 1.443*10^-54
12 1.356*10^-64 1.357*10^-64
13 1.740*10^-75 1.741*10^-75
14 3.037*10^-87 3.038*10^-87
15 7.213*10^-100 7.215*10^-100
16 2.328*10^-113 2.329*10^-113
17 1.021*10^-127 1.021*10^-127
18 6.082*10^-143 6.083*10^-143
19 4.918*10^-159 4.918*10^-159
20 5.396*10^-176 5.396*10^-176
Bahkan, perkiraan ini memberikan setidaknya dua angka presisi yang signifikan untuk pada, yang hanya tentang di mana perhitungan pejalan kaki (sepertifungsiExcel) peter out.x=8NormSDist
Akhirnya, orang mungkin khawatir tentang kemampuan kita untuk menghitung perkiraan awal . Namun, itu tidak sulit: ketika x cukup besar untuk menyebabkan arus bawah dalam eksponensial, akar kuadrat diperkirakan hampir separuh eksponensial,fx
f(x)≈12exp(−x2(4+ax2π+ax2)).
x=1000 . Logaritma umum dari pendekatan ini adalah
log10(f(x))≈(−10002(4+a⋅10002π+a⋅10002)−log(2))/log(10)∼−434295.63047.
Hasil yang eksponensial
f(1000)≈2.34169⋅10−434296.
f3
erfc(1000)≈1.86003 70486 32328⋅10−434298.
a1/x≈1%exp(−x2)/(xπ−−√)1.860038⋅10−434298