חזור לתיקייה: תרגול

2 - פירוק LU

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • כללי
  • אלגוריתם למציאת פירוק LU
  • סיבוכיות האלגוריתם
  • פירוק עם פרמוטציה
  • פתרון מערכת משוואות עם LU
  • תרגול

2 - פירוק LU

02340125

אלגוריתמים נומריים

רשימות תרגול לקריאה בשבת

פירוק LU

הופק מתוך תקיית התואר של שקד

uni-folder.vercel.app

הגדרה 1 (מטריצה בסיסית)

תהי EEE מטריצה אשר כל איברי האלכסון שלה שווים ל-111 ויתר האיברים הם אפסים, מלבד האיבר ה-ijijij במשולש התחתון(i>ji>ji>j) שערכו α\alphaα.

הכפלת המטריצה AAA במטריצה EEE משמאל(כלומר EAEAEA) שקולה להוספת השורה iii לשורה jjj ב-AAA כאשר היא מוכפלת ב-α\alphaα.

דוגמה

עבור המטריצה A=(1312811104)A=\begin{pmatrix}1&3&1\\2&8&1\\1&10&4\end{pmatrix}A=​121​3810​114​​, הוספת השורה הראשונה כפול 3 לשורה השלישית שקולה ל:

EA=(100010301)(1312811104)=(1312814197)EA=\begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 3 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 3 & 1 \\ 2 & 8 & 1 \\ 1 & 10 & 4 \end{pmatrix}=\begin{pmatrix} 1 & 3 & 1 \\ 2 & 8 & 1 \\ 4 & 19 & 7 \end{pmatrix}EA=​103​010​001​​​121​3810​114​​=​124​3819​117​​

וזה שקול ל:

(1312811104)R3=R3+3R1→(1312814197)\begin{pmatrix} 1 & 3 & 1 \\ 2 & 8 & 1 \\ 1 & 10 & 4 \end{pmatrix}\overrightarrow{R_{3}=R_{3}+3R_{1}}\begin{pmatrix} 1 & 3 & 1 \\ 2 & 8 & 1 \\ 4 & 19 & 7 \end{pmatrix}​121​3810​114​​R3​=R3​+3R1​​​124​3819​117​​
טענה

היפוך של EEE שהוצגה קודם אף הוא בעל אותו מבנה(משולש תחתון, 1 באלכסון הראשי ואיבר יחיד שונה מאפס מתחת לאלכסון)

למעשה, בהינתן EEE, ההיפוך שלה נתון ע"י מטריצה זהה לה בצורתה אך עם סימן הפוך על האיבר ה-ijijij.
באופן כללי:

A→Ri=Ri+αRjEA→Ri=Ri−αRjE−1(EA)=AA \xrightarrow{R_{i}=R_{i}+\alpha R_{j}}EA \xrightarrow{R_{i}=R_{i}-\alpha R_{j}}E^{-1}(EA)=AARi​=Ri​+αRj​​EARi​=Ri​−αRj​​E−1(EA)=A

באופן נורמלי מאוד למטריצות, אם נכפיל את אותן מטריצות EEE נקבל תוצאה שונה על בסיס סדר ההכפלה. הסדר שמעניין אותנו יהיה הסדר E1E2E3…E_{1}E_{2}E_{3}\dotsE1​E2​E3​… - הסדר ההפוך מדירוג.
בסדר הזה, נקבל כי:

