Catastrophic cancellation
عددی تجزیے میں، تباہ کن منسوخی وہ رجحان ہے کہ دو قریبی نمبروں کے اچھے تخمینوں کو گھٹانے سے اصل نمبروں کے فرق کا بہت برا تخمینہ لگ سکتا ہے۔ مثال کے طور پر، اگر دو اسٹڈ ہیں، ایک لمبا اور دوسرا لمبا، اور ان کی پیمائش ایک حکمران کے ساتھ کی جاتی ہے جو صرف سینٹی میٹر کے لیے اچھا ہے، تو تخمینے اور ہو سکتے ہیں۔ یہ صحیح لمبائی کے لیے، رشتہ دار غلطی میں، اچھے تخمینے ہو سکتے ہیں: تخمینے حقیقی لمبائی کے 2 فیصد سے بھی کم سے غلطی میں ہیں۔ تاہم، اگر لگ بھگ لمبائی کو گھٹا دیا جائے تو فرق ہو گا، حالانکہ لمبائی کے درمیان حقیقی فرق ہے۔ تخمینوں کا فرق، حقیقی اقدار کے فرق کی شدت کے 100% سے غلطی میں ہے۔ تباہ کن منسوخی اس بات سے متاثر نہیں ہوتی کہ ان پٹ کتنے بڑے ہیں-یہ اتنے ہی بڑے اور چھوٹے ان پٹ پر لاگو ہوتا ہے۔ یہ صرف اس بات پر منحصر ہے کہ فرق کتنا بڑا ہے، اور ان پٹ کی غلطی پر۔ بالکل وہی غلطی پیدا ہوگی جو تخمینوں سے اور میں گھٹانے سے، یا تخمینوں سے اور میں گھٹانے سے پیدا ہوگی۔ تباہ کن منسوخی تب بھی ہو سکتی ہے جب فرق کا بالکل حساب لگایا جائے، جیسا کہ اوپر کی مثال میں ہے-یہ کسی خاص قسم کے ریاضی کی خاصیت نہیں ہے جیسے فلوٹنگ پوائنٹ ریاضی ؛ بلکہ، یہ گھٹاؤ کے لیے موروثی ہے، جب ان پٹ خود قریب ہوتے ہیں۔ درحقیقت، فلوٹنگ پوائنٹ ریاضی میں، جب ان پٹ کافی قریب ہوتے ہیں، تو فلوٹنگ پوائنٹ فرق کا حساب بالکل اسٹربینز لیما کے ذریعے لگایا جاتا ہے-فلوٹنگ پوائنٹ سبٹریکشن آپریشن کے ذریعے کوئی گول غلطی متعارف نہیں کی جاتی ہے۔ رسمی تجزیہ رسمی طور پر، تباہ کن منسوخی اس لیے ہوتی ہے کیونکہ قریبی ان پٹ پر گھٹاؤ غیر مشروط ہے: یہاں تک کہ اگر تخمینے اور چھوٹی رشتہ دار غلطیاں ہوں اور صحیح اقدار سے اور بالترتیب، حقیقی اقدار کے فرق سے تخمینوں کے فرق کی رشتہ دار غلطی حقیقی اقدار کے فرق کے الٹا متناسب ہوتی ہے: اس طرح، حقیقی اقدار کے فرق سے تخمینوں کے درست فرق کی رشتہ دار غلطی یہ ہے کہ اگر حقیقی اقدار اور قریب ہوں تو من مانی طور پر بڑی ہو سکتی ہے۔ عددی الگورتھم میں فلوٹنگ پوائنٹ ریاضی میں قریبی نمبروں کو گھٹانا ہمیشہ تباہ کن منسوخی، یا یہاں تک کہ کسی غلطی کا سبب نہیں بنتا ہے-سٹربینز لیما کے مطابق، اگر اعداد کافی قریب ہیں تو فلوٹنگ پوائنٹ کا فرق درست ہے۔ لیکن منسوخی ان پٹ میں غلطیوں کو بڑھا سکتی ہے جو دوسرے فلوٹنگ پوائنٹ ریاضی میں گول کرنے سے پیدا ہوتی ہیں۔ مثال: مربعوں کا فرق دیئے گئے اعداد اور، فلوٹنگ پوائنٹ ریاضی کے ذریعہ ریاضیاتی فنکشن کا حساب لگانے کی بے وقوف کوشش جب شدت میں قریب ہوتی ہے تو تباہ کن منسوخی سے مشروط ہوتی ہے، کیونکہ گھٹاؤ مربع میں گول غلطیوں کو بے نقاب کر سکتا ہے۔ متبادل فیکٹرنگ، جس کا اندازہ فلوٹنگ پوائنٹ ریاضی کے ذریعہ کیا جاتا ہے، تباہ کن منسوخی سے بچتا ہے کیونکہ یہ گھٹاؤ کی طرف لے جانے والی گول غلطی کو متعارف کرانے سے گریز کرتا ہے۔ مثال کے طور پر، اگر اور، تو فرق کی حقیقی قیمت ہے۔ آئی ای ای ای 754 بائنری 64 ریاضی میں، متبادل فیکٹرنگ کا اندازہ لگانا بالکل درست نتیجہ دیتا ہے (بغیر کسی گول کے)، لیکن بے وقوف اظہار کا اندازہ لگانے سے فلوٹنگ پوائنٹ نمبر ملتا ہے، جس میں آدھے سے بھی کم ہندسے درست ہوتے ہیں اور دوسرے (واضح) ہندسے گمشدہ اصطلاحات کی عکاسی کرتے ہیں، جو انٹرمیڈیٹ اسکوائرڈ ویلیوز کا حساب لگاتے وقت گول ہونے کی وجہ سے کھو جاتے ہیں۔ مثال: پیچیدہ آرکسین پیچیدہ آرکسین فنکشن کا حساب لگاتے وقت، کسی کو براہ راست لوگرتھمک فارمولا استعمال کرنے کا لالچ آسکتا ہے: تاہم، فرض کریں۔ پھر اور ؛ ان کے درمیان فرق کو-ایک بہت چھوٹا فرق، تقریبا صفر کہتے ہیں۔ اگر فلوٹنگ پوائنٹ ریاضی میں کسی بھی غلطی کے ساتھ اندازہ لگایا جاتا ہے، جہاں فلوٹنگ پوائنٹ راؤنڈنگ کی نشاندہی ہوتی ہے، تو دو قریبی نمبروں کے فرق کا حساب لگانا، دونوں کے بہت قریب، ایک ان پٹ میں غلطی کو ایک عنصر سے بڑھا سکتا ہے-ایک بہت بڑا عنصر کیونکہ تقریبا صفر تھا۔ مثال کے طور پر، اگر، کی صحیح قیمت تقریبا ہے، لیکن آئی ای ای ای 754 بائنری 64 ریاضی میں سادہ لوگرتھمک فارمولے کا استعمال کرتے ہوئے، سولہ ہندسوں میں سے صرف پانچ درست اور بقیہ (واضح) تمام کچرا دے سکتا ہے۔ کے معاملے میں، شناخت کا استعمال منسوخی سے بچتا ہے کیونکہ لیکن، اس لیے گھٹاؤ مؤثر طریقے سے اسی نشان کے ساتھ اضافہ ہوتا ہے جو منسوخ نہیں ہوتا ہے۔ مثال: ریڈکس کنورژن سافٹ ویئر پروگراموں میں عددی مستقلات اکثر اعشاریہ میں لکھے جاتے ہیں، جیسے کہ C فریگمنٹ ڈبل x = 1.000000000000001 میں ؛ x نامی IEEE 754 بائنری 64 متغیر کا اعلان اور آغاز کرنے کے لیے۔ تاہم، یہ بائنری 64 فلوٹنگ پوائنٹ نمبر نہیں ہے ؛ قریب ترین نمبر، جس x کو اس ٹکڑے میں شروع کیا جائے گا، ہے۔ اگرچہ ریڈیکس کو اعشاریہ فلوٹنگ پوائنٹ سے بائنری فلوٹنگ پوائنٹ میں تبدیل کرنے میں صرف ایک چھوٹی سی رشتہ دار غلطی ہوتی ہے، لیکن تباہ کن منسوخی اسے بہت بڑی غلطی میں بڑھا سکتی ہے: ڈبل x = 1.000000000000001 ؛// گول سے 1 + 5 * 2 ^ {-52} ڈبل y = 1.000000000000002 ؛// گول سے 1 + 9 * 2 ^ {-52} ڈبل z = y-x ؛// فرق بالکل 4 * 2 ^ {-52} ہے۔ x سے اور y سے دونوں کی متعلقہ غلطیاں نیچے دی گئی ہیں، اور فلوٹنگ پوائنٹ گھٹاؤ y-x کا حساب بالکل سٹربینز لیما کے ذریعے لگایا جاتا ہے۔ لیکن اگرچہ ان پٹ اچھے تخمینے ہوتے ہیں، اور اگرچہ گھٹاؤ کا حساب بالکل ٹھیک کیا جاتا ہے، لیکن تخمینوں کے فرق میں اصل اقدار کے فرق سے زیادہ کی نسبتا غلطی ہوتی ہے جیسا کہ اعشاریہ میں لکھا گیا ہے: تباہ کن منسوخی نے ریڈکس میں ایک چھوٹی سی غلطی کو آؤٹ پٹ میں ایک بڑی غلطی میں تبدیل کر دیا۔ سودمند منسوخی منسوخی بعض اوقات عددی الگورتھم میں مفید اور مطلوب ہوتی ہے۔ مثال کے طور پر، 2Sum اور Fast2Sum الگورتھم دونوں ایک گول غلطی کے بعد اس طرح کی منسوخی پر انحصار کرتے ہیں تاکہ فلوٹنگ پوائنٹ نمبر کے طور پر فلوٹنگ پوائنٹ ایڈیشن آپریشن میں غلطی کا صحیح حساب لگایا جا سکے۔ فنکشن، اگر پوائنٹس پر بے وقوف انداز میں جائزہ لیا جائے تو، راؤنڈنگ کے زیادہ تر ہندسوں کو کھو دے گا۔ تاہم، فنکشن خود قریب کے ان پٹ پر اچھی طرح سے مشروط ہے۔ غلطی کا براہ راست جائزہ لینے سے بچنے کے لیے اسے استحصال کے طور پر دوبارہ لکھنا منسوخی ہے۔ یہ کام کرتا ہے کیونکہ عدد میں منسوخی اور ڈینومینیٹر میں منسوخی ایک دوسرے کا مقابلہ کرتے ہیں۔ فنکشن کافی حد تک صفر کے قریب ہے جو اس کا اچھا تخمینہ دیتا ہے، اور اس طرح اس کا ایک اچھا تخمینہ دیتا ہے۔ حوالہ جات عددی تجزیہ