คำถามเกี่ยวกับฟังก์ชั่นข้อผิดพลาดเสริม
erfc(x)=2π−−√∫∞xexp(−t2)dt
สำหรับค่า "ใหญ่" ของ (ในคำถามเดิม) - นั่นคือระหว่าง 100 ถึง 700,000 หรือมากกว่านั้น (ในทางปฏิบัติค่าใด ๆ ที่มากกว่า 6 ควรได้รับการพิจารณาว่า "ใหญ่" อย่างที่เราเห็น) โปรดทราบว่าเนื่องจากสิ่งนี้จะถูกใช้เพื่อคำนวณค่า p จึงมีค่าน้อยในการได้รับตัวเลขทศนิยม (ทศนิยม) มากกว่าสามหลัก .= n / √x=n/2–√
ในการเริ่มต้นให้พิจารณาการประมาณที่แนะนำโดย @Iterator
f(x)=1−1−exp(−x2(4+ax2π+ax2))−−−−−−−−−−−−−−−−−−−−−−√,
ที่ไหน
a=8(π−3)3(4−π)≈0.439862.
แม้ว่านี่จะเป็นประมาณที่ยอดเยี่ยมกับการทำงานผิดพลาดของตัวเองก็เป็นประมาณเลวร้ายไป{} อย่างไรก็ตามมีวิธีแก้ไขอย่างเป็นระบบerfc
สำหรับค่า p ที่เชื่อมโยงกับค่าขนาดใหญ่ของเราสนใจข้อผิดพลาดสัมพัทธ์ : เราหวังว่าค่าสัมบูรณ์ของมันจะน้อยกว่า 0.001 สำหรับสามค่านัยสำคัญ ตัวเลขของความแม่นยำ น่าเสียดายที่นิพจน์นี้ยากที่จะศึกษาสำหรับขนาดใหญ่เนื่องจากอันเดอร์โฟลในการคำนวณความแม่นยำสองเท่า นี่คือความพยายามหนึ่งครั้งที่จะแปลงข้อผิดพลาดสัมพัทธ์กับสำหรับ :x x x 0 ≤ x ≤ 5.8f(x)/erfc(x)−1xx0≤x≤5.8
การคำนวณจะไม่เสถียรเมื่อเกิน 5.3 หรือมากกว่านั้นและไม่สามารถส่งหนึ่งหลักที่สำคัญผ่านมา 5.8 นี่ไม่ใช่เรื่องแปลก:กำลังผลักดันข้อ จำกัด ของเลขคณิตความแม่นยำสองเท่า เนื่องจากไม่มีหลักฐานว่าข้อผิดพลาดสัมพัทธ์จะเป็นที่ยอมรับได้เล็กสำหรับใหญ่กว่าเราต้องทำดีกว่าประสบการณ์( - 5.8 2 ) ≈ 10 - 14.6 xxexp(−5.82)≈10−14.6x
ทำการคำนวณในแบบเลขคณิตขยาย (ด้วยMathematica ) ปรับปรุงรูปภาพของสิ่งที่เกิดขึ้น:
ข้อผิดพลาดเพิ่มขึ้นอย่างรวดเร็วด้วยและไม่แสดงอาการของการปรับระดับ ที่ผ่านมาหรือมากกว่านั้นการประมาณนี้ไม่ได้ให้ข้อมูลที่เชื่อถือได้เพียงหลักเดียว!x = 10xx=10
อย่างไรก็ตามพล็อตกำลังเริ่มดูเป็นเส้นตรง เราอาจจะคาดเดาว่าความผิดพลาดเป็นสัดส่วนโดยตรงกับx(สิ่งนี้สมเหตุสมผลในเชิงทฤษฎี:เป็นฟังก์ชันแปลก ๆ และก็ชัดแจ้งดังนั้นอัตราส่วนของพวกเขาควรจะเป็นฟังก์ชันแปลกดังนั้นเราคาดว่าข้อผิดพลาดสัมพัทธ์ถ้ามันเพิ่มขึ้นจะทำตัวเหมือน อำนาจคี่ .) นำไปสู่การนี้เราจะศึกษาข้อผิดพลาดญาติหารด้วย xเท่ากันฉันเลือกที่จะตรวจสอบเพราะความหวังคือสิ่งนี้ควรมีค่า จำกัด คงที่ นี่คือกราฟ:erfcxerfcx x x ⋅ erfc ( x ) / f ( x )fx xx⋅erfc(x)/f(x)
การคาดเดาของเราดูเหมือนจะถูกนำออกมา: อัตราส่วนนี้ดูเหมือนจะใกล้ถึงขีด จำกัด ประมาณ 8 หรือมากกว่านั้น เมื่อถูกถามMathematicaจะจัดหา:
a1 = Limit[x (Erfc[x]/f[x]), x -> \[Infinity]]
ค่าเป็น7.94325 สิ่งนี้ช่วยให้เราสามารถปรับปรุงการประมาณการ:เราใช้a1=2π√e3(−4+π)28(−3+π)≈7.94325
f1(x)=f(x)a1x
เป็นการปรับแต่งครั้งแรกของการประมาณ เมื่อใหญ่จริงๆ - มากกว่าสองสามพัน - การประมาณนี้ค่อนข้างดี เนื่องจากมันยังคงไม่ดีพอสำหรับช่วงของการขัดแย้งที่น่าสนใจระหว่างและหรือมากกว่านั้นลองทำซ้ำขั้นตอน เวลานี้ข้อผิดพลาดที่เกี่ยวข้องแบบผกผัน - โดยเฉพาะนิพจน์ควรทำตัวเหมือนสำหรับขนาดใหญ่ (โดยอาศัยการพิจารณาความเท่าเทียมกันก่อนหน้านี้) . ดังนั้นเราคูณด้วยและหาข้อ จำกัด ต่อไป:5.3 2000 1 - erfc ( x ) / f 1 ( x ) 1 / x 2 x x 2x5.320001−erfc(x)/f1(x)1/x2xx2
a2 = Limit[x^2 (a1 - x (Erfc[x]/f[x])), x -> \[Infinity]]
ค่าคือ
a2=132π−−√e3(−4+π)28(−3+π)(32−9(−4+π)3π(−3+π)2)≈114.687.
กระบวนการนี้สามารถดำเนินต่อไปตราบเท่าที่เราต้องการ ฉันเอามันออกไปอีกหนึ่งขั้นตอนเพื่อค้นหา
a3 = Limit[x^2 (a2 - x^2 (a1 - x (Erfc[x]/f[x]))), x -> \[Infinity]]
มีค่าประมาณ 1623.67 (นิพจน์แบบเต็มเกี่ยวข้องกับฟังก์ชันเหตุผลแปดองศาของและยาวเกินกว่าจะเป็นประโยชน์ได้ที่นี่)π
การยกเลิกการดำเนินการเหล่านี้ทำให้เราประมาณค่าขั้นสุดท้าย
f3(x)=f(x)(a1−a2/x2+a3/x4)/x.
ข้อผิดพลาดเป็นสัดส่วน6} การนำเข้าเป็นค่าคงที่ของสัดส่วนดังนั้นเราจึงวางแผน :x−6x6(1−erfc(x)/f3(x))
มันเข้าใกล้ค่า จำกัด อย่างรวดเร็วประมาณ 2,660.59 เมื่อใช้การประมาณเราจะได้ค่าประมาณของซึ่งความแม่นยำสัมพัทธ์ดีกว่าสำหรับทั้งหมด เมื่อเกิน 20 หรือมากกว่านั้นเรามีเลขนัยสำคัญสามตัวของเรา (หรือมากกว่านั้นเมื่อใหญ่ขึ้น) นี่คือตารางเปรียบเทียบค่าที่ถูกต้องกับการประมาณสำหรับระหว่างและ :f3erfc(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
ในความเป็นจริงการประมาณนี้ให้ความแม่นยำอย่างน้อยสองตัวเลขที่สำคัญสำหรับซึ่งเป็นเพียงการประมาณที่การคำนวณทางเดินเท้า (เช่นฟังก์ชั่นของ Excel ) หายไปx=8NormSDist
ในที่สุดคนหนึ่งอาจจะกังวลเกี่ยวกับความสามารถของเราในการคำนวณเบื้องต้นประมาณฉอย่างไรก็ตามนั่นไม่ใช่เรื่องยาก: เมื่อมีขนาดใหญ่พอที่จะทำให้เกิดอันเดอร์โฟล์ในเอ็กซ์โพเนนเชียลรากที่สองจะประมาณครึ่งหนึ่งด้วยเลขชี้กำลังfx
f(x)≈12exp(−x2(4+ax2π+ax2)).
การคำนวณลอการิทึมของเรื่องนี้ (ในฐาน 10) นั้นง่ายและพร้อมให้ผลลัพธ์ที่ต้องการ ตัวอย่างเช่นสมมติxลอการิทึมสามัญของการประมาณนี้คือx=1000
log10(f(x))≈(−10002(4+a⋅10002π+a⋅10002)−log(2))/log(10)∼−434295.63047.
อัตราผลตอบแทนทวีคูณ
f(1000)≈2.34169⋅10−434296.
การใช้การแก้ไข (ใน ) สร้างf3
erfc(1000)≈1.86003 70486 32328⋅10−434298.
โปรดทราบว่าการแก้ไขจะลดการประมาณดั้งเดิมลงมากกว่า 99% (และแน่นอน .) (การประมาณนี้แตกต่างจากค่าที่ถูกต้องเฉพาะในหลักสุดท้ายการประมาณที่รู้จักกันดี , เท่ากับ , ทำผิดพลาดในตัวเลขนัยสำคัญที่หกฉันแน่ใจว่าเราสามารถปรับปรุงมันได้เช่นกันถ้าเรา ต้องการโดยใช้เทคนิคเดียวกัน)a1/x≈1%1.860038⋅10 - 434298exp(−x2)/(xπ−−√)1.860038⋅10−434298