E1E2=(100210001)(100010031)=(100210031)E_{1}E_{2}=\begin{pmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 3 & 1 \end{pmatrix}=\begin{pmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 0 & 3 & 1 \end{pmatrix}E1​E2​=​120​010​001​​​100​013​001​​=​120​013​001​​
מסקנה (אני לא הולך לצייר את כל הציורים - שכן אין לי כח, וזו לא הוכחה)

אם ההכפלה פועלת מימין לשמאל, אין השפעה הדדית בין הערכים מתחת לאלכסון ולכן חישוב המכפלה קל למדי.

ישנן מטריצות מסויימות שניתן לפרקן לשתי מטריצות LLL ו-UUU כאשר LLL משולשת תחתונה ו-UUU משולשת עליונה.

Ek…E2E1A=U  ⟹  A=(Ek…E2E1)−1U=(E1)−1(E2)−1…(Ek)−1U=L1L2…LkU=LUE_{k}\dots E_{2}E_{1}A=U \implies A=(E_{k}\dots E_{2}E_{1})^{-1}U=(E_{1})^{-1}(E_{2})^{-1}\dots(E_{k})^{-1}U=L_{1}L_{2}\dots L_{k}U=LUEk​…E2​E1​A=U⟹A=(Ek​…E2​E1​)−1U=(E1​)−1(E2​)−1…(Ek​)−1U=L1​L2​…Lk​U=LU
הערה

הפירוק הזה מגיע מהדירוג של גאוס

הגדרה 2 (מטריצה רגילה)

מטריצה ריבועית AAA תקרא רגילה אם היא ניתנת לפירוק מהצורה A=LUA=LUA=LU כאשר:

  • LLL היא מטריצה משולשת תחתונה בסיסית
  • UUU מטריצה משולשת עליונה עם איברי אלכסון שונים מאפס.
מסקנה

  • מטריצה רגילה היא מטריצה הפיכה.
  • הפירוק הנ"ל הוא יחיד.

אלגוריתם למציאת פירוק LULULU

נניח כי AAA ריבועית ורגילה וברצוננו לבנות עבורה פירוק LULULU מהצורה:

(a1,1a1,2…a1,n−1a1,na2,1a2,2…a2,n−1a2,n⋮⋮⋱⋮⋮an−1,1an−1,2…an−1,n−1an−1,nan,1an,2…an,n−1an,n)A=(100…0ℓ2,110…0ℓ3,1ℓ3,21…0⋮⋮⋮⋱⋮ℓn,1ℓn,2ℓn,3…1)L(u1,1u1,2u1,3…u1,n0u2,2u2,3…u2,n00u3,3…u3,n⋮⋮⋮⋱⋮000…un,n)U\underset{A}{\begin{pmatrix} a_{1,1} & a_{1,2} & \dots & a_{1,n-1} & a_{1,n} \\ a_{2,1} & a_{2,2} & \dots & a_{2,n-1} & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ a_{n-1,1} & a_{n-1,2} & \dots & a_{n-1,n-1} & a_{n-1,n} \\ a_{n,1} & a_{n,2} & \dots & a_{n,n-1} & a_{n,n} \end{pmatrix}}=\underset{L}{\begin{pmatrix} 1 & 0 & 0 & \dots & 0 \\ \ell_{2,1} & 1 & 0 & \dots & 0 \\ \ell_{3,1} & \ell_{3,2} & 1 & \dots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \ell_{n,1} & \ell_{n,2} & \ell_{n,3} & \dots & 1 \end{pmatrix}}\underset{U}{\begin{pmatrix} u_{1,1} & u_{1,2} & u_{1,3} & \dots & u_{1,n} \\ 0 & u_{2,2} & u_{2,3} & \dots & u_{2,n} \\ 0 & 0 & u_{3,3} & \dots & u_{3,n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \dots & u_{n,n} \end{pmatrix}}A​a1,1​a2,1​⋮an−1,1​an,1​​a1,2​a2,2​⋮an−1,2​an,2​​……⋱……​a1,n−1​a2,n−1​⋮an−1,n−1​an,n−1​​a1,n​a2,n​⋮an−1,n​an,n​​​​=L​1ℓ2,1​ℓ3,1​⋮ℓn,1​​01ℓ3,2​⋮ℓn,2​​001⋮ℓn,3​​………⋱…​000⋮1​​​U​u1,1​00⋮0​u1,2​u2,2​0⋮0​u1,3​u2,3​u3,3​⋮0​………⋱…​u1,n​u2,n​u3,n​⋮un,n​​​​

נראה כעת אלגוריתם קל לתכנות אשר ישיג את הפירוק הזה:

  • נתחיל במציאת העמודה הראשונה של LLL והשורה הראשונה של UUU.
הערה

אנו נראה שבתהליך סדרתי פשוט שנשען על גילוי עמודה ושורה מהפירוק כל פעם נוכל לחשוף את מלוא הפירוק

הכפלת השורה הראשונה ב-LLL ב-UUU מבינה את השורה הראשונה מ-UUU וזו חייבת להיות זהה לשורה הראשונה מ-AAA.

(a1,1a1,2a1,3…a1,n)=(100…0)(u1,1u1,2u1,3…u1,n0u2,2u2,3…u2,n00u3,3…u3,n⋮⋮⋮⋱⋮000…un,n)=(u1,1u1,2u1,3…u1,n)\begin{align*} \begin{pmatrix} a_{1,1} & a_{1,2} & a_{1,3} & \dots & a_{1,n} \end{pmatrix}&=\begin{pmatrix} 1 & 0 & 0 & \dots & 0 \end{pmatrix}\begin{pmatrix} u_{1,1} & u_{1,2} & u_{1,3} & \dots & u_{1,n} \\ 0 & u_{2,2} & u_{2,3} & \dots & u_{2,n} \\ 0 & 0 & u_{3,3} & \dots & u_{3,n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \dots & u_{n,n} \end{pmatrix} \\ & =\begin{pmatrix} u_{1,1} & u_{1,2} & u_{1,3} & \dots & u_{1,n} \end{pmatrix} \end{align*}(a1,1​​a1,2​​a1,3​​…​a1,n​​)​=(1​0​0​…​0​)​u1,1​00⋮0​u1,2​u2,2​0⋮0​u1,3​u2,3​u3,3​⋮0​………⋱…​u1,n​u2,n​u3,n​⋮un,n​​​=(u1,1​​u1,2​​u1,3​​…​u1,n​​)​

לכן, נוכל בקלות למצוא את השורה הראשונה של UUU. כעת, נראה כי גם נוכל בקלות למצוא את LLL:
הכפלת LLL בעמודה הראשונה של UUU תיתן את העמודה הראשונה של AAA ומכיוון ש-u1,1=a1,1u_{1,1}=a_{1,1}u1,1​=a1,1​ נוכל לחלץ את כל איברי העמודה הראשונה של LLL.

(a1,1a2,1a3,1⋮an,1)=(100…0ℓ2,110…0ℓ3,1ℓ3,21…0⋮⋮⋮⋱⋮ℓn,1ℓn,2ℓn,3…1)(u1,100⋮0)=(u1,1⋅1u1,1ℓ2,1u1,1ℓ3,1⋮u1,1ℓn,1)\begin{pmatrix} a_{1,1} \\ a_{2,1} \\ a_{3,1} \\ \vdots \\ a_{n,1} \end{pmatrix}=\begin{pmatrix} 1 & 0 & 0 & \dots & 0 \\ \ell_{2,1} & 1 & 0 & \dots & 0 \\ \ell_{3,1} & \ell_{3,2} & 1 & \dots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \ell_{n,1} & \ell_{n,2} & \ell_{n,3} & \dots & 1 \end{pmatrix}\begin{pmatrix} u_{1,1} \\ 0 \\ 0 \\ \vdots \\ 0 \end{pmatrix}=\begin{pmatrix} u_{1,1}\cdot 1 \\ u_{1,1}\ell_{2,1} \\ u_{1,1}\ell_{3,1} \\ \vdots \\ u_{1,1}\ell_{n,1} \end{pmatrix}​a1,1​a2,1​a3,1​⋮an,1​​​=​1ℓ2,1​ℓ3,1​⋮ℓn,1​​01ℓ3,2​⋮ℓn,2​​001⋮ℓn,3​​………⋱…​000⋮1​​​u1,1​00⋮0​​=​u1,1​⋅1u1,1​ℓ2,1​u1,1​ℓ3,1​⋮u1,1​ℓn,1​​​   ⟹  ∀2≤k≤n:  ℓk,1=ak,1a1,1\implies \forall 2\leq k\leq n:\; \ell_{k,1}=\frac{a_{k,1}}{a_{1,1}}⟹∀2≤k≤n:ℓk,1​=a1,1​ak,1​​

כך, נוכל בקלות למצוא את העמודה הראשונה של LLL.

  • כעת, לאחר שמצאנו את העמודה הראשונה של LLL והשורה הראשונה של UUU, נציג את המכפלה הזו כמכפלת בלוקים 2×22\times22×2:

​נומרייםתרגול2-1.png
כאשר נותר לנו למצוא את הדברים הצבועים בכחול.

B=A2−ℓ‾1u‾1t=L2U2B=A_{2}-\underline{\ell}_{1}\underline{u}_{1}^t=L_{2}U_{2}B=A2​−ℓ​1​u​1t​=L2​U2​

אנו שוב מול פירוק LULULU עבור מטריצה קטנה יותר ונחזור על אותו התהליך של בניית העמודה הראשונה של L2L_{2}L2​ והשורה הראשונה של U2U_{2}U2​ (רקורסיה יהיה מאוד נחמד פה)
כך הלאה עד שנגיע לבלוק בגודל 1×11\times11×1.

סיבוכיות האלגוריתם

∑k=1nk(k−1)=n(n+1)(2n+1)6−n(n+1)2=n(n+1)(n−1)3≈n33=Θ(n3)\sum_{k=1}^n k(k-1)=\frac{n(n+1)(2n+1)}{6}-\frac{n(n+1)}{2}=\frac{n(n+1)(n-1)}{3} \approx \frac{n^3}{3}=\Theta(n^3)k=1∑n​k(k−1)=6n(n+1)(2n+1)​−2n(n+1)​=3n(n+1)(n−1)​≈3n3​=Θ(n3)

פירוק עם פרמוטציה

לפעמים, כפי שאנו זוכרים מההרצאה, ניתן לפרק כל מטריצה באמצעות פרמוטציות כך:

משפט

כל מטריצה AAA ניתנת לפירוק מהצורה PA=LUPA=LUPA=LU כאשר:

  • LLL מטריצה משולשת תחתונה בסיסית
  • UUU מטריצה משולשת עליונה כלשהי
  • PPP מטריצת פרמוטציות
הערה

אם מדובר במטריצה ריבועית ואיברי האלכסון הראשי של UUU כולם שונים מאפס, אזי AAA הפיכה ומכפלת האיברים הנ"ל היא הדטרמיננט של AAA עד כדי סימן!.

ניתן לפרק עם פרמוטציה בעזרת קוד המטלאב הבא(הערה: אני לא יודע מאטלב והמתרגל אמר שמאטלב זה לא בחומר)

function [P,L,U] = LU_PIV(A) 

[m,n] = size (A);
P = eye(m,m); 
L = eye(m,m); 
U = zeros(m,n); 
tol = sqrt(eps);

for k = 1:min(m, n) 
	r = findpiv(A (k:m,k),k);
	if r ~= k 
		A([r k],1:n) = A([k r],1:n);
		L([r k],1:k-1) = L([k r],1:k-1);
		P([r k],:) = P([k r],:); 
	end 
	U(k, k:n) = A(k, k:n);
	if abs(A(k,k)) >= tol 
		L(k+1:m,k) = A(k+1:m,k)/A(k,k); 
		A(k+1:m,k+1:n) = A (k+1:m,k+1:n)- ...
						 L(k+1:m, k) *U(k,k+1:n); 
	end 
end 

function [r] = findpiv(a, k) 
pos=find(abs(a)==max(abs(a))); 
r=pos(1)+k-1;

פתרון מערכת משוואות עם LULULU

Ax‾=b‾  ⟹  Pb‾=PAx‾=LUx‾  ⟹  Pb‾=L(Ux‾)=Ly‾A\underline{x}=\underline{b} \implies P\underline{b}=PA\underline{x}=LU\underline{x}\implies P\underline{b}=L(U\underline{x})=L\underline{y}Ax​=b​⟹Pb​=PAx​=LUx​⟹Pb​=L(Ux​)=Ly​

נפתור בשלבים בעזרת החלפה קדמית ואחורית:

  • שלב א': Ly‾=Pb‾L\underline{y}=P\underline{b}Ly​=Pb​
  • שלב ב': Ux‾=y‾U\underline{x}=\underline{y}Ux​=y​.

פתרון בדרך זו יעיל יותר מהיפוך מטריצה.

תרגול

תרגיל

מצאו את הפתרון למערכת המשוואות הבאה:

(132−1026143398−72−1−3−331)(x1x2x3x4x5)=(abcd)\begin{pmatrix} 1 & 3 & 2 & -1 & 0 \\ 2 & 6 & 1 & 4 & 3 \\ 3 & 9 & 8 & -7 & 2 \\ -1 & -3 & -3 & 3 & 1 \end{pmatrix}\begin{pmatrix} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \\ x_{5} \end{pmatrix}=\begin{pmatrix} a \\ b \\ c \\ d \end{pmatrix}​123−1​369−3​218−3​−14−73​0321​​​x1​x2​x3​x4​x5​​​=​abcd​​

ללא פרמוטציות

נשתמש באלגוריתם מעט אחר - בשיעורי הבית, לפי המתרגל, נוכל להנות מהאלגוריתם שראינו:

(1000010000101001)(10000100−30100001)(1000−210000100001)(132−1026143398−72−1−3−331)=(132−1000−363002−4200−121)\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ {\color{red}1} & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ {\color{green}-3} & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ {\color{blue}-2} & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 3 & 2 & -1 & 0 \\ {\color{blue} 2} & 6 & 1 & 4 & 3 \\ {\color{green} 3} & 9 & 8 & -7 & 2 \\ {\color{red} -1} & -3 & -3 & 3 & 1 \end{pmatrix}=\begin{pmatrix} 1 & 3 & 2 & -1 & 0 \\ 0 & 0 & -3 & 6 & 3 \\ 0 & 0 & 2 & -4 & 2 \\ 0 & 0 & -1 & 2 & 1 \end{pmatrix}​1001​0100​0010​0001​​​10−30​0100​0010​0001​​​1−200​0100​0010​0001​​​123−1​369−3​218−3​−14−73​0321​​=​1000​3000​2−32−1​−16−42​0321​​

נשים לב כי העמודה השנייה כבר התאפסה ולכן נמשיך לעמודה השלישית:

(1000010000100−1301)(10000100023100001)(132−1000−363002−4200−121)=(132−1000−3630000400000)\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & {\color{red} -\frac{1}{3}} & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & {\color{blue} \frac{2}{3}} & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 3 & 2 & -1 & 0 \\ 0 & 0 & -3 & 6 & 3 \\ 0 & 0 & {\color{blue} 2 } & -4 & 2 \\ 0 & 0 & {\color{red} -1} & 2 & 1 \end{pmatrix}=\begin{pmatrix} 1 & 3 & 2 & -1 & 0 \\ 0 & 0 & -3 & 6 & 3 \\ 0 & 0 & 0 & 0 & 4 \\ 0 & 0 & 0 & 0 & 0 \end{pmatrix}​1000​010−31​​0010​0001​​​1000​0132​0​0010​0001​​​1000​3000​2−32−1​−16−42​0321​​=​1000​3000​2−300​−1600​0340​​

קיבלנו את המטריצה UUU שלנו. כעת, נמצא את LLL:

L=((1000010000101001)(10000100−30100001)(1000−210000100001)(1000010000100−1301)(10000100023100001))−1=L=\left( \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ {\color{red}1} & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ {\color{green}-3} & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ {\color{blue}-2} & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & {\color{orange} -\frac{1}{3}} & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & {\color{purple} \frac{2}{3}} & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \right)^{-1}=L=​​1001​0100​0010​0001​​​10−30​0100​0010​0001​​​1−200​0100​0010​0001​​​1000​010−31​​0010​0001​​​1000​0132​0​0010​0001​​​−1= (100001000−23100001)(10000100001001301)(1000210000100001)(1000010030100001)(100001000010−1001)=(100021003−2310−11301)\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & -\frac{2}{3} & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & \frac{1}{3} & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 2 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 3 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -1 & 0 & 0 & 1 \end{pmatrix}=\begin{pmatrix} 1 & 0 & 0 & 0 \\ 2 & 1 & 0 & 0 \\ 3 & -\frac{2}{3} & 1 & 0 \\ -1 & \frac{1}{3} & 0 & 1 \end{pmatrix}​1000​01−32​0​0010​0001​​​1000​01031​​0010​0001​​​1200​0100​0010​0001​​​1030​0100​0010​0001​​​100−1​0100​0010​0001​​=​123−1​01−32​31​​0010​0001​​

ולכן:

A=(132−1026143398−72−1−3−331)=(100021003−2310−11301)(132−1000−3630000400000)=LUA=\begin{pmatrix} 1 & 3 & 2 & -1 & 0 \\ 2 & 6 & 1 & 4 & 3 \\ 3 & 9 & 8 & -7 & 2 \\ -1 & -3 & -3 & 3 & 1 \end{pmatrix}=\begin{pmatrix} 1 & 0 & 0 & 0 \\ 2 & 1 & 0 & 0 \\ 3 & -\frac{2}{3} & 1 & 0 \\ -1 & \frac{1}{3} & 0 & 1 \end{pmatrix}\begin{pmatrix} 1 & 3 & 2 & -1 & 0 \\ 0 & 0 & -3 & 6 & 3 \\ 0 & 0 & 0 & 0 & 4 \\ 0 & 0 & 0 & 0 & 0 \end{pmatrix}=LUA=​123−1​369−3​218−3​−14−73​0321​​=​123−1​01−32​31​​0010​0001​​​1000​3000​2−300​−1600​0340​​=LU

כעת, נפתור את הממ"ל:

Ax‾=LUx‾=L(Ux‾)=Ly‾=b‾=(abcd)A\underline{x}=LU\underline{x}=L(U\underline{x})=L\underline{y}=\underline{b}=\begin{pmatrix} a \\ b \\ c \\ d \end{pmatrix}Ax​=LUx​=L(Ux​)=Ly​=b​=​abcd​​ (100021003−2310−11301)(y1y2y3y4)=(abcd)\begin{pmatrix} 1 & 0 & 0 & 0 \\ 2 & 1 & 0 & 0 \\ 3 & -\frac{2}{3} & 1 & 0 \\ -1 & \frac{1}{3} & 0 & 1 \end{pmatrix}\begin{pmatrix} y_{1} \\ y_{2} \\ y_{3} \\ y_{4} \end{pmatrix}=\begin{pmatrix} a \\ b \\ c \\ d \end{pmatrix}​123−1​01−32​31​​0010​0001​​​y1​y2​y3​y4​​​=​abcd​​ {y1=ay2=b−2y1=b−2ay3=c+23y2−3y1=c−3a+23(b−2a)y4=d+y1−13y2=d+a−b−2a3\begin{cases} y_{1}=a \\ y_{2}=b-2y_{1}=b-2a \\ y_{3}=c+\frac{2}{3}y_{2}-3y_{1}=c-3a+\frac{2}{3}(b-2a) \\ y_{4}=d+y_{1}-\frac{1}{3}y_{2}=d+a-\frac{b-2a}{3} \end{cases}⎩⎨⎧​y1​=ay2​=b−2y1​=b−2ay3​=c+32​y2​−3y1​=c−3a+32​(b−2a)y4​=d+y1​−31​y2​=d+a−3b−2a​​

כעת, נפתור סופית:

(132−1000−3630000400000)(x1x2x3x4x5)=(ab−2ac−3a+23(b−2a)d+a−b−2a3)\begin{pmatrix} 1 & 3 & 2 & -1 & 0 \\ 0 & 0 & -3 & 6 & 3 \\ 0 & 0 & 0 & 0 & 4 \\ 0 & 0 & 0 & 0 & 0 \end{pmatrix}\begin{pmatrix} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \\ x_{5} \end{pmatrix}=\begin{pmatrix} a \\ b-2a \\ c-3a+\frac{2}{3}(b-2a) \\ d+a-\frac{b-2a}{3} \end{pmatrix}​1000​3000​2−300​−1600​0340​​​x1​x2​x3​x4​x5​​​=​ab−2ac−3a+32​(b−2a)d+a−3b−2a​​​
מסקנה

  • אם d+a−b−2a3d+a-\frac{b-2a}{3}d+a−3b−2a​ אינו 000 אזי, אין פתרון
  • אם ביטוי הנ"ל הוא 000, אז x5x_{5}x5​ נקבע מתוך המשוואה השלישית ואילו ארבעת הנעלמים נותרים נקבעים עם 222 דרגות חופש בעזרת שתי המשוואות הראשונות.
תרגיל (שחזור תמונה)

אנו רוצים לקבל את התמונה הבאה אך בפועל אנו מקבלים גרסה מעט מטושטשת שלה:
​נומריים-תרגול2-2.png
איך נוכל מהתמונה המטושטשת לחזור לתמונה החדה?

תמונה היא מטריצה והמספרים המאכלסים אותה הם פיקסלים המייצגים "רמות האפור" (ערך בתחום [0,1][0,1][0,1] כאשר 000 הוא שחור ו-111 הוא לבן)
טשטוש מתקבל כאשר כל ערך של פיקסל מוחלף בממוצע משוקלל של סביבתו. (לכו לתואר בפיזיקה כדי לדעת למה זה קורה)
נמחיש את פעולת הטשטוש על עמודה בתמונה: y‾=Hx‾\underline{y}=H\underline{x}y​=Hx​ כאשר המטריצה HHH מייצגת את פעולת הטשטוש - הכפלת עמודה בה יוצרת עמודה חדשה עם מריחת הערכים:

y5=x3+2x4+3x5+2x6+x79y_{5}=\frac{x_{3}+2x_{4}+3x_{5}+2x_{6}+x_{7}}{9}y5​=9x3​+2x4​+3x5​+2x6​+x7​​

סכום כל שורה במטריצה(למעט השוליים) הוא 1 על מנת לשמר ערך ממוצע - לכן החלוקה ב-999.

(y1y2y3y4y5y6y7y8y9y10y11y12y13)=(3210000000000232100000000012321000000000123210000000001232100000000012321000000000123210000000001232100000000012321000000000123210000000001232100000000012320000000000123)(x1x2x3x4x5x6x7x8x9x10x11x12x13)\begin{pmatrix} y_{1} \\ y_{2} \\ y_{3} \\ y_{4} \\ y_{5} \\ y_{6} \\ y_{7} \\ y_{8} \\ y_{9} \\ y_{10} \\ y_{11} \\ y_{12} \\ y_{13} \end{pmatrix}=\begin{pmatrix} 3 & 2 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 2 & 3 & 2 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 2 & 3 & 2 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 2 & 3 & 2 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 2 & 3 & 2 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 2 & 3 & 2 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 2 & 3 & 2 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 2 & 3 & 2 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 2 & 3 & 2 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 2 & 3 & 2 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 2 & 3 & 2 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 2 & 3 & 2 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 2 & 3 \end{pmatrix}\begin{pmatrix} x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \\ x_{5} \\ x_{6} \\ x_{7} \\ x_{8} \\ x_{9} \\ x_{10} \\ x_{11} \\ x_{12} \\ x_{13} \end{pmatrix}​y1​y2​y3​y4​y5​y6​y7​y8​y9​y10​y11​y12​y13​​​=​3210000000000​2321000000000​1232100000000​0123210000000​0012321000000​0001232100000​0000123210000​0000012321000​0000001232100​0000000123210​0000000012321​0000000001232​0000000000123​​​x1​x2​x3​x4​x5​x6​x7​x8​x9​x10​x11​x12​x13​​​

נסתכל על תיאור מתמטי של פעולת הטשטוש:

Y=HXHtY =HXH^tY=HXHt

כאשר YYY היא התמונה המטושטשת ו-XXX היא התמונה המקורית.
המטריצה HHH מטשטשת את העמודות והשורות בנפרד.

כעת, ברורה משימת השחזור שלפנינו: בהינתן YYY ובידיעת HHH, ברצונינו לחלץ את XXX.
המשימה הזו היא בעצם פתרון של מלא ממ"לים כפי שראינו הנ"ל. אנו נוכל להקל על התהליך באמצעות פירוק LULULU למטריצה HHH.

הנה שלבי השחזור:

  • נסמן Z=XHtZ=XH^tZ=XHt. בשלב הראשון, עלינו לפתור את המשוואה Y=HZY=HZY=HZ.
  • נקבל את ZZZ ואז נפתור את המשוואה Zt=HXtZ^t=HX^tZt=HXt ועם זה נסיים.
  • בשני המקרים לא מדובר במשוואה אחת, אלא בסדרה שלהן.