בהינתן מערכת משוואות לינארית נוכל לרשום אותה בצורה הבאה:
בשיטת האלימינציה של גאוס, אנחנו ראשית מדרגים את המטריצה, ואז מבצעים חילוץ לאחור (backward sweep):
נרחיב את מטריצה בעוד עמודה שתכלול את ערכי :
נחליף את השורות באופן כזה שאיבר יהיה האיבר הגדול ביותר (בערכו המוחלט) בעמודה הראשונה.
ניצור עמודת אפסים מתחת לאיבר ע”י:
חיסור מהשורה השנייה (כאשר ב- הכוונה לשורה הראשונה).
חיסור מהשורה השלישית.
חיסור מהשורה ה--ית.
נקבל:
נחזור על שלבים 2-3 על התת-מטריצה מסדר של שמתקבלת אם נתעלם מהשורה והעמודה הראשונה שלה. כתוצאה מכך אנחנו נסיים את דירוג המטריצה ונקבל מטריצה משולשת עליונה:
נפתור עבור , כאשר נתחיל מהאיבר לפי הנוסחה הבאה:
כאשר היא המטריצה .
ב-pseudocode:
כאשר סוכמים את מספר הפעולות שעושים בשיטה זו, מקבלים כי בסך הכל מבצעים פעולות. לכן מסווגים את שיטת האלימינציה עם סיבוכיות .
נביט בשלב השלישי של אלימיניציית גאוס. אנחנו מאפסים את כל האיברים מתחת ל-, כאשר כל הפעולות שאנחנו עושים על השורות מתבצעות גם על העמודה הכי ימנית - וקטור . נשים לב שאת פעולות אלו אנחנו למעשה יכולים לעשות בזמן יותר מאוחר, כי הם לא משפיעות על המטריצה .
את כל הפעולות האלו אנחנו יכולים לייצג בעזרת מטריצה משולשת עליונה (זה בעצם סוג של מטריצה אלמנטרית):
כלומר, לאחר איפוס העמודה הראשונה, נוכל לרשום את המטריצה והוקטור שמתקבלים כך:
באותו אופן נמשיך פעמים עד שנקבל את המטריצה המדורגת שלנו (מטריצה משולשת עליונה). נסמן אותה ב-:
באותו אופן עבור :
אם נפעיל את הפעולות ההפוכות () על בחזרה, אנחנו נקבל את המטריצה המקורית שלנו, :
נסמן את המכפלת מטריצות הארוכה ב-:
ונקבל:
מה שביצענו כאן נקרא פירוק LU - פירקנו את המטריצה למכפלת מטריצה משולשת תחתונה במטריצה משולשת עליונה.
כדי להבין איך נראה, נשים לב ש- בעל בדיוק אותה צורה כמו , רק הפעם האיברים שלו ללא סימן המינוס. אז למשל עבור , ההופכי שלו נראה כך:
לכן המכפלה של כל המטריצות האלו נראית כך:
סדר הפעולות עבור פירוק מטריצה הוא כך:
מבצעים את הכפל מטריצות, כאשר את המשוואות מתחילים לפתור מה-”ר” החיצוני ל-”ר” הפנימי, כאשר תמיד נפתור קודם את האלמנט הפינתי.
נפתור את המערכת היותר פשוטה ע”י חליצה לפנים (כמו “חליצה לאחור”, אבל הפוך):
נפתור את המערכת הבאה ע”י חליצה לאחור:
הערה:
אין משמעות לכך שאלכסון ה--ים יהיה דווקא במטריצת ולא ב-. למעשה מבדילים בין שני המקרים בשמות שונים.
כאשר אנו קובעים ש- אנחנו קוראים לשיטה זו שיטת Crout.
כאשר אנו קובעים ש- אנחנו קוראים לשיטה זו שיטת Doolittle.
קוד ב-MATLAB:
מבחינת סיבוכיות, יש בפירוק LU את אותו מספר פעולות כמו בגאוס. לכן גם לפירוק LU סיבוכויות . אך הפעם, מאחר ולא הכללנו את בכל החישובים שלנו, אנחנו יכולים לשמור את המטריצות ו- במקרה ונרצה לחשב יותר מהר עבור אחר.
עבור מטריצות סימטריות שהן מוגדרות חיובית נוכל לבצע פירוק LU בסיבוכיות יותר טובה, הנקרא פירוק שולסקי (Cholesky). במקרה כזה אנחנו יכולים למצוא מטריצה יחידה שהיא:
משולשת תחתונה
עם איברים חיוביים וממשיים על האלכסון
מתקיים:
דוגמה:
במקרה של מטריצה מסדר , נניח כי מטריצה כזאת קיימת:
כעת יש לנו שלושה משוואות בשלושה נעלמים:
הסיבוכיות של אלגוריתם זה היא גם , אבל היא דורשת פחות פעולות חישוב סך הכל.
עבור פירוק LU, מתבצעים חישובים. לעומת זאת, בפירוק שולסקי, מתבצעים חישובים.