กลับไปหน้าบทความ

อ่าน 9 นาที

เครื่องเอปซิลอน

ค่า เอปซิลอนของเครื่อง หรือ ความแม่นยำของเครื่อง คือขอบเขตบนของ ข้อผิดพลาดในการประมาณ ค่าสัมพัทธ์ เนื่องจาก การปัดเศษ ในระบบเลข ทศนิยม ค่านี้ใช้ในการกำหนด...

เครื่องเอปซิลอน

ค่า เอปซิลอนของเครื่องหรือความแม่นยำของเครื่องคือขอบเขตบนของข้อผิดพลาดในการประมาณ ค่าสัมพัทธ์ เนื่องจากการปัดเศษในระบบเลขทศนิยม ค่านี้ใช้ในการกำหนด ลักษณะทางคณิตศาสตร์ของคอมพิวเตอร์ในสาขาการวิเคราะห์เชิงตัวเลขและโดยนัยเดียวกันในสาขาวิทยาการคำนวณปริมาณนี้เรียกอีกอย่างว่ามาเชปส์และมีสัญลักษณ์คือเอปซิลอน ของ กรีก

มีคำจำกัดความที่ใช้กันอย่างแพร่หลายอยู่สองแบบ ซึ่งในที่นี้จะเรียกว่าเอปซิลอนเครื่องปัดเศษหรือคำจำกัดความเชิงรูปแบบและเอปซิลอนเครื่องช่วงหรือคำจำกัดความกระแสหลัก

ตามความหมายทั่วไปค่าเอปซิลอนของเครื่องนั้นไม่ขึ้นอยู่กับวิธีการปัดเศษ และถูกกำหนดอย่างง่ายๆ ว่าเป็นผลต่างระหว่าง 1 กับจำนวนทศนิยมที่มากกว่าถัดไป

ในนิยามอย่างเป็นทางการค่าเอปซิลอนของเครื่องจะขึ้นอยู่กับประเภทของการปัดเศษที่ใช้ และเรียกอีกอย่างว่าค่าปัดเศษตามหน่วยซึ่งมีสัญลักษณ์เป็นตัวอักษรโรมันตัวหนา

โดยทั่วไปแล้ว สองคำนี้มีความแตกต่างกันเพียงสองเท่า โดยคำจำกัดความอย่างเป็นทางการจะให้ค่าเอปซิลอนที่มีขนาดครึ่งหนึ่งของคำจำกัดความกระแสหลักดังที่สรุปไว้ในตารางในส่วนถัดไป

ค่าสำหรับการคำนวณทางคณิตศาสตร์ของฮาร์ดแวร์มาตรฐาน

ตารางต่อไปนี้แสดงค่าเอปซิลอนของเครื่องสำหรับรูปแบบเลขทศลอยมาตรฐาน

