ארכיון
אפילו שימפנזה – על פתרון מעגלים חשמליים באמצעות מטריצות
ברשימה הקודמת נתקלנו במושג 'מטריצה'. ראינו שניתן להציג מערכת משוואות ליניאריות באמצעות מטריצות ולהשתמש בתכונות המטריצה כדי למצוא את הפתרונות עבור הנעלמים. מה שלא ראינו זה איך זה עוזר לנו לשלם במכולת.
***
איור 1 הוא ייצוג סכמטי של מעגל חשמלי. ישנו מקור מתח חשמלי V, וחוטים מוליכים דרכם עובר זרם חשמלי I מהמקור לצרכן ומהצרכן למקור. הצרכן מסומן כנגד, שעליו מתקיים 'חוק אוהם', כלומר שיש יחס ישר בין המתח עליו לבין הזרם דרכו, וקבוע הפרופורציה הוא ההתנגדות החשמלית שמסומנת ב-R. הבחירה בצרכן כנגד אוהמי היא רק לשם פשטות. הצרכן יכול להיות כל מכשיר חשמלי או מעגל שתחברו לספק המתח, למשל טוסטר משולשים. את הזרם על הנגד נוכל לחשב על ידי הצבת מתח הספק וההתנגדות של הנגד לתוך חוק אוהם (I=V/R).
איור 1: צרכן\נגד מחובר למקור מתח חשמלי וזרם חשמלי זורם במעגל. אם נניח נגד אוהמי נוכל להשתמש בחוק אוהם לחישוב הזרם.
חישבו על המעגל כעל מפל מים. בהדק החיובי של הספק יש מים במאגר גבוה, כלומר בחלק העליון של המפל. כוח הכובד גורם למים ליפול לגובה נמוך יותר ותוך כדי כך אנחנו יכולים להפיק מכך עבודה, למשל לסובב גלגל של תחנת קמח או טורבינה בתחנת כוח. אותו דבר קורה על הנגד שיכול להיות למשל סלילי החימום בטוסטר משולשים. נושאי המטען הגיעו לנגד באנרגיה פוטנציאלית גבוהה, ויצאו באנרגיה פוטנציאלית נמוכה, תוך יצירת חום. את המים בתחתית המפל ניתן לשאוב חזרה אל חלקו העליון. זה בדיוק מה שעושה ספק המתח מההדק השלילי לחיובי.
חשוב לשים לב שאם עוקבים אחרי מסלול סגור, גם במקרה של המים וגם במקרה החשמלי, ומחברים עליות וירידות באנרגיה צריכים לקבל סה"כ אפס מכיוון שהאנרגיה נשמרת (בעגה: כוח הכבידה והכוח החשמלי הם כוחות משמרים).
עד כאן הכל פשוט.
***
איור 2 הוא גם ייצוג סכמטי של מעגל חשמלי, אבל מאיים מעט יותר. השאלה כאן היא מהו הזרם על נגד R3. הבעיה היא שהפעם לא נוכל להשתמש בחוק אוהם כמו במעגל הקודם מכיוון שהנגד לא מחובר ישירות לספק המתח ולכן אין אנו יודעים מה המתח עליו ומה הזרם עליו. חלק מהמתח 'נפל' על נגד R1, ולכן המתח על R2 ו-R3 לא ידוע.
איור 2: מעגל חשמלי עם שני חוגים. המתח על נגד R3 אינו ידוע ללא חישוב. I1 ו-I2 אינם הזרמים האמיתיים במעגל אלא זרמי החוגים שהם משתני עזר בדרך לפתרון הבעיה.
מי שלמד מעט אלקטרוניקה יודע שיש מספר שיטות פשוטות כדי לחשב את התשובה (לדוגמה חישוב התנגדות שקולה או שימוש בחוקי קירכהוף). הבעיה היא ששיטות אלה מסתבכות מאוד ככל שנסבך את המעגל וגם אינן מותאמות באופן מיטבי לפתרון באמצעות מחשב.
בכוונתי להציג שיטה אחרת שתראה בתחילה מסובכת הרבה יותר אבל ברגע שנבין אותה היא תהיה כל כך פשוטה, כך שאפילו שימפנזה יוכל לפתור כל מעגל, מסובך ככל שיהיה. חשוב מכך, השיטה לפעמים לא תהיה הכי נוחה לפתרון עבור אדם, אך היא מותאמת בצורה מושלמת לפתרון על ידי מחשב.
נזכר שבמסלול סגור סה"כ עליות ונפילות המתח צריכות להסתכם לאפס. נבחר שני מסלולים סגורים כאלה (מתוך שלושה אפשריים) ונכתוב עבור כל אחד משוואה (ראו איור 2). ספק המתח מעלה את המתח (מעלה את המים) ונגד מוריד אותו (מפיל את המים).
כעת נשתמש בסוג של טריק ונגדיר משתני עזר לבעיה. נגדיר זרם בכל חוג (I1 ו-I2 באיור 2). הזרמים האלה אינם אמיתיים כי הרי ברור שהזרם שונה בענפים שונים עקב פיצול בנקודת הצומת. אבל אנחנו נגדיר אותם כך בכל זאת.
נשתמש בחוק אוהם כדי להמיר את המתחים במשוואה לזרמים והתנגדויות. נשים לב שדרך נגד R2 עוברים שני הזרמים I1 ו-I2, ובכיוונים שונים ולכן ההשפעה של I2 על R2 היא של עליית מתח ולא נפילה.
נלוש מעט את המשוואות ונסדר אותן בצורה יותר נוחה:
הגענו לסט של שתי משוואות בשני נעלמים (הזרמים). ברשימה הקודמת ראינו איך לפתור את הבעיה בעזרת מטריצות. ראשית נרשום את המשוואות בצורה מטריצית:
*[הערת שוליים: מי שלא מתעניין במתמטיקה או בפתרון יכול לדלג בנקודה זאת ישירות לחלק הבא. היו סמוכים ובטוחים שהשיטה תניב פתרון נכון].*
נשתמש במטריצה ההופכית כדי למצוא את הפתרון:
R-1 היא המטריצה ההופכית של המטריצה R. ברשימה הקודמת הגדרנו מטריצה הופכית וראינו איך לחשב אותה. התשובה היא:
נשתמש בחוקי הכפל של מטריצות כדי להגיע לפתרון עבור הזרם שמעניין אותנו:
תם ונשלם. זרם החוג I2 הוא אולי לא זרם אמיתי אבל על R3 הוא בדיוק הזרם שאנחנו מחפשים. אם היינו מחפשים את הזרם על הנגד R2 היינו פשוט מחשבים לפי I1-I2.
***
אז מדוע הטרחתי אתכם עם הדרך הארוכה והמסובכת הזאת? אדגיש שוב שישנן דרכים פשוטות הרבה יותר לפתרון המעגל שמופיע באיור 2.
ברשותכם נחפור מעט לתוך המשוואה הראשונית בצורתה המטריצית. התבוננו במשוואה, האם אתם מבחינים בחוקיות כלשהי?
איברי האלכסון הראשי של מטריצה R הם סך כל ההתנגדויות על כל חוג. האיברים מחוץ לאלכסון הם ההתנגדויות המשותפות לשני החוגים בסימן מינוס (כל עוד זרמי החוגים בכיוונים הפוכים). כל איבר במטריצת המתחים הוא סך כל מקורות המתח בחוג הרלוונטי.
למעשה יכולנו לכתוב את המטריצה לפי החוקיות הזאת באופן אוטומטי ללא צורך בכתיבת משוואות. החוקיות נשמרת גם אם נזדקק למספר גדול יותר של חוגים ולמטריצות מסדר גבוה יותר.
שיטה זאת נקראת 'זרמי חוגים' (Mesh current) ובאמצעותה ניתן לפתור כל מעגל מהצורה שהצגתי כאן בלי לבצע שום ניתוח ולמעשה ללא צורך להפעיל את המוח, גם במקרה של מעגלים סבוכים שבהם מספר רב של נגדים ומקורות מתח. ניסחנו אלגוריתם שמוביל למטריצה ולחישוב שאותו מבצע המחשב. אנחנו יכולים לנוח!
כעת, בזמן שהמחשב מחשב עבורנו, יש לנו זמן ללכת לעבוד (אולי בתכנון מעגלים חשמליים), להרוויח מלא כסף, וללכת לקנות איתו במכולת.
מסקנה: עם מטריצות אפשר לקנות במכולת.
מ.ש.ל
שלום אני מטריצה, נעים להכיר – על מה ולמה, מבוא
המחשב הוא גולם.
ואם אנחנו רוצים שהגולם יעבוד עבורנו עלינו לתרגם את המידע לצורות שהוא מבין.
המחשב אוהב מספרים. ככל שנצליח לנסח את הבעיות שלנו באמצעות מספרים בלבד ובאמצעות מבנים שמוכרים כבר בתוך המכונה, כך הפתרון יהיה פשוט יותר.
***
נבחן בעיה פשוטה ומוכרת במתמטיקה: פתרון שתי משוואות בשני נעלמים.
הכוונה היא שיש לנו שני משתנים 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 נעלמים לא קונים במכולת!"
אההה! במקרה הרשימה הבאה תעסוק בדיוק בזה. אמנם לא נקנה במכולת, אבל נעשה עם מטריצות משהו אפילו יותר מעניין.