שלום אני מטריצה, נעים להכיר – על מה ולמה, מבוא
המחשב הוא גולם.
ואם אנחנו רוצים שהגולם יעבוד עבורנו עלינו לתרגם את המידע לצורות שהוא מבין.
המחשב אוהב מספרים. ככל שנצליח לנסח את הבעיות שלנו באמצעות מספרים בלבד ובאמצעות מבנים שמוכרים כבר בתוך המכונה, כך הפתרון יהיה פשוט יותר.
***
נבחן בעיה פשוטה ומוכרת במתמטיקה: פתרון שתי משוואות בשני נעלמים.
הכוונה היא שיש לנו שני משתנים x ו-y ואנחנו דורשים שיקיימו את שני התנאים שמוצגים דרך שתי המשוואות. במקרה הנתון יש רק פתרון אחד עבור x ו-y שיקיים את התנאים והוא x=y=1.
כעת בואו ונסבך את העסק. זה ישתלם לנו בהמשך.
***
נגדיר מטריצה (באופן לא פורמלי) כמערך דו-ממדי של מספרים, המסודרים בשורות וטורים. לדוגמה, נוכל להגדיר את המטריצה A הבאה:
ממדיה של מטריצה A הם 2×2, כלומר שתי שורות על שני טורים. יכולתי לבחור כל זוג מספרים שלמים עבור הממדים, כלומר מספר הטורים והשורות לא חייב להיות זהה.
נוכל להגדיר פעולות חשבוניות בין מטריצות. הצורה בה נגדיר את הפעולות היא קונסיסטנטית, יש בה הגיון פנימי כלשהו והיא תשתלם לנו בהמשך.
חיבור: רק עבור מטריצות זהות ממדים, נחבר איברים במיקום זהה.
כפל: נכפול שורה מסוימת ממטריצה A בטור מסוים ממטריצה B, נחבר תוצאות ונמקם במטריצה חדשה לפי מספר השורה הכופלת ומספר הטור הכופל. כלומר האיבר במקום (2,1) הוא התוצאה של כפל שורה 2 בטור 1.
המחשת הכפל בציור (עקבו אחרי החצים לפי צבעים משמאל לימין):
ובצורה פורמלית יותר:
ניתן לכפול מטריצות גם אם ממדיהם שונים, כל עוד מספר השורות של B זהה למספר הטורים של A. לדוגמה:
מהי המטריצה המקבילה למספר 1? נדרוש שכל פעולת כפל עם מטריצה זאת לא תשנה את האיבר השני בכפל, כלומר A היא מטריצת יחידה אם A•B=B•A=B עבור כל B. המטריצה שמקיימת תכונה זאת נראית כך:
אתם מוזמנים לבדוק.
כעת נוכל להגדיר מהי מטריצה הופכית, כלומר 1 חלקי מטריצה. נדרוש שתוצאת הכפל בין מטריצה להופכית שלה תהיה תמיד מטריצת היחידה I. כלומר:
קיבלנו 4 משוואות ב-4 נעלמים (אברי ה-b). ניתן להראות שהתוצאה היא:
אתם מוזמנים לבדוק.
את כל חוקי החשבון כתבתי לשם פשטות עבור מטריצות קטנות בעלות ממדים 2×2 , אבל ניתן להכליל את החוקים למטריצות בכל גודל שנרצה. זה מסבך מעט את העסק ולא נחוץ לי כרגע.
השאלה היותר חשובה היא למה טרחתי להראות את כל זה?!
***
זוכרים את מערכת המשוואות שהתחלנו ממנה?
שימו לב שנוכל לכתוב אותה באמצעות מטריצות בצורה הבאה:
נסמן את המטריצות באותיות A, V, ו-R כפי שרואים למעלה ונקבל משוואה פשוטה שבה אנחנו בעצם מחפשים פתרון עבור V. להתרת המשוואה נכפיל את שני האגפים במטריצה ההופכית של A ונקבל:
שימו לב שהשתמשתי בתכונות מטריצת היחידה I.
המסקנה מהתרגיל היא שכדי למצוא את הפתרון עבור V כל שעלינו לעשות הוא להכפיל את ההופכית של A במטריצה R.
אבל למה טרחתי להראות את כל זה?! זה נראה הרבה יותר מסובך מהשיטה שלמדנו בחטיבת הביניים.
שימו לב שאם הייתי בוחר מערכת של 10 משוואות ו-10 נעלמים לא הייתם מסוגלים לפתור אותה בפחות מ-10 שעות בשיטה 'הישנה'.
מטריצות הן מבנה סדור של מספרים והן מקיימות חוקי מתמטיקה ברורים וחדים בין אחת לשניה. לכן קל לתכנת לתוך המחשב את המבנה שלהן ואת חוקי האלגברה שהן מקיימות. קיימות תוכנות רבות שפונקציות אלה כבר כתובות בהן.
אם כך נוכל לפתור כל מערכת משוואות ליניארית על ידי הקשת נתוני המטריצות השונות שמייצגות את הבעיה לתוך המחשב, ולקבל את הפתרון באופן מידי ללא טיפת מחשבה וללא אגל זעה בודד על המצח. צוואר הבקבוק בחישוב הפתרון יהיה חישוב המטריצה ההופכית, אבל זה כבר בעיה של הגולם*. שיעבוד!
*[הערת שוליים: ובעיה גם של מי שצריך לתכנת אותו, אבל את זה צריך לעשות רק פעם אחת].
***
"אבל מה בכלל אכפת לנו מכל המשוואות האלה? עם n משוואות ב-n נעלמים לא קונים במכולת!"
אההה! במקרה הרשימה הבאה תעסוק בדיוק בזה. אמנם לא נקנה במכולת, אבל נעשה עם מטריצות משהו אפילו יותר מעניין.
למעשה ישנן שיטות הרבה יותר יעילות לפיתרון מערכת משוואות לינאריות שלא מחייבות חישוב של המטריצה ההופכית (זה מאפשר לדוגמא לפתור מעגלים חשמליים מורכבים). למי שרוצה להעמיק:
https://en.wikipedia.org/wiki/LU_decomposition
הי אמיר, תודה על ההרחבה!
יש לי הרגשה שאולי למדתי את זה פעם בקורס שיטות נומריות, אבל אני לא בטוח. משהו מצלצל מוכר. תמיד טוב ללמוד משהו חדש \ להיזכר במשהו ישן ששכחת.
לגבי מעגלים חשמליים, שששש….אל תגלה עדיין 🙂