อ่าน 9 นาที
เครื่องเอปซิลอน
ค่า เอปซิลอนของเครื่อง หรือ ความแม่นยำของเครื่อง คือขอบเขตบนของ ข้อผิดพลาดในการประมาณ ค่าสัมพัทธ์ เนื่องจาก การปัดเศษ ในระบบเลข ทศนิยม ค่านี้ใช้ในการกำหนด...
เครื่องเอปซิลอน
ค่า เอปซิลอนของเครื่องหรือความแม่นยำของเครื่องคือขอบเขตบนของข้อผิดพลาดในการประมาณ ค่าสัมพัทธ์ เนื่องจากการปัดเศษในระบบเลขทศนิยม ค่านี้ใช้ในการกำหนด ลักษณะทางคณิตศาสตร์ของคอมพิวเตอร์ในสาขาการวิเคราะห์เชิงตัวเลขและโดยนัยเดียวกันในสาขาวิทยาการคำนวณปริมาณนี้เรียกอีกอย่างว่ามาเชปส์และมีสัญลักษณ์คือเอปซิลอน ของ กรีก
มีคำจำกัดความที่ใช้กันอย่างแพร่หลายอยู่สองแบบ ซึ่งในที่นี้จะเรียกว่าเอปซิลอนเครื่องปัดเศษหรือคำจำกัดความเชิงรูปแบบและเอปซิลอนเครื่องช่วงหรือคำจำกัดความกระแสหลัก
ตามความหมายทั่วไปค่าเอปซิลอนของเครื่องนั้นไม่ขึ้นอยู่กับวิธีการปัดเศษ และถูกกำหนดอย่างง่ายๆ ว่าเป็นผลต่างระหว่าง 1 กับจำนวนทศนิยมที่มากกว่าถัดไป
ในนิยามอย่างเป็นทางการค่าเอปซิลอนของเครื่องจะขึ้นอยู่กับประเภทของการปัดเศษที่ใช้ และเรียกอีกอย่างว่าค่าปัดเศษตามหน่วยซึ่งมีสัญลักษณ์เป็นตัวอักษรโรมันตัวหนา
โดยทั่วไปแล้ว สองคำนี้มีความแตกต่างกันเพียงสองเท่า โดยคำจำกัดความอย่างเป็นทางการจะให้ค่าเอปซิลอนที่มีขนาดครึ่งหนึ่งของคำจำกัดความกระแสหลักดังที่สรุปไว้ในตารางในส่วนถัดไป
ค่าสำหรับการคำนวณทางคณิตศาสตร์ของฮาร์ดแวร์มาตรฐาน
ตารางต่อไปนี้แสดงค่าเอปซิลอนของเครื่องสำหรับรูปแบบเลขทศลอยมาตรฐาน
| IEEE 754 - 2008 | ชื่อสามัญ | ประเภทข้อมูล C | ฐาน | ความแม่นยำ | เครื่องปัดเศษเอปซิลอน[ a ] | เครื่องช่วงเวลาเอปซิลอน[ b ] |
|---|---|---|---|---|---|---|
| ไบนารี16 | ความแม่นยำครึ่งหนึ่ง | int16_t[ 1 ] | 2 | 11 (หนึ่งบิตเป็นแบบแฝง) | 2 −11 ≈ 4.88e-04 | 2 −10 ≈ 9.77e-04 |
| ไบนารี32 | ความแม่นยำเดี่ยว | float32_t | 2 | 24 (หนึ่งบิตเป็นค่าโดยนัย) | 2 −24 ≈ 5.96e-08 | 2 −23 ≈ 1.19e-07 |
| ไบนารี64 | ความแม่นยำสองเท่า | float64_t | 2 | 53 (หนึ่งบิตเป็นค่าโดยนัย) | 2 −53 ≈ 1.11e-16 | 2 −52 ≈ 2.22e-16 |
| ความแม่นยำสูงพิเศษ , ดับเบิลยาว | _float80[ 2 ] | 2 | 64 | 2 −64 ≈ 5.42e-20 | 2 −63 ≈ 1.08e-19 | |
| ไบนารี128 | ความแม่นยำระดับควอด (หรือระดับ) | _float128[ 2 ] | 2 | 113 (หนึ่งบิตเป็นค่าโดยนัย) | 2 −113 ≈ 9.63e-35 | 2 −112 ≈ 1.93e-34 |
| ทศนิยม32 | เลขฐานสิบความแม่นยำเดี่ยว | _Decimal32[ 3 ] | 10 | 7 | 5 × 10 −7 | 10 −6 |
| ทศนิยม64 | เลขทศนิยมความแม่นยำสองเท่า | _Decimal64[ 3 ] | 10 | 16 | 5 × 10 −16 | 10 −15 |
| ทศนิยม128 | ทศนิยมความแม่นยำระดับควอด (หรือระดับรูเพิล) | _Decimal128[ 3 ] | 10 | 34 | 5 × 10 −34 | 10 −33 |
- ^ตามคำจำกัดความอย่างเป็นทางการ — ที่ใช้โดยศาสตราจารย์ Demmel, LAPACKและ Scilabหมายถึงค่าความคลาดเคลื่อนในการปัดเศษสัมพัทธ์ที่มากที่สุดใน โหมด ปัดเศษไปยังจำนวนที่ใกล้ที่สุดเหตุผลก็คือความคลาดเคลื่อนในการปัดเศษคือครึ่งหนึ่งของช่วงขึ้นไปจนถึงจำนวนถัดไปที่สามารถแสดงได้ด้วยความแม่นยำจำกัด ดังนั้น ความคลาดเคลื่อนในการปัดเศษ สัมพัทธ์สำหรับจำนวนคือในบริบทนี้ความคลาดเคลื่อนสัมพัทธ์ที่มากที่สุด เกิดขึ้นเมื่อ และ เท่ากับเนื่องจากจำนวนจริงในครึ่งล่างของช่วงจะถูกปัดลงเป็นและจำนวนในครึ่งบนของช่วงจะถูกปัดขึ้นเป็นในที่นี้เราใช้คำจำกัดความของ(หน่วยในหลักสุดท้าย ) เป็นผลต่างที่เป็นบวกระหว่าง 1.0 (ซึ่งสามารถแสดงได้อย่างแม่นยำด้วยความแม่นยำจำกัด) และจำนวนถัดไปที่มากกว่าซึ่งสามารถแสดงได้ด้วยความแม่นยำจำกัด
- ^ตามคำจำกัดความกระแสหลัก — ที่ใช้โดยศาสตราจารย์ Higham; นำไปใช้ในค่าคงที่ภาษาใน Ada , C , C++ , Fortran , MATLAB , Mathematica , Octave , Pascal , Pythonและ Rustเป็นต้น และกำหนดไว้ในตำราเรียนเช่น « Numerical Recipes » โดย Pressและคณะมันแสดงถึงช่วงสัมพัทธ์ที่ใหญ่ที่สุดระหว่างตัวเลขที่ใกล้ที่สุดสองตัวในความแม่นยำจำกัด หรือข้อผิดพลาดในการปัดเศษที่ใหญ่ที่สุดใน โหมด ปัดเศษทีละน้อยเหตุผลก็คือ ช่วง สัมพัทธ์สำหรับตัวเลขคือโดยที่คือระยะห่างจากตัวเลขที่สามารถแสดงได้ถัดไปในความแม่นยำจำกัด ในบริบทนี้ช่วงสัมพัทธ์ที่ใหญ่ที่สุด เกิดขึ้นเมื่อ และ คือช่วงระหว่าง 1.0 (ซึ่งสามารถแสดงได้อย่างแม่นยำในความแม่นยำจำกัด) และตัวเลขจุดลอยตัวที่สามารถแสดงได้ถัดไปที่มากกว่า ช่วงนี้เท่ากับ ULP(1 )
คำจำกัดความอื่น ๆ สำหรับเอปซิลอน
มาตรฐาน IEEE ไม่ได้กำหนดคำว่าmachine epsilonและunit roundoffไว้ ดังนั้นจึงมีการใช้คำจำกัดความที่แตกต่างกันของคำเหล่านี้ ซึ่งอาจก่อให้เกิดความสับสนได้
สองคำนี้แตกต่างกันเพียงแค่ตัวคูณสอง คำที่ใช้กันอย่างแพร่หลายมากกว่า (ซึ่งในบทความนี้เรียกว่าความหมายหลัก ) นั้นใช้ในภาษาโปรแกรมสมัยใหม่ส่วนใหญ่ และนิยามง่ายๆ ว่าเอปซิลอนของเครื่องคือผลต่างระหว่าง 1 กับจำนวนทศนิยมที่มากกว่าถัดไป โดยทั่วไปแล้ว นิยาม อย่าง เป็นทางการจะให้ค่าเอปซิลอนที่มีขนาดครึ่งหนึ่งของนิยามหลักแม้ว่านิยามของมันจะแตกต่างกันไปขึ้นอยู่กับวิธีการปัดเศษที่ใช้ก็ตาม
คำศัพท์ทั้งสองคำนี้จะได้รับการอธิบายอย่างละเอียดในสองหัวข้อถัดไป
นิยามอย่างเป็นทางการ ( เครื่องปัดเศษเอปซิ ลอน )
คำจำกัดความอย่างเป็นทางการของmachine epsilonคือคำจำกัดความที่ศาสตราจารย์James Demmel ใช้ ในเอกสารบรรยาย[ 4 ]แพ็คเกจพีชคณิตเชิงเส้นLAPACK [ 5 ]เอกสารวิจัยเชิงตัวเลข[ 6 ]และซอฟต์แวร์การคำนวณทางวิทยาศาสตร์บางอย่าง[ 7 ] นักวิเคราะห์เชิงตัวเลขส่วนใหญ่ใช้คำว่าmachine epsilonและunit roundoffสลับกันได้ในความหมายนี้ ซึ่งจะมีการสำรวจอย่างละเอียดตลอดทั้งส่วนย่อยนี้
การปัดเศษเป็นกระบวนการในการเลือกวิธีการแสดงค่าของจำนวนจริงใน ระบบเลข ทศนิยมสำหรับระบบเลขและกระบวนการปัดเศษนั้น ค่าเอปซิลอนของเครื่องคือค่าความคลาดเคลื่อนสัมพัทธ์ สูงสุด ของกระบวนการปัดเศษที่เลือก
จำเป็นต้องมีข้อมูลพื้นฐานบางอย่างเพื่อกำหนดค่าจากคำจำกัดความนี้ ระบบเลขทศนิยมมีลักษณะเฉพาะด้วยฐาน (radix)ซึ่งเรียกอีกอย่างว่าฐาน (base ) และความแม่นยำ (precision ) กล่าวคือ จำนวนหลักฐาน ของตัวเลขสำคัญ ( significand ) (รวมถึงบิตนำหน้าโดยปริยาย) ตัวเลขทั้งหมดที่มีเลขชี้กำลัง เดียวกัน (n ) จะมีระยะห่าง (spacing ) เท่ากัน ระยะห่างจะเปลี่ยนไปเมื่อตัวเลขเป็นกำลังสมบูรณ์ของn โดยระยะห่างด้านที่มีขนาด ใหญ่กว่า จะมากกว่าระยะห่างด้านที่มีขนาดเล็กกว่าเท่า
เนื่องจากค่าเอปไซลอนของเครื่องเป็นขอบเขตของความคลาดเคลื่อนสัมพัทธ์ จึงเพียงพอที่จะพิจารณาตัวเลขที่มีเลขชี้กำลังและเพียงพอที่จะพิจารณาตัวเลขบวก สำหรับการปัดเศษแบบปัดเข้าหาค่าที่ใกล้ที่สุดตามปกติ ความคลาดเคลื่อนของการปัดเศษสัมบูรณ์จะมีค่าสูงสุดเพียงครึ่งหนึ่งของระยะห่าง หรือค่านี้คือค่าตัวเศษที่มากที่สุดที่เป็นไปได้สำหรับความคลาดเคลื่อนสัมพัทธ์ตัวส่วนในความคลาดเคลื่อนสัมพัทธ์คือตัวเลขที่กำลังปัดเศษ ซึ่งควรมีค่าน้อยที่สุดเท่าที่จะเป็นไปได้เพื่อให้ความคลาดเคลื่อนสัมพัทธ์มีค่ามาก ดังนั้นความคลาดเคลื่อนสัมพัทธ์ที่แย่ที่สุดจึงเกิดขึ้นเมื่อใช้การปัดเศษกับตัวเลขในรูปแบบโดยที่อยู่ระหว่างและตัวเลขเหล่านี้ทั้งหมดปัดเศษได้โดยมีความคลาดเคลื่อนสัมพัทธ์ค่าสูงสุดเกิดขึ้นเมื่ออยู่ที่ปลายบนของช่วง ค่าในตัวส่วนนั้นน้อยมากเมื่อเทียบกับตัวเศษ ดังนั้นจึงละเว้นไปเพื่อความสะดวก และใช้เพียง เป็นค่าเอปไซลอนของเครื่อง ดังที่ได้แสดงให้เห็นแล้ว ข้อผิดพลาดสัมพัทธ์จะแย่ที่สุดสำหรับตัวเลขที่ปัดเศษเป็น 0 ดังนั้นค่าเอปซิลอนของเครื่องจึงเรียกว่าการปัดเศษเป็นหน่วยซึ่งหมายถึง "ข้อผิดพลาดสูงสุดที่อาจเกิดขึ้นเมื่อปัดเศษเป็นค่าหน่วย" โดยประมาณ
ดังนั้น ระยะห่างสูงสุดระหว่างจำนวนจุดลอยตัวปกติและจำนวนปกติที่อยู่ติดกันคือ[ 8 ]
แบบจำลองทางคณิตศาสตร์
การวิเคราะห์เชิงตัวเลขใช้ค่าเอปไซลอนของเครื่องเพื่อศึกษาผลกระทบของข้อผิดพลาดจากการปัดเศษ ข้อผิดพลาดที่แท้จริงของการคำนวณด้วยเครื่องนั้นซับซ้อนเกินกว่าจะศึกษาโดยตรงได้ ดังนั้นจึงใช้แบบจำลองง่ายๆ ต่อไปนี้แทน มาตรฐานการคำนวณของ IEEE ระบุว่าการดำเนินการเลขทศนิยมทั้งหมดจะทำเสมือนว่าสามารถดำเนินการด้วยความแม่นยำอนันต์ได้ จากนั้นผลลัพธ์จะถูกปัดเศษเป็นเลขทศนิยม สมมติว่า (1) เป็นเลขทศนิยม (2) เป็นการดำเนินการทางคณิตศาสตร์บนเลขทศนิยม เช่น การบวกหรือการคูณ และ (3) เป็นการดำเนินการด้วยความแม่นยำอนันต์ ตามมาตรฐาน คอมพิวเตอร์จะคำนวณ:
ตามความหมายของค่าเอปไซลอนของเครื่อง ค่าความคลาดเคลื่อนสัมพัทธ์ของการปัดเศษจะมีขนาดไม่เกินค่าเอปไซลอนของเครื่อง ดังนั้น:
โดยที่ค่าขนาดสัมบูรณ์มีค่าสูงสุดเพียง u หรือuเท่านั้น สามารถศึกษาเพิ่มเติมจากหนังสือของ Demmel และ Higham ในส่วนอ้างอิง เพื่อดูว่าแบบจำลองนี้ถูกนำมาใช้ในการวิเคราะห์ข้อผิดพลาดของการกำจัดแบบเกาส์เซียนอย่างไร
คำจำกัดความกระแสหลัก ( เอปซิลอนของเครื่อง ช่วงเวลา )
นิยามทางเลือกนี้แพร่หลายกว่ามาก: ค่าเอปซิลอนของเครื่อง (machine epsilon) คือผลต่างระหว่าง 1 กับจำนวนทศนิยมที่มากกว่าถัดไปนิยามนี้ใช้ในค่าคงที่ของภาษาต่างๆ เช่นAda , C , C++ , Fortran , MATLAB , Mathematica , Octave , Pascal , PythonและRustเป็นต้น และมีการกำหนดไว้ในตำราเรียน เช่น " Numerical Recipes " โดย Press และ คณะ
ตามคำจำกัดความนี้จะเท่ากับค่าของหน่วยในตำแหน่งสุดท้ายเมื่อเทียบกับ 1 กล่าวคือ(โดยที่คือฐานของระบบเลขทศนิยม และคือความแม่นยำ) และการปัดเศษหน่วยคือโดยสมมติว่าเป็นการปัดเศษแบบใกล้เคียงที่สุด และโดยสมมติว่าเป็นการปัดเศษแบบตัดทอน
ความแพร่หลายของคำจำกัดความนี้มีรากฐานมาจากการใช้งานในมาตรฐาน ISO C สำหรับค่าคงที่ที่เกี่ยวข้องกับประเภทจุดลอยตัว[ 9 ] [ 10 ]และค่าคงที่ที่สอดคล้องกันในภาษาโปรแกรมอื่นๆ[ 11 ] [ 12 ] [ 13 ]นอกจากนี้ยังมีการใช้งานอย่างแพร่หลายในซอฟต์แวร์การคำนวณทางวิทยาศาสตร์[ 14 ] [ 15 ] [ 16 ]และในวรรณกรรมด้านตัวเลขและการคำนวณ[ 17 ] [ 18 ] [ 19 ] [ 20 ]
วิธีการกำหนดค่าเอปซิลอนของเครื่องจักร
ในกรณีที่ไลบรารีมาตรฐานไม่ได้ให้ค่าที่คำนวณไว้ล่วงหน้า (ตัวอย่างเช่นFLT_EPSILONและDBL_EPSILONในLDBL_EPSILONภาษาC , std::numeric_limits<T>::epsilon()ในภาษา C++หรือjava.lang.Float.EPSILON/ java.lang.Double.EPSILONในภาษา Java ) วิธีที่ดีที่สุดในการหาค่า machine epsilon คือการอ้างอิงตารางด้านบน และใช้สูตรกำลังที่เหมาะสม การคำนวณค่า machine epsilon มักเป็นแบบฝึกหัดในตำราเรียน ตัวอย่างต่อไปนี้คำนวณค่าmachine epsilon แบบช่วงในแง่ของการเว้นระยะห่างของตัวเลขทศนิยมที่ 1 แทนที่จะเป็นในแง่ของการปัดเศษหน่วย
โปรดทราบว่าผลลัพธ์ขึ้นอยู่กับรูปแบบเลขทศนิยมที่ใช้ เช่นfloat, double, long double, หรือรูปแบบอื่นๆ ที่คล้ายกัน ซึ่งได้รับการสนับสนุนโดยภาษาโปรแกรม คอมไพเลอร์ และไลบรารีรันไทม์สำหรับแพลตฟอร์มนั้นๆ
รูปแบบข้อมูลบางรูปแบบที่โปรเซสเซอร์รองรับ อาจไม่ได้รับการสนับสนุนจากคอมไพเลอร์และระบบปฏิบัติการที่เลือกใช้ นอกจากนี้ รูปแบบข้อมูลอื่นๆ อาจถูกจำลองโดยไลบรารีรันไทม์ รวมถึงการคำนวณเลขคณิตความแม่นยำสูงที่มีอยู่ในบางภาษาและไลบรารี
ในความหมายที่เคร่งครัด คำว่าเอปซิลอนของเครื่องหมายถึงความแม่นยำที่ได้รับการสนับสนุนโดยตรงจากโปรเซสเซอร์ (หรือโคโปรเซสเซอร์) ไม่ใช่ความแม่นยำที่ได้รับการสนับสนุนจากคอมไพเลอร์เฉพาะสำหรับระบบปฏิบัติการเฉพาะ เว้นแต่จะทราบกันดีว่าใช้รูปแบบที่ดีที่สุด
รูปแบบเลขทศนิยมIEEE 754 มีคุณสมบัติที่ว่า เมื่อตีความใหม่เป็นจำนวนเต็ม สองส่วน เติมเต็มที่ มีความกว้างเท่ากัน ค่าจะเพิ่มขึ้นอย่างต่อเนื่องเมื่อเป็นค่าบวก และลดลงอย่างต่อเนื่องเมื่อเป็นค่าลบ (ดูการแสดงเลขฐานสองของเลขทศนิยม 32 บิต ) นอกจากนี้ยังมีคุณสมบัติที่ว่าและ(โดยที่คือการตีความจำนวนเต็มของ ที่กล่าวถึงข้างต้น) ในภาษาที่อนุญาตให้ใช้รูปแบบการเล่นคำของชนิดข้อมูลและใช้ IEEE 754–1985 เสมอ เราสามารถใช้ประโยชน์จากคุณสมบัตินี้ในการคำนวณค่าเอปไซลอนของเครื่องได้ในเวลาคงที่ ตัวอย่างเช่น ในภาษา C:
ยูเนียนDoubleBits { int64_t i ; double d ; };double epsilon ( double value ) { union DoubleBits s ; s . d = value ; s . i ++ ; return s . d - value ; }ผลลัพธ์ที่ได้จะมีเครื่องหมายเดียวกับค่า หากต้องการผลลัพธ์ที่เป็นบวกเสมอสามารถแทนที่ คำ สั่งreturn ด้วย:epsilon()
ส่งคืนค่าs.i < 0 ? ค่า- s.d : s.d - ค่า;ตัวอย่างในภาษา Python:
จากการพิมพ์นำเข้าCallabledef epsilon ( func : Callable [[ float ], float ] = float ) -> float : eps : float = func ( 1 ) while func ( 1 ) + eps != func ( 1 ): eps_last : float = eps eps = func ( eps ) / func ( 2 ) return eps_lastตัวเลขทศนิยม 64 บิตให้ค่า 2.220446e-16 ซึ่งก็คือ 2 −52ตามที่คาดไว้
การประมาณค่า
สามารถใช้อัลกอริทึมง่ายๆ ต่อไปนี้ในการประมาณค่าเอปซิลอนของเครื่องจักร โดยมีความคลาดเคลื่อนไม่เกินสองเท่าจากค่าจริง โดยใช้ การค้นหา เชิง เส้น
เอปซิลอน = 1.0; ในขณะที่ (1.0 + 0.5 * เอปซิลอน) ≠ 1.0: เอปซิลอน = 0.5 * เอปซิลอน
ค่าเอปซิลอนของเครื่องจักรสามารถคำนวณได้ง่ายๆ โดยการนำ 2 ยกกำลังลบของจำนวนบิตที่ใช้สำหรับแมนทิสซา
ความสัมพันธ์กับข้อผิดพลาดสัมพัทธ์สัมบูรณ์
ถ้าเป็นการแสดงตัวเลขด้วยเครื่องจักรข้อผิดพลาดสัมพัทธ์สัมบูรณ์ในการแสดงนั้นคือ[ 21 ]
การพิสูจน์
การพิสูจน์ต่อไปนี้ใช้ได้เฉพาะกับจำนวนบวกและการแสดงผลด้วยเครื่องจักรโดยใช้วิธีround-by-chopเท่านั้น
ถ้าเป็นจำนวนบวกที่เราต้องการแทน ค่าที่ได้จะอยู่ระหว่างหมายเลขเครื่องจักรด้านล่างและหมายเลขเครื่องจักรด้านบน
ถ้าโดยที่คือจำนวนบิตที่ใช้สำหรับขนาดของตัวเลขสำคัญแล้ว:
เนื่องจากค่าแทนของจะเป็นอย่างใดอย่าง หนึ่ง
แม้ว่าการพิสูจน์นี้จะจำกัดเฉพาะจำนวนบวกและการปัดเศษแบบสับเปลี่ยน แต่ก็สามารถใช้วิธีเดียวกันนี้ในการพิสูจน์อสมการในส่วนที่เกี่ยวข้องกับจำนวนลบและการปัดเศษไปยังการแสดงผลเครื่องจักร ที่ใกล้ที่สุดได้
ดูเพิ่มเติม
- เลขทศนิยมการอภิปรายทั่วไปเกี่ยวกับประเด็นความแม่นยำในการคำนวณเลขทศนิยม
- หน่วยสุดท้าย (ULP)
หมายเหตุและเอกสารอ้างอิง
- ^ประเภทจำนวนเต็มที่มีความกว้างคงที่ (ตั้งแต่ C++11)
- ^ a bประเภทข้อมูลแบบลอยตัว - การใช้ชุดคอมไพเลอร์ GNU (GCC)
- ^ a b cเลขทศนิยมแบบลอยตัว - การใช้ชุดคอมไพเลอร์ GNU (GCC)
- ^ "ประเด็นพื้นฐานในการคำนวณเลขทศนิยมและการวิเคราะห์ข้อผิดพลาด" . 21 ต.ค. 2542 . สืบค้นเมื่อ11 เม.ย. 2556 .
- ^ "คู่มือผู้ใช้ LAPACK ฉบับที่สาม" . 22 สิงหาคม 2542 . สืบค้นเมื่อ9 มีนาคม 2555 .
- ^ "David Goldberg: สิ่งที่นักวิทยาศาสตร์คอมพิวเตอร์ทุกคนควรรู้เกี่ยวกับเลขคณิตจุดลอยตัว, ACM Computing Surveys, Vol 23, No 1, มีนาคม 1991" (PDF) . เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 25 มีนาคม 2016 . เรียกดูเมื่อวันที่ 11 เมษายน 2013 .
- ^ "เอกสารประกอบการใช้งาน Scilab - number_properties - การกำหนดพารามิเตอร์จุดลอยตัว" . สืบค้นเมื่อ11 เมษายน 2556 .
- ^ "ประเด็นพื้นฐานในการคำนวณเลขทศนิยมและการวิเคราะห์ข้อผิดพลาด"มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ 21 ตุลาคม 1999 สืบค้นเมื่อ 11 มิถุนายน 2022
ระยะห่างระหว่าง 1 กับเลขทศนิยมที่มากกว่าถัดไปคือ 2*macheps
- ^โจนส์, เดเร็ก เอ็ม. (2009). มาตรฐาน C ใหม่ - บทวิเคราะห์ทางเศรษฐกิจและวัฒนธรรม (PDF)หน้า 377
- ^ "อ้างอิง float.h ที่ cplusplus.com" สืบค้นเมื่อ 11 เมษายน 2556
- ^ "การอ้างอิง std::numeric_limits ที่ cplusplus.com" เรียกดูเมื่อ 11 เมษายน 2556
- ^ "เอกสารประกอบการใช้งาน Python - พารามิเตอร์และฟังก์ชันเฉพาะระบบ" สืบค้นเมื่อ 11 เมษายน 2556
- ^ มาตรฐาน Extended Pascal ISO 10206:1990 (รายงานทางเทคนิค)
ค่าของ
epsreal
จะเป็นผลลัพธ์ของการลบ 1.0 ออกจากค่าที่เล็กที่สุดของ real-type ที่มากกว่า 1.0
- ^ "เอกสารประกอบการใช้งาน Mathematica: $MachineEpsilon" . สืบค้นเมื่อ 11 เมษายน 2556 .
- ^ "เอกสารประกอบการใช้งาน Matlab - eps - ความแม่นยำสัมพัทธ์ของเลขทศนิยม"เก็บถาวรจากต้นฉบับเมื่อ 2013-08-07 เรียกดูเมื่อ 11 เมษายน 2013
- ^ "เอกสารประกอบเกี่ยวกับอ็อกเทฟ - ฟังก์ชัน eps" . สืบค้นเมื่อ11 เมษายน 2556 .
- ^ไฮแฮม, นิโคลัส (2002). ความแม่นยำและความเสถียรของอัลกอริธึมเชิงตัวเลข (ฉบับที่ 2) SIAM. หน้า 27–28 .
- ↑ ควอเตอร์โรนี, อัลฟิโอ ; ซัคโก้, ริคคาร์โด้; ซาเลรี, เฟาสโต (2000) คณิตศาสตร์เชิงตัวเลข (PDF) . สปริงเกอร์. พี 49. ไอเอสบีเอ็น 0-387-98959-5เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 14 พฤศจิกายน 2017 เรียกดูเมื่อวันที่ 11 เมษายน 2013
- ^ Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. Numerical Recipes . หน้า 890.
- ↑เอนเกลน์-มุลเกส, กิเซลา; รอยเตอร์, ฟริตซ์ (1996) ตัวเลข-อัลกอริทึม พี 6. ไอเอสบีเอ็น 3-18-401539-4.
- ^ "ค่าเอปไซลอนของเครื่องสำหรับมาตรฐานความแม่นยำสองเท่าของ IEEE ในการพิสูจน์ทางเลือกโดยใช้ข้อผิดพลาดสัมพัทธ์" 12 ตุลาคม 2020 สืบค้นเมื่อ5 พฤษภาคม 2022
- Anderson, E.; คู่มือผู้ใช้ LAPACK,สมาคมคณิตศาสตร์อุตสาหกรรมและประยุกต์ (SIAM), ฟิลาเดลเฟีย, PA, ฉบับที่สาม, 1999
- Cody, William J.; MACHAR: รูทีนย่อยสำหรับกำหนดพารามิเตอร์เครื่องจักรแบบไดนามิก, ACM Transactions on Mathematical Software, Vol. 14(4), 1988, 303–311
- Besset, Didier H.; การนำวิธีการเชิงตัวเลขไปใช้ในรูปแบบเชิงวัตถุ, Morgan & Kaufmann, ซานฟรานซิสโก, แคลิฟอร์เนีย, 2000.
- เดมเมล, เจมส์ ดับเบิลยู.พีชคณิตเชิงเส้นเชิงตัวเลขประยุกต์,สมาคมคณิตศาสตร์อุตสาหกรรมและประยุกต์ (SIAM), ฟิลาเดลเฟีย, เพนซิลเวเนีย, 1997
- ไฮแฮม, นิโคลัส เจ.; ความแม่นยำและความเสถียรของอัลกอริธึมเชิงตัวเลข,สมาคมคณิตศาสตร์อุตสาหกรรมและประยุกต์ (SIAM), ฟิลาเดลเฟีย, รัฐเพนซิลเวเนีย, ฉบับพิมพ์ครั้งที่สอง, 2002
- Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; และ Flannery, Brian P.; Numerical Recipes in Fortran 77 , ฉบับที่ 2, บทที่ 20.2, หน้า 881–886
- ฟอร์ไซธ์, จอร์จ อี.; มัลคอล์ม, ไมเคิล เอ.; โมเลอร์, เคลฟ บี.; "วิธีการทางคอมพิวเตอร์สำหรับการคำนวณทางคณิตศาสตร์", เพรนติส-ฮอลล์, ISBN 0-13-165332-6, 1977
ลิงก์ภายนอก
- MACHARคือรูทีน (ในภาษา C และ Fortran) สำหรับ "คำนวณค่าคงที่ของเครื่องจักรแบบไดนามิก" (อัลกอริทึม ACM 722)
- การวินิจฉัยความแม่นยำของการคำนวณจุดลอยตัวการนำ MACHAR ไปใช้ในคอมโพเนนต์ PascalและOberonโดยอิงจาก MACHAR เวอร์ชัน Fortran 77 ที่ตีพิมพ์ใน Numerical Recipes (Press et al., 1992)
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เครื่องเอปซิลอน
ค่า เอปซิลอนของเครื่อง หรือ ความแม่นยำของเครื่อง คือขอบเขตบนของ ข้อผิดพลาดในการประมาณ ค่าสัมพัทธ์ เนื่องจาก การปัดเศษ ในระบบเลข ทศนิยม ค่านี้ใช้ในการกำหนด...
ค่าสำหรับการคำนวณทางคณิตศาสตร์ของฮาร์ดแวร์มาตรฐาน
ตารางต่อไปนี้แสดงค่าเอปซิลอนของเครื่องสำหรับรูปแบบเลขทศลอยมาตรฐาน
คำจำกัดความอื่น ๆ สำหรับเอปซิลอน
มาตรฐาน IEEE ไม่ได้กำหนดคำว่า machine epsilon และ unit roundoff ไว้ ดังนั้นจึงมีการใช้คำจำกัดความที่แตกต่างกันของคำเหล่านี้ ซึ่งอาจก่อให้เกิดความสับสนได้
นิยามอย่างเป็นทางการ ( เครื่องปัดเศษเอปซิ ลอน )
คำ จำกัดความอย่างเป็นทางการ ของ machine epsilon คือคำจำกัดความที่ศาสตราจารย์ James Demmel ใช้ ในเอกสารบรรยาย [ 4 ] แพ็คเกจพีชคณิตเชิงเส้น LAPACK [ 5 ] เอกสารวิจัยเชิงตัวเลข [ 6 ] และซอฟต์แวร์การคำนวณทางวิทยาศาสตร์บางอย่าง [ 7 ]...