IEEE 754 - 2008ชื่อสามัญประเภทข้อมูล Cฐานความแม่นยำเครื่องปัดเศษเอปซิลอน[ a ]เครื่องช่วงเวลาเอปซิลอน[ b ]
ไบนารี16ความแม่นยำครึ่งหนึ่งint16_t[ 1 ]211 (หนึ่งบิตเป็นแบบแฝง)2 −11 ≈ 4.88e-042 −10 ≈ 9.77e-04
ไบนารี32ความแม่นยำเดี่ยวfloat32_t224 (หนึ่งบิตเป็นค่าโดยนัย)2 −24 ≈ 5.96e-082 −23 ≈ 1.19e-07
ไบนารี64ความแม่นยำสองเท่าfloat64_t253 (หนึ่งบิตเป็นค่าโดยนัย)2 −53 ≈ 1.11e-162 −52 ≈ 2.22e-16
ความแม่นยำสูงพิเศษ , ดับเบิลยาว_float80[ 2 ]2642 −64 ≈ 5.42e-202 −63 ≈ 1.08e-19
ไบนารี128ความแม่นยำระดับควอด (หรือระดับ)_float128[ 2 ]2113 (หนึ่งบิตเป็นค่าโดยนัย)2 −113 ≈ 9.63e-352 −112 ≈ 1.93e-34
ทศนิยม32เลขฐานสิบความแม่นยำเดี่ยว_Decimal32[ 3 ]1075 × 10 −710 −6
ทศนิยม64เลขทศนิยมความแม่นยำสองเท่า_Decimal64[ 3 ]10165 × 10 −1610 −15
ทศนิยม128ทศนิยมความแม่นยำระดับควอด (หรือระดับรูเพิล)_Decimal128[ 3 ]10345 × 10 −3410 −33
  1. ^ตามคำจำกัดความอย่างเป็นทางการ — ที่ใช้โดยศาสตราจารย์ Demmel, LAPACKและ Scilabหมายถึงค่าความคลาดเคลื่อนในการปัดเศษสัมพัทธ์ที่มากที่สุดใน โหมด ปัดเศษไปยังจำนวนที่ใกล้ที่สุดเหตุผลก็คือความคลาดเคลื่อนในการปัดเศษคือครึ่งหนึ่งของช่วงขึ้นไปจนถึงจำนวนถัดไปที่สามารถแสดงได้ด้วยความแม่นยำจำกัด ดังนั้น ความคลาดเคลื่อนในการปัดเศษ สัมพัทธ์สำหรับจำนวนคือในบริบทนี้ความคลาดเคลื่อนสัมพัทธ์ที่มากที่สุด เกิดขึ้นเมื่อ และ เท่ากับเนื่องจากจำนวนจริงในครึ่งล่างของช่วงจะถูกปัดลงเป็นและจำนวนในครึ่งบนของช่วงจะถูกปัดขึ้นเป็นในที่นี้เราใช้คำจำกัดความของ(หน่วยในหลักสุดท้าย ) เป็นผลต่างที่เป็นบวกระหว่าง 1.0 (ซึ่งสามารถแสดงได้อย่างแม่นยำด้วยความแม่นยำจำกัด) และจำนวนถัดไปที่มากกว่าซึ่งสามารถแสดงได้ด้วยความแม่นยำจำกัด
  2. ^ตามคำจำกัดความกระแสหลัก — ที่ใช้โดยศาสตราจารย์ 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เท่านั้น

ถ้าเป็นจำนวนบวกที่เราต้องการแทน ค่าที่ได้จะอยู่ระหว่างหมายเลขเครื่องจักรด้านล่างและหมายเลขเครื่องจักรด้านบน

ถ้าโดยที่คือจำนวนบิตที่ใช้สำหรับขนาดของตัวเลขสำคัญแล้ว:

เนื่องจากค่าแทนของจะเป็นอย่างใดอย่าง หนึ่ง

แม้ว่าการพิสูจน์นี้จะจำกัดเฉพาะจำนวนบวกและการปัดเศษแบบสับเปลี่ยน แต่ก็สามารถใช้วิธีเดียวกันนี้ในการพิสูจน์อสมการในส่วนที่เกี่ยวข้องกับจำนวนลบและการปัดเศษไปยังการแสดงผลเครื่องจักร ที่ใกล้ที่สุดได้

ดูเพิ่มเติม

