تجزیهٔ چولسکی برایِ ماتریسِ حقیقیِ متقارنِ مثبتمعین، عاملی پایینمثلثی میسازد که A=LLᵀ باشد. تقارن بهتنهایی کافی نیست. در این تمرین L را خانهبهخانه حساب میکنیم، A را بازسازی میکنیم و سپس دستگاه را با دو حلِ مثلثی حل میکنیم. سه ورودیِ نامناسب هم با علتِ مشخص رد میشوند.
ماتریس و جوابِ موردِ آزمایش
A از سطرهایِ(۴،۲،۲)، (۲،۱۰،−۲) و(۲،−۲،۶) تشکیل شده است. سمتِ راست b=(۶،۲۴،−۸) را برایِ این تمرین ساختهایم. هدف این است که بدونِ ساختنِ معکوسِ A، ابتدا L و بعد x را به دست آوریم. فایلِ همراه فقط از math و json در کتابخانهٔ استانداردِ Python استفاده میکند؛ هیچ کتابخانهٔ عددی یا مدلِ هوشِ مصنوعی اجرا نمیشود.
از pivotِ اول تا آخر
خانهٔ نخست L₁₁=√۴=۲ است. زیرِ آن، L₂₁=۲÷۲=۱ و L₃₁=۲÷۲=۱. برایِ قطرِ دوم، سهمِ ستونِ قبلی را کم میکنیم:۱۰−۱²=۹ و L₂₂=۳. خانهٔ L₃₂ از(−۲−۱×۱)÷۳=−۱ به دست میآید. در آخر،۶−۱²−(−۱)²=۴ و L₃₃=۲ است.
| مرحلهٔ قطری | مقدارِ پیش از ریشه | خانهٔ قطرِ L |
|---|---|---|
| اول | ۴ | ۲ |
| دوم | ۹ | ۳ |
| سوم | ۴ | ۲ |
پس L سطرهایِ(۲،۰،۰)، (۱،۳،۰) و(۱،−۱،۲) دارد. کد این مقادیر را در حلقه محاسبه میکند؛ صرفاً جدولِ ازپیشنوشتهشده را برنمیگرداند. ضربِ LLᵀ دوباره تمامِ نه خانهٔ A را میدهد. مثلاً خانهٔ سطرِ سوم و ستونِ دوم،۱×۱+(−۱)×۳+۲×۰=−۲ است.
دو دستگاهِ سادهتر به جایِ یک معکوس
ابتدا Ly=b را از بالا به پایین حل میکنیم. سطرِ اول۲y₁=۶، پس y₁=۳. سطرِ دوم۳+۳y₂=۲۴، پس y₂=۷. سطرِ سوم۳−۷+۲y₃=−۸، پس y₃=−۲. نتیجه y=(۳،۷،−۲) است.
بعد Lᵀx=y را از پایین به بالا حل میکنیم:۲x₃=−۲، سپس۳x₂−x₃=۷، و در آخر۲x₁+x₂+x₃=۳. جواب x=(۱،۲،−۱) است. کنترلِ مستقلِ Ax−b در هر سه سطر صفر میشود. صفرِ این مثالِ کوچک، تضمینِ صفرشدنِ خطایِ همهٔ محاسباتِ ممیزشناور نیست.
چرا هر ماتریسِ متقارنی پذیرفته نمیشود؟
در تعریفِ حقیقی، مثبتمعین یعنی zᵀAz برایِ هر بردارِ غیرصفر مثبت باشد. برایِ عاملی با قطرِ مثبت و وارونپذیر، zᵀLLᵀz=‖Lᵀz‖² این رابطه را روشن میکند. با این حال کدِ ما همهٔ بردارها را نمونهگیری نمیکند؛ در فرایندِ تجزیه، pivotِ غیرمثبت را بهعنوانِ شکستِ همین قرارداد رد میکند.
| ماتریسِ ورودیِ نمونه | چه اتفاقی میافتد؟ |
|---|---|
| سطرهایِ(۲،۱) و(۰،۲) | نامتقارن؛ پیش از تجزیه رد میشود |
| سطرهایِ(۱،۱) و(۱،۱) | نیمهمعین؛ pivotِ دوم صفر و رد میشود |
| سطرهایِ(۱،۲) و(۲،۱) | نامعین؛ pivotِ دوم منفی۳ و رد میشود |
نیمهمعینِ مثالِ دوم با مثبتمعین یکسان نیست؛ صفرشدنِ یک جهتِ غیرصفر، تقسیمِ موردِ نیازِ روش را مسئلهدار میکند. برنامه بهطورِ خودکار عددی به قطر اضافه نمیکند و ورودی را «اصلاحشده» تحویل نمیدهد. چنین تغییری، مسئله را عوض میکند و باید جدا توجیه شود.
کنترلِ تقارنِ ما با رفتارِ NumPy فرق دارد
در کدِ آموزشی، همهٔ خانهها متناهی و تفاوتِ دو خانهٔ قرینه حداکثر۱۰بهتوانِ−۱۲ خواسته شده است. این آستانهٔ مطلق قراردادِ فایلِ کوچکِ ماست، نه معیارِ عمومیِ تقارن در هر مقیاس. NumPy طبقِ مستنداتِ خودش تقارن را بررسی نمیکند و فقط مثلثِ انتخابی و قطر را میخواند؛ از اجرایِ موفقِ کتابخانه، کنترلِ کاملِ دو نیمه را نتیجه نگیرید.
نزدیکِ مرزِ تکینی، خطایِ عددی میتواند رویِ pivot اثر بگذارد. این برنامهٔ آموزشی جایِ مدیریتِ خطا و آزمونِ یک حلکنندهٔ تولیدی نیست. ورودیِ مختلط، عاملِ بالامثلثی، ماتریسِ تنک یا اندازهگیریِ سرعت در آن آزمایش نشده است. منبعِ NumPy برایِ تعریف و قراردادِ حل خوانده شده، نه برایِ نسبتدادنِ اجرایِ کتابخانه به این فایل.
کاربرد را از شاهدِ محصول جدا نگه داریم
برایِ دنبالکردنِ ترتیبِ ضرب، راهنمایِ بردار و ماتریس مکمل است؛ در اینجا عاملِ مثلثی و شرطِ مثبتمعین را محاسبه کردیم. عددِ درستِ یک دستگاهِ ساختگی، نتیجهٔ واقعیِ پروژه را نشان نمیدهد. اگر هدفِ شما پاسخِ تلفن یا پیگیریِ مشتری است، مسیر و خروجیِ موردِ انتظار را در راهکارهایِ اپرا مطرح کنید؛ این مقاله اعلامِ سرویسِ چولسکی یا معماریِ خاصِ محصولات نیست.
فایل تمرین و منبع
حلقهٔ ساختِ L، کنترلِ تقارن و دو حل؛ Python · pivotها، بازسازی، جواب و علتِ ردِ سه ماتریس
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.