אנו נעסוק במטריצות אורתונורמליות ונבין את חשיבותן. נציג את פירוק QR למטריצות ואת השימוש בו לפתרון בעיות ריבועים פחותים.
נניח שנתונה לנו המטריצה A בגודל n×m כאשר n>m מדרגה מלאה ויחד עמה נתון גם וקטור שרירותי b.
זוהי בעיית ריבועים פחותים המוגדרת מהצמד A ו-b ומציאת הפתרון לפי הנוסחאות הסגורות לוקח הרבה עבודה.
נניח וידוע שהעמודות אורתונורמליות? כלומר, מתקיים ajtak={10j=kj=k (פעולה כזו בין שני וקטורים נקראת מכפלה פנימית) אזי:
לכן מתקיים: ci=0 לכל 1≤i≤n ולכן, לפי הגדרה, הוקטורים בת"ל. ∎
מטריצות אורתונומרליות
הגדרה 1 (וקטורים אורתוגונליים)
יהי V מ"ו מעל שדה F בעל מכפלה פנימית. יהיו u=v∈V.
הוקטורים u,v יקראו אורתוגונליים זה לזה אם ⟨u,v⟩=0.
הגדרה 2 (בסיס אורתונורמלי)
יהי V מ"ו מעל שדה F בעל מכפלה פנימית ויהי B={v1,…,vn} בסיס ל-V. B יקרא בסיס אורתונורמלי אם הוא מקיים את שני התנאים הבאים:
כל שני וקטורים שונים ב-B אורתוגונליים. (כלומר, ∀i,j≤n:⟨vi,vj⟩=0)
הנורמה של כל וקטור בקבוצה שווה בדיוק ל-1. (כלומר, ∀i≤n:⟨vi,vi⟩=1=∥vi∥)
הגדרה 3 (מטריצה אורתונורמלית)
מטריצה Q נקראת אורתונורמלית אם היא ריבועית ועמודותיה מהוות בסיס אורתונורמלי למלוא המרחב Rn.
הערה
מטריצות אורתונורמלייות יכולות להיקרא גם מטריצות יוניטריות. (בסיכום זה לא תראו עוד את המושג הזה)
כעת, ברור שלכל מטריצה אורתונורמלית מתקיים:
QtQ=In
זאת לפי מה שראינו ממקודם.
לכן מתקיים:
Q−1=Qt
איזה יופי, הא?
משפט
לכל מטריצה אורתונורמלית Q מתקיים:
Q הפיכה.
ההיפוך שלה הינו השחלוף שלה: Q−1=Qt.
הוכחה: ראינו הנ"ל. (אפשר לפרמל כמובן)
משפט
תהי Q מטריצה.
QtQ=I⟺ אורתונורמליתQ
הוכחה:
תהי Q מטריצה ריבועית שהעמודות שלה הן הווקטורים q1,…,qn.
∀1≤i,j≤n:(QtQ)ij=qitqj=⟨qi,qj⟩
⟸: ברור ⟹: נתון כי QtQ=I. אזי לפי הגדרת מטריצת היחידה מתקיים:
⟨qi,qj⟩=(QtQ)ij=Iij={10i=ji=j
לכן, לפי הגדרה, הוקטורים qi,qj אורתוגונליים לכל i,j ובנוסף לכל i מתקיים כי qi=1 ולכן, לפי הגדרה עמודות Q הינן בסיס אורתונורמלי ולכן, לפי הגדרה Q מטריצה אורתונורמלית. ∎
משפט
שורות מטריצה אורתונורמלית Q הינן גם קבוצה אורתונורמלית(קבוצה בה כל שני וקטורים אורתוגונליים)
הוכחה: (אין באמת הוכחות בקורס הזה אבל קל לראות לפי QtQ=I=QQt)
משפט
תהי Q מטריצה אורתונורמלית.
∣Q∣=±1
הוכחה:
QQt=I⟹∣QQt∣=∣I∣=1
לפי משפט מאלגברה א', ∣Q∣=∣Qt∣ ולכן:
∣QQt∣=∣Q∣2=∣I∣=1∣Q∣=±1=±1
∎
משפט
יהיו Q1,Q2 מטריצות אורתונורמליות ⟸ מכפלתן אורתונורמלית.
הוכחה:
(Q1Q2)t(Q1Q2)=Q2tQ1tQ1Q2=Q2tQ2=I
לכן, לפי משפט, Q1Q2 אורתונורמלית. ∎
משפט
תהי Q מטריצה אורתונורמלית.
∥Qx∥22=∥x∥22
הוכחה:
∥Qx∥22=xtQtQx=xtx=∥x∥22
∎
הערה
מטריצות אורתונורמליות הן בעצם מטריצות המסובבות וקטורים ביחס לראשית ולכן, המרחק מהראשית נותר ללא שינוי והרכבת סיבובים היא סיבוב.
נשים לב כי זוהי לא רק מטריצה אורתונורמלית אלא היא גם מטריצת פרמוטציה לפירוק LU.
דוגמה (מטריצת סיבוב ב-2D)
∀θ∈[0,2π]:Q=(cosθsinθ−sinθcosθ)
מה המטריצה הזו עושה בעצם?
Q(10)=(cosθsinθ)Q(01)=(−sinθcosθ)
דוגמה (מטריצת שיקוף של הצירים ב-2D)
Q=(100−1)Q=(−1001)
דוגמה (מטריצת Givens)
המטריצה מציעה סיבוב בין שני צירים בוקטור במימד גבוה.
נבנה אותה: מתחילים ממטריצת היחידה. אנו באים לשורה j ועמודה k וגם לעמודה j ולשורה k וזה יוצר לנו 4 איברים שבשניים מהם גרו במקור 1 ובשניים האחרים במקור גרו 0. נחליף את הרביעיה הזו ב-cosθ,sinθ,−sinθ,cosθ ואז כאשר נכפיל את המטריצה בוקטור בגודל n לרוב הערכים היא לא תעשה דבר, אבל בשני צירים היא תבצע את הסיבוב הזה.
G=1⋱cosθsinθ⋱1⋱−sinθcosθ⋱1
דוגמה (מטריצת השיקוף של Householder)
יהי v וקטור כך ש-∥v∥=1 (כלומר, vtv=1). אזי המטריצה הינה:
כאשר אנו מכפילים בוקטור כללי u המקיים vtu=0 אזי:
Hw=(I−2vvt)w=w
תהליך Gram−Schmidt
נשאל שאלה כזו: בהינתן בסיס שאינו אורתונורמלי, או סט כלשהו של וקטורים שעבור המ"ו הנפרש על ידיו אנו מעוניינים בבסיס אורתונורמלי, כיצד נמצא כזה? תהליך גרם-שמיט מציע לנו תהליך מסודר להשגת יעד זה.
אנו נראה 3 אלגוריתמים שקולים מתמטית אך מתנהגים אחרת לגמרי במחשב שיבצעו את התהליך.
נתון סט של וקטורי כניסה כלשהם {wk}k=1L∈Rn מהמרחב ה-n מימדי.
תהליך גרם-שמיט(GS) יבנה מוקטורים אלה סדרת וקטורים אורתונורמלית עם L או פחות וקטורים {uk}k=1L∈Rn.
התהליך סדרתי ומקיים בל איטרציה:
sp{w1,…,wk}=sp{u1,…,uk}
משפט
בהינתן סט וקטורים כלשהו בת"ל {wk}k=1L∈Rn המגדיר ת"מ, קיים בסיס אורתונורמלי תחליפי {uk}k=1L∈Rn אשר יפרוש את אותו ת"מ.
sp{w1,…,wk}=sp{u1,…,uk}
את ההוכחה נראה דרך האלגוריתם הראשון שנראה.
אלגוריתם #1
מתקבל w1 וננרמל אותו: u1=∥w1∥21w1 (אם זה 0 אז נשמיט את הוקטור שכן אין לו השפעה על התהליך)
כעת, ברור שמתקיים sp{w1}=sp{u1}.
מתקבל w2. אנו נרצה שהוקטור u2 יקיים את התכונות: הנורמה=1, אנכי ל-u1 והספאן צריך להיות זהה למקור.
נעשה זאת באמצעות קילוף u1 מהוקטור w2 להשגת אנכיות: u2=w2−cu1.u1t(w2−cu1)=0⟹c=u1tw2
כעת ננרמל אותו: u2=∥u2∥21u2. (אם הוקטור לפני נרמול מאופס, פירוש הדבר הוא שהוא נפרש מקודמו ולכן לא חשוב ונתעלם ממנו)
כעת, נוכל לראות כי הפרישות זהות: sp{u1,u2}⊆sp{w1,w2}
ואז לפי משפט מאלגברה הם שווים כי המימדים שלהם זהים.
מתקבל w3. כעת נעבוד בדרך דומה לממקודם: u3=w3−c1u1−c2u2
כעת נדרוש: u1t(w3−c1u1−c2u2)=0 ואז: u1tw3−c1=0∧u2tw3−c2=0
הוקטור כעת לא מנורמל ולכן ננרמל אותו בדיוק כמו ממקודם. u3=∥u3∥21u3.
כעת אנו יודעים שהם פורשים את אותו הדבר במקור בדיוק מאותה סיבה כמו ממקודם.
ברור שאת המקדם r11 ניתן לקבוע כמו באלגוריתם הקודם ע"י נרמול של הוקטור w1. כלומר, r112=∥w1∥22.
מהמשוואה השנייה נקבל די בקלות: u2=r221(w2−r21u1) נוכל למצוא את r21 בקלות בשל האנכיות של u1 של u2 כך:
זה גם בדיוק המשוואה שקיבלנו.
כך, אם נמשיך הלאה גם נקבל את כל השאר(הוכחה? לא בקורס הזה)
מה קורה אם A ריבועית והפיכה? אם היא תוזן לתהליך גרם-שמידט הכל ילך ללא בעיות.
נקבל גם כי A=QR כאשר Q תהיה מטריצה אורתונורמלית, שכן היא ריבועית ועמודותיה הן ה-u-ים שמצאנו בהתליך גרם-שמידט.
משפט
כל מטריצה ריבועית והפיכה A ניתנת לפירוק יחיד מהצורה A=QR כאשר:
Q מטריצה אורתונורמלית
R מטריצה משולשת עליונה בה איברי האלכסון הראשי כולם חיוביים.
הוכחה(שהיא בצעם רעיון ההוכחה): כיוון שמהטריצה הפיכה, עמודותיה בת" ולכן בתהליך ה-GS יתקבלו n וקטורי מוצא ואלו ייצרו מטריצה אורתונורמלית.
היחידות נובעת מדרישות החיוביות של איברי האלכסון של R כפי שמתקבלים באופן יחיד מאלגוריתם ה-MGS.
פירוק QR קיים גם למטריצות שאינן הפיכות. אז יתקבלו ערכי 0 באלכסון הראשי של R.
דוגמה
A=1111001122330101
נזין את המטריצה הבאה לפירוק QR ונשים לב שהעמודה השלישית תלויה בראשונה ולכן זוהי מטריצה לא הפיכה(סינגולרית)
("זו מטריצה חולה - היא סינגולרית" - מיקי אלעד)
ב-Matlab מתקבל:
נשים לב כי נוצרו לנו 4 וקטורים אורתונורמליים - איך? הרי אחד מהוקטורים המקוריים אינו בת"ל עם האחרים.
נשים לב כי קיבלנו ב-R אזהרה בדמות 0 באלכסון שאומר לנו שהעמודה השלישית שלנו היא לא הכי בריאה.
נראה כעת איך פותרים את הבעיה שהוצגה בדוגמה.
נתונה המטריצה A ועליה אנו מבצעים גרם-שמידט.
בתהליך הגרם שמידט: אם נתקלת בעמודה ב-A תלויה בקודמיה, זרוק אותה והמשך בתהליך
בתהליך פירוק QR: אם נתקלת בעמודה התלויה בקודמיה, אי אפשר לזרוקה! לכן:
הצג אותה כצירוף של הוקטורים שכבר נוצרו.
הגרל/בחר וקטור חדש שימלא את מקומה להמשך תהליך הגרם-שמידט
כדאי תמיד לבחור וקטור ואם הוא נדפק לבחור וקטור אחר.
פירוק QR למטריצות שאינן ריבועיות
פירוק QR קיים גם למטריצות מלבניות מכל צורה שהיא.
כשהמטריצה רחבה ונמוכה, עמודותיה חייבות להיות ת"ל. אם נניח ש-n העמודות הראשונות בת"ל, נקבל כי יתר העמודות תלויות בהן, לכן, עמודות R המתאימות מלאות.
כדי למצוא את שאר עמודות המטריצה לאחר האלגוריתם למטריצות ריבועיות שיצר את Q נוכל לבצע:
w7=Qr7⟹r7=Qtw7
כעת, המטריצה שלנו גבוהה וצרה. ניתן להציע שני מבני פירוק - האחד עם Q מלאה שבה מוסיפים וקטורי סרק לעמודותיה של Q להשלמת מטריצה אורתונורמלית.
הגישה האחרת קרויה EconomyQR והיא מסתפרת ב-Q ברוחב A.
שימושי הפירוק
שימוש ב-QR לפתרון מערכות משוואות
נתונה לנו מערכת משוואות Ax=b נוכל להשתמש בפירוק QR על מנת לפתורה. נדון בשלושה מקרים:
A ריבועית והפיכה
A מלבנית עם יותר שורות מעמודות
A מלבנית עם יותר עמודות משורות
מקרה 1
נתחיל בפירוק A ל-QR:
Ax=QRx=b
כעת, נכפיל ב-Qt:
Rx=Qtb
כעת, באמצעות החלפה אחורית נוכל למצוא את x.
למה זה לא טוב? עלה לנו n3 כדי להשיג את QR. אך פירוק LU כולו הוא 3n3 ולכן הוא עדיף.
אז למה אנו רואים את זה? את זה אנו נגלה עוד מעט.
מקרה 2
נתחיל בפירוק A ל-QR המלא(לא Economy) על מנת לקבל מטריצה ריבועית Q.
נכפיל את הוקטור b ב-Qt.
כעת עלינו לפתור את המערכת הנותרת ע"י החלפה אחורית, אלא שתחתית המטריצה R מאופסת ולכן החלק התחתון בוקטור Qtb חייב להיות 0 על מנת להבטיח פתרון.
⇐ אם החלק התחתון אינו מאופס, לא קיים פתרון למערכת.
מקרה 3
A מלבנית רחבה ונניח שוב כי דרגתה מלאה. נתחיל בפירוק QR ונכפיל את הוקטור b ב-Qt.
המערכת שנותרה מספרת על דרגות החופש הקיימות במערכת המקורית.
נניח כי עלינו לפתור את בעיית הריבועים הפחותים xmin∥Ax−b∥22 ונניח כי יש לבעיה הזו פתרון יחיד(כלומר, A ריבועית או מלבנית גבוהה ודרגתה מלאה)
נתחיל בפירוק A ל-QR. פירוק זה אינו ה-Economy על מנת לקבל מטריצה Q ריבועית. אזי:
[אפשר להוסיף ציור אם יהיה לי כח אחר כך]
ניתן לפצל את וקטור השגיאה לשני חלקים נפרדים והשגיאה הכוללת היא סכום שתי השגיאות הללו.
את הרכיב הראשון ניתן להביא לערך 0 ע"י פתרון של החלפה אחורית.
החלק הנותר לא ניתן לשינוי. סכום ריבועיו של החלק התחתון של Qtb קובעים את גובה המינימום של הבעיה הריבועית.
הערה
יכולנו להשתמש ב-EconomyQR לחישוב הפתרון.
סיבוכיות התהליך הזה
נניח שאנו פועלים עם מטריצה A בגודל m×n.
בתהליך עם פירוק QR נקבל:
חישוב ה-Economy−QR חמטריצה ידרוש mn2 - זהו החלק הדומיננטי במלא התהליך.
הכפלת הוקטור b ב-Qt תדרוש nm פעולות.
פעולת ההחלפה האחורית תדרוש 2n2 פעולות.
מהי החלופה? חישוב AtA ופתרון באמצעות פירוק Cholesky.
חישוב AtA דורש mn2 פעולות
פירוק Cholesky ידרוש 6n3 פעולות
החלפה קדמית ואחרוית ב-n2 פעולות
לכן, בשביל לפתור בעיית ריבועים פחותים, הרבה יותר עדיף להשתמש בפירוק QR מאשר הדרכים הרגילות.
סדרה של בעיות ריבועים פחותים
נניח כי יצאנו לדרך לפתור סדרה של בעיות ריבועים פחותים:
{xkmin∥Akxk−b∥22}k=1L
כאשר מספר עמודות Ak הוא בדיוק k ו-k−1 העמודות הראשונות שלה הן עמודות Ak−1.
למה זה מעניין? למשל, בקירוב פולינומיאלי, הדבר שקול לבניית סדרת קירובים עם דרגת פולינום הולכת ועולה.
אנו נרצה לפתור את כל בעיות הריבועים הפחותים הללו באמצעות הפירוק שלמדנו ונרצה להרוויח משהו מזה שהן קשורות זו לזו.
xmin∥ALx−b∥22=xminRLx−QLtb22
נשים לב כי לאור העובדה שתהליך הגרם-שמידט הוא סדרתי, פירוק ה-QR של המטריצה AL−1 מוכל בפירוק של AL. לכן, נבצע פירוק QR יחיד ואז פשוט נשתמש בחלקים של המטריצות שאנו צריכים על מנת לפתור את הבעיה.
הערה
השימוש ב-QR נותן יתרון חדש ומעניין: אם נרצה לדעת את הפתרון לאותה בעיה אך עבור שימוש ב-k<L העמודות הראשונות של AL בלבד, פתרון זה נגיש - לשם כך, נקח את החלק העליון של הוקטור Qtb ואת החלק העליון של המטריצה R ונפתור מערכת משוואות זו.