หมายเหตุและเอกสารอ้างอิง

  1. ^ประเภทจำนวนเต็มที่มีความกว้างคงที่ (ตั้งแต่ C++11)
  2. ^ a bประเภทข้อมูลแบบลอยตัว - การใช้ชุดคอมไพเลอร์ GNU (GCC)
  3. ^ a b cเลขทศนิยมแบบลอยตัว - การใช้ชุดคอมไพเลอร์ GNU (GCC)
  4. ^ "ประเด็นพื้นฐานในการคำนวณเลขทศนิยมและการวิเคราะห์ข้อผิดพลาด" . 21 ต.ค. 2542 . สืบค้นเมื่อ11 เม.ย. 2556 .
  5. ^ "คู่มือผู้ใช้ LAPACK ฉบับที่สาม" . 22 สิงหาคม 2542 . สืบค้นเมื่อ9 มีนาคม 2555 .
  6. ^ "David Goldberg: สิ่งที่นักวิทยาศาสตร์คอมพิวเตอร์ทุกคนควรรู้เกี่ยวกับเลขคณิตจุดลอยตัว, ACM Computing Surveys, Vol 23, No 1, มีนาคม 1991" (PDF) . เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 25 มีนาคม 2016 . เรียกดูเมื่อวันที่ 11 เมษายน 2013 .
  7. ^ "เอกสารประกอบการใช้งาน Scilab - number_properties - การกำหนดพารามิเตอร์จุดลอยตัว" . สืบค้นเมื่อ11 เมษายน 2556 .
  8. ^ "ประเด็นพื้นฐานในการคำนวณเลขทศนิยมและการวิเคราะห์ข้อผิดพลาด"มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ 21 ตุลาคม 1999 สืบค้นเมื่อ 11 มิถุนายน 2022 ระยะห่างระหว่าง 1 กับเลขทศนิยมที่มากกว่าถัดไปคือ 2*macheps
  9. ^โจนส์, เดเร็ก เอ็ม. (2009). มาตรฐาน C ใหม่ - บทวิเคราะห์ทางเศรษฐกิจและวัฒนธรรม (PDF)หน้า 377
  10. ^ "อ้างอิง float.h ที่ cplusplus.com" สืบค้นเมื่อ 11 เมษายน 2556
  11. ^ "การอ้างอิง std::numeric_limits ที่ cplusplus.com" เรียกดูเมื่อ 11 เมษายน 2556
  12. ^ "เอกสารประกอบการใช้งาน Python - พารามิเตอร์และฟังก์ชันเฉพาะระบบ" สืบค้นเมื่อ 11 เมษายน 2556
  13. ^ มาตรฐาน Extended Pascal ISO 10206:1990 (รายงานทางเทคนิค) ค่าของepsrealจะเป็นผลลัพธ์ของการลบ 1.0 ออกจากค่าที่เล็กที่สุดของ real-type ที่มากกว่า 1.0
  14. ^ "เอกสารประกอบการใช้งาน Mathematica: $MachineEpsilon" . สืบค้นเมื่อ 11 เมษายน 2556 .
  15. ^ "เอกสารประกอบการใช้งาน Matlab - eps - ความแม่นยำสัมพัทธ์ของเลขทศนิยม"เก็บถาวรจากต้นฉบับเมื่อ 2013-08-07 เรียกดูเมื่อ 11 เมษายน 2013
  16. ^ "เอกสารประกอบเกี่ยวกับอ็อกเทฟ - ฟังก์ชัน eps" . สืบค้นเมื่อ11 เมษายน 2556 .
  17. ^ไฮแฮม, นิโคลัส (2002). ความแม่นยำและความเสถียรของอัลกอริธึมเชิงตัวเลข (ฉบับที่ 2) SIAM. หน้า  27–28 .
  18. ควอเตอร์โรนี, อัลฟิโอ ; ซัคโก้, ริคคาร์โด้; ซาเลรี, เฟาสโต (2000) คณิตศาสตร์เชิงตัวเลข (PDF) . สปริงเกอร์. พี 49. ไอเอสบีเอ็น 0-387-98959-5เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 14 พฤศจิกายน 2017 เรียกดูเมื่อวันที่ 11 เมษายน 2013
  19. ^ Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. Numerical Recipes . หน้า 890.
  20. เอนเกลน์-มุลเกส, กิเซลา; รอยเตอร์, ฟริตซ์ (1996) ตัวเลข-อัลกอริทึม พี 6. ไอเอสบีเอ็น 3-18-401539-4.
  21. ^ "ค่าเอปไซลอนของเครื่องสำหรับมาตรฐานความแม่นยำสองเท่าของ 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)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Machine_epsilon&oldid=1358970954 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เครื่องเอปซิลอน

ค่า เอปซิลอนของเครื่อง หรือ ความแม่นยำของเครื่อง คือขอบเขตบนของ ข้อผิดพลาดในการประมาณ ค่าสัมพัทธ์ เนื่องจาก การปัดเศษ ในระบบเลข ทศนิยม ค่านี้ใช้ในการกำหนด...

ค่าสำหรับการคำนวณทางคณิตศาสตร์ของฮาร์ดแวร์มาตรฐาน

ตารางต่อไปนี้แสดงค่าเอปซิลอนของเครื่องสำหรับรูปแบบเลขทศลอยมาตรฐาน

คำจำกัดความอื่น ๆ สำหรับเอปซิลอน

มาตรฐาน IEEE ไม่ได้กำหนดคำว่า machine epsilon และ unit roundoff ไว้ ดังนั้นจึงมีการใช้คำจำกัดความที่แตกต่างกันของคำเหล่านี้ ซึ่งอาจก่อให้เกิดความสับสนได้

นิยามอย่างเป็นทางการ ( เครื่องปัดเศษเอปซิ ลอน )

คำ จำกัดความอย่างเป็นทางการ ของ machine epsilon คือคำจำกัดความที่ศาสตราจารย์ James Demmel ใช้ ในเอกสารบรรยาย [ 4 ​​] แพ็คเกจพีชคณิตเชิงเส้น LAPACK [ 5 ] เอกสารวิจัยเชิงตัวเลข [ 6 ] และซอฟต์แวร์การคำนวณทางวิทยาศาสตร์บางอย่าง [ 7 ]...