کاهش خطای ممیز شناور

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

Huberto M. Sierra در حق اختراع خود در سال 1956 با عنوان "میانگین کنترل حسابی نقطه اعشاری شناور برای ماشین حساب" اشاره کرد: [1]

بنابراین تحت برخی شرایط، بخش عمده ارقام داده های مهم ممکن است فراتر از ظرفیت رجیسترها باشد. بنابراین، نتیجه به دست آمده اگر کاملاً اشتباه نباشد، ممکن است معنای کمی داشته باشد.

Z1 که توسط Konrad Zuse در سال 1936 ساخته شد، اولین کامپیوتر با محاسبات ممیز شناور بود و بنابراین مستعد خطای ممیز شناور بود. با این حال، رایانه‌های اولیه با زمان‌های عملیاتی که بر حسب میلی‌ثانیه اندازه‌گیری می‌شد، قادر به حل مسائل بزرگ و پیچیده [2] نبودند و بنابراین به ندرت با خطای ممیز شناور مواجه می‌شدند. با این حال، امروزه با اندازه‌گیری عملکرد سیستم ابرکامپیوتری در پتافلاپ ، خطای ممیز شناور یک نگرانی اصلی برای حل‌کننده‌های مسائل محاسباتی است.

بخش‌های زیر نقاط قوت و ضعف ابزارهای مختلف کاهش خطای ممیز شناور را شرح می‌دهند.

تحلیل خطای عددی

اگرچه تمرکز اصلی تحلیل عددی نیست ، [3] [4] : 5  تحلیل خطای عددی برای تجزیه و تحلیل و به حداقل رساندن خطای گرد کردن ممیز شناور وجود دارد.

محاسبات مونت کارلو

تجزیه و تحلیل خطا توسط محاسبات مونت کارلو با تزریق مکرر خطاهای کوچک به مقادیر داده های الگوریتم و تعیین تأثیر نسبی بر نتایج انجام می شود.

گسترش دقت

بسط دقت استفاده از نمایش های بزرگتر از مقادیر واقعی نسبت به آنچه در ابتدا در نظر گرفته شد است. استاندارد IEEE 754 دقت را به عنوان تعداد ارقام موجود برای نمایش اعداد واقعی تعریف می کند. یک زبان برنامه نویسی می تواند شامل دقت تک (32 بیت)، دقت دوگانه (64 بیت) و دقت چهارگانه (128 بیت) باشد. در حالی که گسترش دقت تأثیرات خطا را کمتر محتمل یا اهمیت کمتری می دهد، صحت واقعی نتایج هنوز ناشناخته است.

محاسبه طول متغیر

محاسبات طول متغیر اعداد را به صورت رشته ای از ارقام با طول متغیر نشان می دهد که فقط با حافظه موجود محدود می شود. عملیات محاسبه طول متغیر به طور قابل توجهی کندتر از دستورالعمل های ممیز شناور با فرمت طول ثابت است. وقتی عملکرد بالا الزامی نیست، اما دقت بالا الزامی است، محاسبه طول متغیر می تواند مفید باشد، اگرچه ممکن است دقت واقعی نتیجه مشخص نباشد.

استفاده از عبارت خطای عملیات ممیز شناور

الگوریتم ممیز شناور که به دلیل Knuth و Møller به نام TwoSum [5] یا 2Sum شناخته می‌شود ، و نسخه ساده‌تر اما محدود آن FastTwoSum یا Fast2Sum (3 عمل به جای 6)، به فرد اجازه می‌دهد تا عبارت خطای (دقیق) یک را دریافت کند. جمع ممیز شناور به نزدیکترین گرد شده است. همچنین می‌توان عبارت خطای (دقیق) یک ضرب ممیز شناور را که در 2 عملیات با ضرب-افزودن ذوب شده (FMA) به نزدیک‌ترین گرد شده است، یا در صورت در دسترس نبودن FMA 17 عملیات (با الگوریتمی به دلیل Dekker) بدست آورد. این عبارات خطا را می توان در الگوریتم ها به منظور بهبود دقت نتیجه نهایی استفاده کرد، به عنوان مثال با بسط های ممیز شناور یا الگوریتم های جبرانی.

عملیاتی که نتیجه جمع یا ضرب ممیز شناور گرد شده به نزدیکترین حالت با عبارت خطای آن (اما کمی با الگوریتم های ذکر شده در بالا متفاوت است) در استاندارد IEEE 754-2019 استاندارد و توصیه شده است.

انتخاب یک ریشه متفاوت

تغییر ریشه ، به ویژه از باینری به اعشاری، می تواند به کاهش خطا و کنترل بهتر گرد کردن در برخی برنامه ها، مانند برنامه های مالی کمک کند .

حساب بازه ای

حساب بازه ای یک تکنیک ریاضی است که برای تعیین حد و مرز خطاهای گرد کردن و خطاهای اندازه گیری در محاسبات ریاضی استفاده می شود . مقادیر بازه هایی هستند که می توانند به روش های مختلفی نمایش داده شوند، مانند: [6]

  • inf-sup: یک کران پایین و یک کران بالا در مقدار واقعی.
  • mid-rad: یک تقریب و یک کران خطا (به نام نقطه وسط و شعاع بازه).
  • تریپلکس: یک تقریب، یک کران پایین و یک کران بالا در خطا.

