اپسیلون ماشین

از testwiki
پرش به ناوبری پرش به جستجو

اپسیلون ماشین یا دقت ماشین حد بالایی برای خطای نسبی گرد کردن در محاسبات ممیز شناور (انگلیسی: Floating point arithmetic) می‌باشد. این مقدار محاسبات کامپیوتری را در زمینه آنالیز عددی و علوم محاسبه توصیف می‌کند. این مقدار گاهی macheps نیز نامیده می‌شود و نیز از نماد اپسیلون ε در زبان یونانی برای آن استفاده می‌شود.

غالبا دو تعریف برای این مقدار وجود دارد. در آنالیز عددی، این مقدار وابسته به شیوه گرد کردن است و گاهاً خطای گرد کردن واحد (انگلیسی: unit roundoff) نامیده می‌شود و با حرف انگلیسی بولد شده u نشان داده می‌شود. ولی با تعریفی عامیانه و پر استفاده تر، اپسیلون ماشینی از روش گرد سازی مستقل است و می‌تواند برابر u یا 2u باشد.

مقادیر برای محسابات سخت افزاری استاندارد

این جدول مقادیر اپسیلون ماشین را برای فرمت های استاندار ممیز شناور نشان می‌دهد. تمام فرمت های زیر از روش گرد کردن به نزدیک ترین استفاده می‌کنند.

استاندارد IEEE 754 - 2008 نام متداول نام تایپ در C++ مبنا

b

دقت

p

اپسیلون ماشینالگو:Efnb(p1)/2 اپسیلون ماشینالگو:Efnb(p1)
binary16 half precision N/A 2 11(یک بیت ضمنی است) 2−11 ≈ 4.88e-04 2−10 ≈ 9.77e-04
binary32 single precision float 2 24(یک بیت ضمنی است) 2−24 ≈ 5.96e-08 2−23 ≈ 1.19e-07
binary64 double precision double 2 53(یک بیت ضمنی است) 2−53 ≈ 1.11e-16 2−52 ≈ 2.22e-16
extended precision, long double _float80[۱] 2 64 2−64 ≈ 5.42e-20 2−63 ≈ 1.08e-19
binary128 quad(ruple) precision _float128[۱] 2 113(یک بیت ضمنی است) 2−113 ≈ 9.63e-35 2−112 ≈ 1.93e-34
decimal32 single precision decimal _Decimal32[۲] 10 7 5 × 10−7 10−6
decimal64 double precision decimal _Decimal64[۲] 10 16 5 × 10−16 10−15
decimal128 quad(ruple) precision decimal _Decimal128[۲] 10 34 5 × 10−34 10−33


تعریف قراردادی

گرد کردن به عملیاتی گفته می‌شود که طی آن نمایشی برای عددی حقیقی که در سیستم ممیز شناور ذخیره شده انتخاب می‌کنیم. به ازای یک سیستم عددی و یک شیوه گرد کردن، اپسیلون ماشین حداکثر خطای نسبی به وجود امده توسط شیوه گرد کردن می‌باشد.

برای محاسبه این مقدار به اطلاعات بیشتری نیاز داریم. یک سیستم عددی ممیز شناور توسط یک مبنا ، b، و یک دقت p (تعداد بیت های ضریب شامل هر تعداد بیت ضمنی)، توصیف می‌شود. اعداد با توان یکسان e دارای فاصله یکسان be(p1) می‌باشند. این فاصله در اعدادی که توان کامل b هستند تغییر می‌کند؛ فاصله اعداد در سمت با اندازه بزرگ تر، b برابر فاصله در سمت با اندازه کوچک تر است.

از آنجا که اپسیلون ماشین کرانی برای خطای نسبی است، بدون از دست دادن کلیت مسئله می‌توان فرض کرد e=0. همچنین می‌توانیم فقط اعداد مثبت را بررسی کنیم. برای روش گرد کردن به نزدیک ترین، خطا حداکثر نصف فاصله بین اعداد، یا b(p1)/2 است. این عدد بزرگ ترین مقدار ممکن برای صورت در کسر خطای نسبی است. مخرج آن، عددی است که گرد می‌کنیم. برای پیدا کردن خطای حداکثر این عدد باید کوچک ترین مقدار ممکن را به خود اختصاص دهد. در نتیجه بدترین خطای نسبی هنگامی رخ می‌دهد که عدد ما به فرم 1+a که در آن a بین 0 و b(p1)/2 باشد. تمام این اعداد به 1 گرد می‌شوند که خطای ما را برابر با a/(1+a) قرار می‌دهد. حداکثر آن هنگامی است که a در حد بالای برد خود باشد. 1+a در مخرج نسبت به صورت کسر قابل چشم پوشی است، پس برای تسریع محاسبات اپسیلون ماشین را فقط برابر با b(p1)/2 قرار می‌دهیم. نشان دادیم خطای نسبی برای اعدادی که به 1 گرد می‌شوند حداکثر است، به همین دلیل اپسیلون ماشین گاهی خطای گرد کردن واحد(انگلیسی: unit roundoff) نامیده می‌شود که به معنای "حداکثر خطایی که می‌تواند هنگام گرد کردن به مقدار واحد رخ دهد" است.

در نتیجه اختلاف عدد ممیز شناور عادی سازه شده، x، و عدد ممیز شناور عادی سازه شده مجاورش حداکثر برابر با 2ε|x| است.[۳]

تعاریف دیگر

استاندارد IEEE اپسیلون ماشین و خطای گرد کردن واحد را تعریف نمی‌کند، به همین دلیل تعاریف متفاوتی برای آن ها ارائه داده شده که گاهاً باعث اختلافاتی می‌شود.

تعریف قراردادی آن، تعریفی است که توسط پروفسور جیمز دمل در کنفرانس هایش[۴]، پکیج جبر خطی LAPACK[۵]، شماری از مقاله های علمی و برخی از نرم افزار های محاسبه ای دیگر[۶] ارائه داده شده. اکثر تحلیل گران عددی با استفاده از این معنا از اپسیلون ماشین و خطای گرد کردن واحد به جای یکدگیر استفاده می‌کنند.

تعریف دیگر آن که تعریفی است که خارج از محیط آکادمیک متداول تر است: اپسیلون ماشین تفاوت بین ۱ و کوچک ترین عدد ممیز شناور بزرگ تر از آن است.

با این تعریف، ε برابر با b(p1) است(b مبنا و p دقت سیستم ممیز اعشاری است) و خطای گرد کردن واحد با فرض گرد کردن به نزدیک ترین برابر با =ε/2 و با فرض کف یا سقف گرفتن برابر با =εu است.

شیوع این تعریف به دلیل استفاده آن در استاندارد ISO زبان C، برای ثابت های مربوط به تایپ های ممیز اعشاری[۷][۸]، ثابت های متناظر در زبان های دیگر[۹][۱۰][۱۱]، استفاده فراگیر در نرم افزار های محاسباتی[۱۲][۱۳][۱۴] و تعدادی از مقالات مربوط به محاسبات عددی است.

منابع