عددِ شرط نشان میدهد پاسخِ یک مسئله تا چه اندازه میتواند به تغییرِ ورودی حساس باشد؛ باید مسئله و نرم را مشخص کنیم. اینجا مسئله حلِ Ax=b، ماتریسِ A ثابت و نرمِ بینهایت است. با عوضکردنِ کوچکِ b، جوابِ دقیقِ دو دستگاه را مقایسه میکنیم. این آزمایش دربارهٔ خطایِ گردکردن یا آموزشِ رگرسیون نیست.
قراردادِ اندازهگیری را اول بنویسیم
برایِ بردار، نرمِ بینهایت بزرگترینِ قدرمطلقِ مؤلفه است؛ برایِ ماتریس، بزرگترینِ مجموعِ قدرمطلقِ خانههایِ یک سطر. در دستگاهِ مربعیِ وارونپذیر، κ∞(A)=‖A‖∞×‖A⁻¹‖∞ است. نرمِ پیشفرضِ تابعِ cond در NumPy نرمِ۲ است؛ عددِ این مثال را بدونِ تعیینِ نرم با خروجیِ پیشفرض مقایسه نکنید.
همان دستگاه، دو سمتِ راستِ نزدیک
A سطرهایِ(۱،۱) و(۱،۱٫۰۰۱) دارد. از جوابِ x=(۱،۱)، سمتِ راستِ b=(۲،۲٫۰۰۱) به دست میآید. اکنون فقط مؤلفهٔ دومِ b را۰٫۰۰۱ زیاد میکنیم: b′=(۲،۲٫۰۰۲). تفریقِ دو معادله در حالتِ دوم میدهد۰٫۰۰۱×x₂=۰٫۰۰۲؛ پس x′=(۰،۲) است. تغییرِ کوچکِ ورودی، هر مؤلفهٔ جواب را یک واحد جابهجا کرده است.
معکوسِ A سطرهایِ(۱۰۰۱،−۱۰۰۰) و(−۱۰۰۰،۱۰۰۰) دارد. نرمِ A برابرِ۲٫۰۰۱ و نرمِ معکوس۲۰۰۱ است؛ حاصل۴۰۰۴٫۰۰۱ میشود. کدِ همراه همهٔ اینها را با Fraction حساب میکند؛ اعشارهایِ صفحه نمایشِ کسرهایِ دقیقاند، نه اندازهگیریِ خطایِ ماشین.
کران را با تغییرِ واقعی یکی نگیریم
چون A ثابت است، Δx=A⁻¹Δb داریم. از سازگاریِ نرم، ‖Δx‖≤‖A⁻¹‖‖Δb‖؛ همچنین ‖b‖=‖Ax‖≤‖A‖‖x‖. با ترکیبِ این دو رابطه، برایِ b و x غیرصفر به کرانِ زیر میرسیم:
||delta_x|| / ||x|| <= kappa(A) * ||delta_b|| / ||b||در مثالِ ما نسبتِ تغییرِ b برابرِ۱÷۲۰۰۱ و نسبتِ تغییرِ x برابرِ۱ است. طرفِ راستِ کران۴۰۰۴٫۰۰۱÷۲۰۰۱=۲٫۰۰۱ میشود؛ بنابراین۱≤۲٫۰۰۱ واقعاً برقرار است. عددِ شرطِ بزرگ، تغییرِ همین ورودی را دقیقاً پیشبینی نمیکند و به معنیِ رسیدنِ هر تغییر به بدترین حالت نیست.
با یک دستگاهِ کمتر حساس مقایسه کنیم
در دستگاهِ دوم، A سطرهایِ(۱،۱) و(۱،۲) دارد؛ x همان(۱،۱)، b=(۲،۳) و تغییرِ b همان(۰،۰٫۰۰۱) است. جوابِ تازه(۰٫۹۹۹،۱٫۰۰۱) میشود. κ∞ برابرِ۹ و نسبتِ تغییرِ جواب۰٫۰۰۱ است؛ کران۹×(۰٫۰۰۱÷۳)=۰٫۰۰۳ هم برقرار است. این دو دستگاه را با یک تغییرِ مطلقِ یکسان آزمایش کردهایم؛ اندازهٔ b متفاوت است و نسبتِ تغییر را جدا نشان میدهیم.
| دستگاهِ ساختهشده | κ∞ | تغییرِ نسبیِ b | تغییرِ نسبیِ جواب | کران |
|---|---|---|---|---|
| ضریبِ۱٫۰۰۱ در خانهٔ آخر | ۴۰۰۴٫۰۰۱ | ۱÷۲۰۰۱ | ۱ | ۲٫۰۰۱ |
| ضریبِ۲ در خانهٔ آخر | ۹ | ۱÷۳۰۰۰ | ۰٫۰۰۱ | ۰٫۰۰۳ |
بدشرط، تکین و الگوریتمِ ناپایدار یک چیز نیستند
وقتی دو سطرِ A هر دو(۱،۱) شوند، دترمینان صفر و معکوسِ موردِ استفادهٔ این فرمول ناموجود است. تابعِ محدودِ مثال این حالت را رد میکند. برایِ b سازگار ممکن است چندین جواب و برایِ b ناسازگار هیچ جوابی نباشد؛ آن را صرفاً «همان جواب با کمی خطا» نمینامیم.
بدشرطی ویژگیِ مسئله با نمایش و نرمِ انتخابشده است؛ پایداری ویژگیِ الگوریتمِ حل است. حتی حلِ دقیق میتواند نسبت به تغییرِ داده حساس باشد، چنانکه همین حسابِ کسری نشان داد. از آن طرف، عددِ شرطِ کوچک تضمین نمیکند هر برنامهای درست نوشته شده باشد. کدِ ما فقط دستگاهِ۲×۲ و تغییرِ سمتِ راست را میآزماید؛ دربارهٔ تغییرِ A یا همهٔ مسائلِ غیرخطی نتیجه نمیدهد.
قبل از تصمیمِ کاربردی چه چیزی ثبت کنیم؟
واحدِ متغیرها، نرم، اندازهٔ تغییرِ ورودی، باقیماندهٔ Ax−b و روشِ حل را کنارِ جواب نگه دارید. کوچکبودنِ باقیمانده را بهتنهایی مدرکِ نزدیکبودن به پاسخِ دادهٔ بیخطا ندانید. ساختنِ معکوس در این تمرین برایِ دیدنِ κ است؛ دستورِ عمومیِ حلِ دستگاهِ بزرگ با محاسبهٔ معکوس نیست.
همخطیِ ویژگیها مسئلهٔ تفسیر و حساسیتِ ضرایبِ رگرسیون را توضیح میدهد؛ این صفحه خودِ کرانِ حساسیتِ Ax=b را با دو حلِ دقیق کنترل میکند. برایِ مرورِ شکلها، بردار و ماتریس مکمل است. اگر هدفِ شما راهاندازیِ پاسخگویی یا پیگیریِ مشتری است، نیازِ عملی را در راهکارهایِ اپرا مشخص کنید؛ این مثال وعدهٔ دقتِ عددیِ محصول نیست.
فایل تمرین و منبع
دو حلِ دقیق، معکوس و کنترلِ کران؛ Python · دفترِ کسرهایِ دقیق و مقایسهٔ دو دستگاه
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.