בפוסט הקודם הצגתי את מושג הדטרמיננטה של מטריצה ריבועית \(A\), שסימנתי כ-\(\left|A\right|\). נתתי שלוש הגדרות שונות (אקסיומטית – הפונקציונל מולטי-לינארי על שורות \(A\) היחיד שהוא גם מתחלף ומחזיר 1 על מטריצת היחידה), ישירה (\(\left|A\right|=\sum_{\sigma}\mbox{sgn}\left(\sigma\right)\prod_{i=1}^{n}A_{i\sigma\left(i\right)}\)) ורקורסיבית, וכעת נותרה לי רק תכונה מרכזית אחת של הדטרמיננטה לתאר – היא כפלית, כלומר \(\left|AB\right|=\left|A\right|\left|B\right|\), כאשר \(A,B\) מטריצות ריבועיות מאותו סדר (יש גם נוסחה בשם "נוסחת קושי-בינה" שלא אציג שמכלילה את הנוסחה הזו למקרה שבו \(A,B\) אינן ריבועיות אך מכפלתן ריבועית). תכף אוכיח את התכונה אבל קודם כל בואו נשים לב למשהו מיידי שעולה ממנה.
אמרתי פעם ש-\(A\) היא מטריצה הפיכה אם קיימת מטריצה \(A^{-1}\) כך ש-\(AA^{-1}=A^{-1}A=I\), כאשר \(I\) היא מטריצת היחידה (המטריצה שבה אברי האלכסון הראשי הם 1 ושאר האיברים הם 0). מהכפליות נובע ש-\(1=\left|I\right|=\left|AA^{-1}\right|=\left|A\right|\left|A^{-1}\right|\), כלומר \(\left|A^{-1}\right|=\left|A\right|^{-1}\). זה אומר, בפרט, שאם מטריצה היא הפיכה, אז הדטרמיננטה שלה שונה מאפס. גם ההפך נכון – הדטרמיננטה של מטריצה שאינה הפיכה היא בהכרח אפס – אבל בואו נוכיח את הכפליות של דטרמיננטה לפני שנדבר על כך.
על פניו נראה שההוכחה צריכה להיות טכנית להחריד, אבל התכונות היפות של הדטרמיננטה חוסכות לנו את רוב כאב הראש. אחת האבחנות שלנו בפוסט הקודם הייתה שכל פונקציה \(f\) שהיא מולטי-לינארית ומתחלפת (עם \(n\) משתנים שהם וקטורים ב-\(\mathbb{F}^{n}\)) נקבעת באופן יחיד על פי ערכה על וקטורי הבסיס הסטנדרטי, כלומר \(f\left(e_{1},\dots,e_{n}\right)\). קצר יותר קונקרטית, ראינו (אם כי לא הצגתי זאת כך) ש-\(f\left(v_{1},\dots,v_{n}\right)=\chi\left(v_{1},\dots,v_{n}\right)f\left(e_{1},\dots,e_{n}\right)\) כאשר \(\chi\left(v_{1},\dots,v_{n}\right)\) הוא איזה סקלר שמחושב מתוך \(v_{1},\dots,v_{n}\) באופן שאינו תלוי ב-\(f\) אלא רק באופן שבו \(v_{1},\dots,v_{n}\) מוצגים כצירופים לינאריים של אברי הבסיס הסטנדרטי. כעת, זכרו שהגדרנו דטרמיננטה בתור הפונקציה המולטי-לינארית המתחלפת שמחזירה 1 על וקטורי הבסיס הסטנדרטי, ולכן (אם מציבים \(f=\det\) בנוסחה שכתבתי לפני רגע) \(\det\left(v_{1},\dots,v_{n}\right)=\chi\). במילים אחרות, לכל פונקציה מולטי-לינארית מתחלפת \(f\), אנו רואים ש-\(f=f\left(e_{1},\dots,e_{n}\right)\cdot\det\). זה אומר ש-\(\det\) פורשת את מרחב הפונקציות המולטי-לינאריות המתחלפות, ומקל עלינו מאוד את הצעד הבא.
התעלול כעת הוא כדלהלן: אנו רוצים להוכיח כי \(\det AB=\det A\det B\). בואו נקבע את \(B\) ונגדיר פונקציונל מולטי-לינארי מתחלף \(f\left(v_{1},\dots,v_{n}\right)=\det\left(v_{1}B,\dots,v_{n}B\right)\) (\(v_{i}B\) מוגדר באמצעות כפל מטריצות רגיל – מכיוון שזה כפל של וקטור \(1\times n\) במטריצה \(n\times n\) התוצאה היא שוב וקטור \(1\times n\)). לא קשה לראות ש-\(f\) הזה הוא באמת מולטי-לינארי מתחלף – זה נובע מתכונות \(\det\) ומכך שכפל מטריצות הוא דיסטריביוטיבי. כעת, ראינו שכל פונקציונל מולטי-לינארי מתחלף הוא כפולה בסקלר של \(\det\), כלומר \(f\left(v_{1},\dots,v_{n}\right)=\det\left(v_{1},\dots,v_{n}\right)\cdot f\left(e_{1},\dots,e_{n}\right)=\det\left(v_{1},\dots,v_{n}\right)\det\left(e_{1}B,\dots,e_{n}B\right)\). כעת, מהו \(e_{i}B\)? לא קשה לראות מההגדרה שזוהי השורה ה-\(i\) של \(B\), ומכאן ש-\(\det\left(e_{1}B,\dots,e_{n}B\right)=\left|B\right|\). כל מה שנשאר לעשות הוא להציב ב-\(v_{1},\dots,v_{n}\) את שורות \(A\) ולשים לב לכך ש-\(v_{i}B\) הוא "השורה ה-\(i\) במטריצה \(AB\)", וקיבלנו ש-\(\det AB=\det A\det B\).
עכשיו, בואו ניזכר רגע בדירוג מטריצות. אמרתי בשעתו שכל פעולה בדירוג – החלפה בין שורות, כפל שורה בסקלר או הוספת כפולה בסקלר של שורה אחת לשורה אחרת – ניתנת לתיאור באמצעות כפל במטריצה, וזוהי מטריצה הפיכה כי הפעולה הפיכה. אם \(A\) היא מטריצה שאחרי דירוג מתקבלת ממנה \(D\), זה אומר שקיימת \(E\) הפיכה כך ש-\(EA=D\). לכן גם \(\left|E\right|\left|A\right|=\left|D\right|\), ולכן אם \(\left|D\right|=0\) נובע שבהכרח \(\left|A\right|=0\) שכן \(\left|E\right|\ne0\), בהיותה מטריצה הפיכה. במילים אחרות, כדי להראות שכל מטריצה לא הפיכה \(A\) היא בעלת דטרמיננטה אפס, מספיק להראות שאחרי דירוג אפשר להביא כל מטריצה ריבועית שאינה הפיכה למטריצה \(D\) שיש בה שורת אפסים; מטריצה כזו בהכרח מקיימת \(\left|D\right|=0\) (דרך פשוטה לראות זאת – מפתחים את הדטרמיננטה לפי שורת האפסים, ומקבלים שהדטרמיננטה היא סכום של איברים מהצורה אפס-כפול-משהו).
הנימוק הוא פשוט ואלגנטי להפתיע. אנחנו יודעים שצורה מדורגת מצומצמת של מטריצה ריבועית יכולה להיות בדיוק אחד משניים: או מטריצת היחידה (1 על האלכסון הראשי ו-0 בכל מקום אחר) או מטריצה שכוללת שורות אפסים; זה נובע ישירות מההגדרה של מטריצה מצומצמת. אם אפשר לקבל מ-\(A\) את מטריצת היחידה לאחר דירוג, זה אומר ש-\(EA=I\) עבור \(E\) כלשהי, ועל ידי כפל ב-\(E^{-1}\) רואים ש-\(A=E^{-1}\), מה שאומר ש-\(A\) הפיכה וההופכית שלה היא \(E\) (נקודה עדינה – אנו משתמשים כאן בכך שידוע ש-\(E\) הפיכה; המשוואה \(EA=I\) לבדה לא מוכיחה ש-\(A\) הפיכה כי למטריצות עשוי להיות "הופכי חד צדדי", כלומר בתיאוריה היה עשוי להתקיים ש-\(AE\ne I\) ואז \(A\) לא הייתה הפיכה).
אני רוצה לדבר עכשיו על מה שהיה עבורי הדבר הכי קשה לעיכול, טכנית, כשלמדתי אלגברה לינארית – המטריצה הצמודה של \(A\). למעשה, כבר כשמדברים על השם צריך להיזהר כי באלגברה לינארית השם הזה משמש לתיאור שתי מטריצות שונות לגמרי. בעברית קוראים לפעמים למטריצה שאדבר עליה עכשיו "מטריצה מצורפת" ובאנגלית קוראים לה Adjugate או classical adjoint. משסיימנו את ענייני הטרמינולוגיה, בפוסט הזה אני כן אדבר על מטריצה צמודה וחסל.
מטריצה צמודה מכלילה במובן מסויים את המושג של מטריצה הופכית גם עבור מטריצות שאינן הפיכות. איזה מובן? אם \(A\) היא מטריצה, אסמן את הצמודה שלה כ-\(\mbox{adj}A\). המשפט שאוכיח עכשיו ("כלל קרמר") הוא ש-\(A\cdot\mbox{adj}A=\mbox{adj}A\cdot A=\left|A\right|I\). כלומר, אם \(A\) הפיכה אז \(A^{-1}=\frac{\mbox{adj}A}{\left|A\right|}\), ואם \(A\) לא הפיכה אז \(\mbox{adj}A\) מאפסת אותה.
משזה נאמר, ההגדרה של \(\mbox{adj}A\) היא לא הדבר הכי נעים בעולם ולא ברור כל כך איך הגיעו אליה (כנראה באמצעות הרבה חשיבה או הנדסה-לאחור של המשפט שאוכיח תכף). הכניסה ה-\(i,j\) של \(\mbox{adj}A\) שווה ל-\(\left(-1\right)^{i+j}\) כפול המינור ה-\(j,i\)-י של \(A\): \(\left[\mbox{adj}A\right]_{ij}=\left(-1\right)^{i+j}\left|A^{ji}\right|\). כזכור, המינור ה-\(j,i\)-י הוא מה שמקבלים מ-\(A\) כאשר מסירים את השורה ה-\(j\) ואת העמודה ה-\(i\) ולוקחים את הדטרמיננטה של היתר. שימו לב להיפוך שיש כאן – הכניסה בשורה ה-\(i\) והעמודה ה-\(j\) של הצמודה נקבעות על פי המינור של השורה ה-\(j\) והעמודה ה-\(i\).
טוב. אז איך נראה ש-\(A\cdot\mbox{adj}A=\left|A\right|I\)? בדם ואש, כמובן. אנחנו רוצים להראות ש-\(\left[A\cdot\mbox{adj}A\right]_{ij}=\left|A\right|\delta_{ij}\) (הדלתא של קרונקר – אפס או אחד, בהתאם לשאלה אם \(i\ne j\) או \(i=j\)). על פי ההגדרה, אנו יודעים ש:
\(\left[A\cdot\mbox{adj}A\right]_{ij}=\sum_{k=1}^{n}A_{ik}\left[\mbox{adj}A\right]_{kj}=\sum_{k=1}^{n}A_{ik}\left(-1\right)^{k+j}\left|A^{jk}\right|\)
אם \(i=j\), אז הנוסחה \(\sum_{k=1}^{n}A_{ik}\left(-1\right)^{k+i}\left|A^{ik}\right|\) היא בדיוק, אבל בדיוק, הנוסחה לפיתוח של \(\left|A\right|\) על פי השורה ה-\(i\). לכן אנו מקבלים \(\sum_{k=1}^{n}A_{ik}\left(-1\right)^{k+i}\left|A^{ik}\right|=\left|A\right|\) במקרה זה. נותר לטפל במקרה שבו \(i\ne j\). התעלול הוא כזה: בואו נדמיין מטריצה \(B\) שזהה ל-\(A\) בהכרח פרט לכך שהשורה ה-\(j\) שלה שווה לשורה ה-\(i\) שלה. שתי שורות שוות גוררות מייד \(\det B=0\) (למה? ובכן, \(\det\) היא פונקציה מתחלפת וזו בדיוק ההגדרה של מתחלפת…), ואפשר לכתוב את הפיתוח של \(B\) לפי השורה ה-\(j\) ולקבל:
\(0=\left|B\right|=\sum_{k=1}^{n}\left(-1\right)^{j+k}B_{jk}\left|B^{jk}\right|\)
רק מה, אם אנו מסירים מ-\(B\) את השורה ה-\(j\), אנו מקבלים מטריצה שזהה ל-\(A\), כלומר \(\left|B^{jk}\right|=\left|A^{jk}\right|\); ובגלל שהשורה ה-\(j\) של \(B\) היא בדיוק השורה ה-\(i\) של \(A\), הרי ש-\(B_{jk}=A_{ik}\). במילים אחרות -
\(0=\sum_{k=1}^{n}\left(-1\right)^{j+k}B_{jk}\left|B^{jk}\right|=\sum_{k=1}^{n}\left(-1\right)^{j+k}A_{ik}\left|A^{jk}\right|=\left[A\cdot\mbox{adj}A\right]_{ij}\)
וזה מסיים את ההוכחה הזו (עדיין צריך להוכיח ש-\(\mbox{adj}A\cdot A=\left|A\right|I\) – הרעיון זהה).
על פניו, עושה רושם שנוסחת קרמר נותנת לנו דרך מצויינת לחשב את ההופכי של מטריצה. אבל בפועל זו דרך גרועה למדי כי חישוב של כל כניסה של \(\mbox{adj}A\) הוא תובעני – צריך לחשב דטרמיננטה. הדרך ה"נכונה" למצוא הופכי של מטריצה \(A\) הוא פשוט לדרג אותה: אם \(EA=I\) אז \(E\) היא בדיוק ההופכית המבוקשת. כשרוצים לחשב דבר כזה בפועל באופן ידני, מה שבדרך כלל עושים הוא לדרג את \(A\) ובו זמנית את אותן פעולות שמבצעים בדירוג של \(A\), לבצע על מטריצת היחידה \(I\) (כלומר – מתחילים כש-\(A\) ו-\(I\) כתובות האחת מעל השניה, ומתחילים לדרג את \(A\) שלמעלה כשכל פעולה שמבצעים מבוצעת גם על המטריצה שלמטה). עם זאת, עדיין יש יתרונות לשימוש ב-\(\mbox{adj}\) אם רוצים למצוא רק כניסה אחת מתוך המטריצה ההופכית (לפעמים זה כל מה שצריך) ובהקשרים תיאורטיים שונים ומשונים.
בפוסט הבא נתחיל לקצור את הפירות של מה שדיברנו עליו כאן, ונדבר על מושג הערכים העצמיים של מטריצות – מושג שהעיסוק בו ידרוש פחות או יותר את כל מה שלמדנו עד כה על אלגברה לינארית.
גדי, אם לא יצא לך אז כדאי לך לקרוא את זה:
http://www.axler.net/DwD.html
שלדון אקסלר מראה איך אפשר להימנע מדטרמיננטות ולהגדיר ערכים עצמיים באופן טבעי יותר – ולא רק להגדיר אלא גם להוכיח את כל המשפטים המרכזיים. בזמנו השתכנעתי שזו דרך טובה מאוד מבחינה פדגוגית.
אלון, תודה, אעיף מבט, אבל:
1) אני רוצה להציג כאן דווקא את הדרך הקונבנציונלית (בפרט עבור מי שעכשיו לומד לינארית).
2) אני קצת סקפטי מראש. הרי לא מגדירים ערכים עצמיים בעזרת דטרמיננטה – הדטרמיננטה רק מצביעה (בקלות) על הכלי למציאתם, כלומר הפולינום האופייני. אני לא ממש רואה מה היתרון בלהיפטר מכלי מועיל כמו הדטרמיננטה בהקשר הזה, גם אם זה אפשרי.
לא, ודאי שלא מגדירים כך (התנסחתי ברישול למעלה). השאלה הבסיסית היא, איך אתה מראה (למשל) שלכל ט"ל ממרחב לעצמו יש ערך עצמי (מרוכב). אני חושב שהגישה שהוא מציג מאוד נכונה מבחינה פדגוגית, ומהניסיון שלי סטודנטים באמת מתקשים להתרשם מהמשמעות של מושג הדטרמיננטה, גם אם אתה מציג אותה בכל הדרכים האפשריות כמו שעשית.
לגבי הטענה שלמטריצה עשוי להיות "הפכי חד-צדדי", אולי כדאי לציין שבעצם, לא יכול להיות. זאת אומרת, בחוגים לא קומטוטטיבים מסויימים זה אכן קורה שלאיבר יש הפכי חד-צדדי, אבל אין לא הופכי דו-צדדי (ולכן הוא לא הפיך) ולכן גם בחוג המטריצות צריך "להיזהר", אבל אפשר להוכיח (בקלות) שאם למטריצה יש הפכי חד צדדי, אז יש לה הפכי דו-צדדי. בעיקרון, זה שקול לכך שהעתקה לינארית ממרחב סוף מימדי לעצמו היא חח"ע אםם היא על.
אקדים הקדמה ואומר שאין בתגובתי זו שום ביקורת על הפוסט, שהוא מעולה ואינפורמטי (כהרגלו) ומעביר את התכנים הרלוונטים באופן ממוקד וברור מאד. אני רק רוצה לחלוק את מחשבותיי על נושא שהוזכר בפוסט ולדעתי אינו זוכה לכבוד הראוי בלימודי האלגברה הלינארית והוא המטריצה הצמודה.
בעיני הרבה אנשים שלומדים לינארית (במיוחד ממדעי המחשב, אבל לא רק) זה נראה כמו יצור מוזר ומסובך לאללה שגם לא טוב לצרכים פרקטיים חישוביים (מה זה, זה? זה אקספוננציאלי! פויה) וזה שם רק בשביל כל מיני הוכחות טכניות עם מלא סיגמות ואינדקסים. הנקודה המרכזית שמתפספסת לדעתי כמעט לחלוטין, היא שהמטריצה הצמודה נותנת "נוסחה סגורה למטריצה הופכית" (אחרי שמחלקים בדטרמיננטה, שגם לה יש נוסחה סגורה כפולינום בערכי המטריצה). נכון, זו נוסחה ארוכה ומסובכת, ועם זאת יש בנוסחה שכזו המון אינפורמציה שאין בשום אלגוריתם יעיל ככל שיהיה.
למשל, רואים מיד שכל כניסה במטריצה ההפיכת היא פונקציה רציונלית (פולינום חלקי פולינום) בכניסות של המטריצה המקורית. ומזה נובע מיד שפעולת ההפכי (על מרחב המטריצות ההפיכות) היא רציפה ואף גזירה ואפילו ניתן לכתוב ביטוי מפורש לנגזרת. מלבד החשיבות התיאורטית של רציפות זו, שמאפשרת להשתמש בתהליכי קירוב גם כאשר יש הפיכת מטריצה בדרך, ביטויים כאלה מופיעים המון בשימושים פרקטיים מתמטיקה, פיסיקה ומדעי המחשב, כשיש מטריצה תלויית פרמטר שמאפיינת את הבעיה ואנחנו רוצים לדעת איך שינוי הפרמטר משפיע עליה. יש לזה אפילו השלכות על חישובים (כן כן, ממש חישובים עם מספרים!), שכן זה מאפשר לנתח את היציבות הנומרית של הפיכת מטריצה (כי מה עוזר קירוב, אם אתה לא יודע כמה הוא טוב?)
עוד דוגמא מכיוון אחר לגמרי, זה להראות שמטריצה בשלמים היא הפיכה בשלמים (יש לה הפכית, וכל כניסותיה שלמות) אםם הדטרמיננטה שלה שווה ל 1 או 1-. כיוון אחד ברור, אבל השני נדרש למטריצה הצמודה (מי שזה לא מרשים/מעניין אותו, באותו אופן מוכיחים שמטריצה מעל כל חוג R היא הפיכה מעל R אםם הדטרמיננטה שלה היא איבר הפיך ב R ויש הרבה חוגים מעניינים שהם לא שדות, כמו פולינומים למשל).
באופן עוד יותר כללי, כשעוברם משדות לחוגים כלליים ובהתאמה ממרחבים ווקטורים למודולים, המטריצה הצמודה נהיית כלי מרכזי, שכן לא ניתן "לדרג" כשאין הפכיים בחוג. ואפילו עוד לא הזכרתי את משפט קיילי-המילטון שהוכחתו (הסטנדרטית לפחות) משתמשת במטריצה צמודה והלמה של נאקיימה והייתי יכול כמובן להמשיך עוד הרבה (רעיון לפוסט?).
תודה למי ששרד עד הסוף!