"به جای استفاده از یک عدد ممیز شناور منفرد به عنوان تقریبی برای مقدار یک متغیر واقعی در مدل ریاضی مورد بررسی، حساب بازه ای دقت محدودی را با مرتبط کردن مجموعه ای از مقادیر واقعی به متغیر به عنوان مقادیر ممکن تایید می کند. برای سهولت ذخیره سازی و محاسبه ، این مجموعه ها به فواصل زمانی محدود می شوند." [7]

ارزیابی بیان محاسباتی بازه ای ممکن است طیف وسیعی از مقادیر را ارائه دهد، [7] و ممکن است مرزهای خطای واقعی را به طور جدی بیش از حد برآورد کند. [8] : 8 

unums گوستافسون

Unums ("اعداد جهانی") بسط محاسبات طول متغیر است که توسط جان گوستافسون پیشنهاد شده است . [9] Unumها دارای فیلدهای طول متغیر برای طول توان و معنی‌دار هستند و اطلاعات خطا در یک بیت واحد، ubit، نشان‌دهنده خطای احتمالی در کمترین بیت معنی‌دار ( ULP ) است. [9] : 4 

کارایی unums توسط ویلیام کاهان مورد سوال قرار گرفته است . [8]

نقطه شناور محدود

نقطه شناور محدود روشی است که توسط Alan Jorgensen پیشنهاد و ثبت شده است. [10] ساختار داده شامل ساختار داده و تفسیر استاندارد IEEE 754 و همچنین اطلاعاتی در مورد خطا بین مقدار واقعی واقعی نمایش داده شده و مقدار ذخیره شده توسط نمایش ممیز شناور است. [11]

ممیز شناور محدود به عنوان مشتق از کار گوستافسون در مورد واحدها و حساب بازه ای مورد انتقاد قرار گرفته است. [10] [12]

منابع

  1. "معیار کنترل حسابی اعشاری شناور برای ماشین حساب: پتنت ایالات متحده 3037701". FreePatentsOnline.com . 05-06-1962 . بازیابی شده در 2022-01-21 .
  2. "تاریخچه توسعه کامپیوتر و تولید کامپیوتر". ویکی مدرس سپتامبر 2014 . بازیابی شده در 2018-02-17 .
  3. Trefethen، Lloyd N. (1992). "تعریف تحلیل عددی" (PDF) . سیام . بازیابی شده در 2018-02-16 .
  4. هایم، نیکلاس جان (2002). دقت و پایداری الگوریتم های عددی (ویرایش 2). انجمن ریاضیات صنعتی و کاربردی (SIAM). شابک 978-0-89871-521-7.
  5. ریچارد شوچوک، جاناتان (اکتبر ۱۹۹۷). "محاسبات ممیز شناور دقیق تطبیقی ​​و محمولات هندسی قوی سریع" (PDF) . هندسه گسسته و محاسباتی 18 (3): 305-363. doi :10.1007/PL00009321. S2CID  189937041 . بازیابی 2022-11-14 .
  6. «استاندارد IEEE برای حساب بازه ای». IEEE STD 1788-2015 : 1-97. 30/06/2015. doi :10.1109/IEEESTD.2015.7140721. شابک 978-0-7381-9720-3.
  7. ^ اب هیکی، تی. جو، کیو. ون امدن، MH (سپتامبر 2001). "حساب بازه ای: از اصول تا اجرا" (PDF) . مجله ACM . 48 (5): 1038-1068. CiteSeerX 10.1.1.43.8001 . doi :10.1145/502102.502106. S2CID  15105694 . بازیابی شده در 2018-02-16 . 
  8. ^ آب کاهان، ویلیام (ژوئیه 2016). "نقدی از جان ال. گوستافسون، پایان خطا - محاسبات Unum و رویکرد رادیکال او به محاسبات با اعداد واقعی" (PDF) . بازیابی شده در 2018-02-17 .
  9. ↑ ab Gustafson، John Leroy (04-02-2016) [05-02-2015]. پایان خطا: Unum Computing. چاپمن و هال / علوم محاسباتی CRC . جلد 24 (چاپ تصحیح دوم، چاپ اول). CRC را فشار دهید . شابک 978-1-4822-3986-7. بازیابی 2016-05-30 .[1] [2]
  10. ^ ab Trader، تیفانی (2018-01-17). "مخترع ادعا می کند که مشکل خطای ممیز شناور را حل کرده است". HPCwire ​بازیابی شده در 2022-03-01 .
  11. ثبت اختراع ایالات متحده 11023230B2, Jorgensen, Alan A., "دستگاه برای محاسبه و حفظ محدوده خطا در طول عملیات ممیز شناور و روش های آن" صادر شده 01/06/2021 
  12. «آیا مشکل خطای ممیز شناور چندین دهه حل شده است؟». داخل HPC . 2018-01-17 . بازیابی شده در 2022-03-01 .
برگرفته از "https://en.wikipedia.org/w/index.php?title=Floating-point_error_mitigation&oldid=1215695056"