ערכים עצמיים ווקטורים עצמיים
האקספוננט של מטריצה
The Exponential of a Matrix
מגדירים e^(At) בעזרת טור החזקות כך שהוא פותר את בעיית ההתחלה גם כשאין בסיס עצמי מלא; לאחר מכן משווים בין הטור, הלכסון והמקרה החסר.
- 1נקודת פתיחהמה כבר ידוע ומה השאלה?
- 2ניבוימה יקרה במקרה הפשוט?
- 3המחשהמה באמת משתנה בתמונה?
- 4ניסוח והצדקהשם, נוסחה ולמה היא נכונה
- 5בדיקהדוגמה, תרגול ומשוב
- 6העברהמקרה חדש והמשך המסלול
שאלה לפני נוסחה
מה אנחנו מנסים לראות?
להגדיר ולחשב e^(At), להוכיח שהוא מעביר מצב התחלתי לפתרון של y′=Ay, ולבחור בין טור, לכסון ונוסחה למטריצה חסרה.
e^(At) היא מכונת ההתפתחות של המערכת: מכניסים מצב בזמן 0 ומקבלים את המצב בזמן t. כל עמודה שלה היא פתרון שמתחיל בווקטור בסיס אחר, ולכן אותה מטריצה פותרת בבת אחת את כל בעיות ההתחלה.
לפני ההמחשה: קראו רק את הכותרת “מטריצה אחת שמעבירה כל מצב בזמן”. מה לדעתכם ישתנה, מה יישאר קבוע, ואיזה סימן בתמונה יוכל להפריך את הניבוי?
לראות לפני שמחשבים · המקרה הפשוט ביותר
מטריצה אחת שמעבירה כל מצב בזמן
האיור מציג כיצד e^(At) שולחת שני וקטורי בסיס לעמודותיה, וכל תנאי התחלה נשלח באותו צירוף.
מה כדאי לגלות: ב־t=0 העמודות הן e₁,e₂ ולכן e^(A0)=I. במטריצה חסרה אחת העמודות מקבלת גם גורם t.
אחרי שראינו
בסוף השיעור תוכלו
- להסביר מדוע טור החזקות של האקספוננט תקף למטריצה ומה מתקבל ב־t=0.
- לגזור d(e^(At))/dt=Ae^(At) ולהשתמש ב־y(t)=e^(At)y₀.
- לחשב אקספוננט במטריצה לכסינה, נילפוטנטית או חסרה ולהכיר את מגבלת e^(A+B).
נותנים שמות למה שראינו
מושגים שנשתמש בהם
- אקספוננט מטריצי
- הטור e^(At)=Σ(At)^k/k!, המוגדר לכל מטריצה ריבועית.
- מטריצה יסודית
- מטריצה Φ(t) שעמודותיה פתרונות בלתי תלויים ומקיימת Φ′=AΦ; כאן Φ=e^(At).
- תכונת החבורה
- e^(A(t+s))=e^(At)e^(As), המתארת התקדמות בזמן בשני שלבים.
- מטריצה נילפוטנטית
- מטריצה N שחזקה סופית שלה היא אפס, ולכן טור e^(Nt) נעצר.
- קומוטטיביות
- AB=BA; תנאי שמאפשר לפצל e^(A+B)=e^Ae^B.
- trace
- סכום איברי האלכסון; מתקיים det(e^(At))=e^(tr(A)t).
מהמילים אל הסימנים
כותבים את הפעולה שכבר ראינו
פתחו את הנוסחה רק אחרי שאתם יכולים לומר במילים מה כל פעולה אמורה לעשות. בשלב הבא נצדיק אותה צעד אחר צעד.
להצגת נוסחת המפתח
קראו כל סימן כפעולה, לא כמשהו שצריך לשנןe^(At)=I+tA+t²A²/2!+⋯; y(t)=e^(At)y(0)מרכיבים את הפעולות
מהתמונה אל הנוסחה — הגזירה, בלי לדלג על הצעדים
מעתיקים את טור הסקלר
מחליפים את המספר at במטריצה At ושומרים את סדר הכפל. מכיוון שכל האיברים הם חזקות של אותה A, אין כאן בעיית חילוף סדר.
e^(At)=I+At+(At)²/2!+(At)³/3!+⋯בודקים את זמן האפס
כאשר t=0 כל האיברים בעלי חזקה חיובית נעלמים ונשאר I. לכן כפל במצב ההתחלתי מחזיר אותו בדיוק.
e^(A·0)=I ⇒ y(0)=Iy₀=y₀גוזרים איבר־איבר
גזירת t^k/k! מורידה חזקה ומבטלת את k. לאחר הזזת האינדקס מתקבל A כפול הטור המקורי.
d(e^(At))/dt=Ae^(At)=e^(At)Aאורזים את בעיית ההתחלה
אם y=e^(At)y₀, אז y′=Ae^(At)y₀=Ay ובזמן 0 מתקבל y₀. יחידות הפתרון מבטיחה שזהו הפתרון המבוקש.
y(t)=e^(At)y₀מחשבים דרך לכסון
כאשר A=VΛV⁻¹, כל חזקה בטור הופכת ל־VΛ^kV⁻¹. אפשר להוציא את V ו־V⁻¹ ולסכם את טורי הסקלרים שעל האלכסון.
e^(At)=V diag(e^(λ₁t),…,e^(λₙt))V⁻¹כאשר הטור נעצר
אם N²=0, כל החזקות מהשנייה והלאה נעלמות. ואם J=λI+N, שתי המטריצות מתחלפות ולכן אפשר להפריד את האקספוננטים.
e^(Nt)=I+tN; e^(Jt)=e^(λt)(I+tN)נזהרים מחיבור מטריצות
בסקלרים e^(a+b)=e^ae^b תמיד. במטריצות איברי הטור מתערבבים בסדרים AB ו־BA; הפיצול בטוח כאשר AB=BA.
AB=BA ⇒ e^(A+B)=e^Ae^B
עכשיו רואים את השיטה בפעולה
דוגמאות פתורות, צעד אחר צעד
האקספוננט של דוגמת העוגן
חשבו e^(At) עבור A=[[3,1],[3,5]] מן הלכסון.
משיעור 6.2: V=[[1,1],[-1,3]], Λ=diag(2,6), V⁻¹=(1/4)[[3,−1],[1,1]].
מחליפים את Λ ב־e^(Λt)=diag(e^(2t),e^(6t)).
כופלים V e^(Λt)V⁻¹ ומקבלים רבע מן המטריצה [[3e^(2t)+e^(6t),−e^(2t)+e^(6t)], [−3e^(2t)+3e^(6t),e^(2t)+3e^(6t)]].
ב־t=0 מתקבלת I. כפל ב־(2,2) מחזיר את פתרון העוגן מן השיעור הקודם.
e^(At)=(1/4)[[3e^(2t)+e^(6t), −e^(2t)+e^(6t)], [−3e^(2t)+3e^(6t), e^(2t)+3e^(6t)]].
טור קצר במטריצה חסרה
חשבו e^(Jt) עבור J=[[1,1],[0,1]].
כותבים J=I+N עם N=[[0,1],[0,0]] ו־N²=0.
I ו־N מתחלפות, לכן e^(Jt)=e^(It)e^(Nt).
e^(It)=e^tI, ואילו e^(Nt)=I+tN=[[1,t],[0,1]].
לכן מופיע האיבר te^t, אף של־J יש רק הערך העצמי 1.
e^(Jt)=e^t[[1,t],[0,1]].
איפה זה פוגש את העולם
יישום
בקרה, רשתות תגובה ומשוואות דיפרנציאליות לינאריות משתמשות ב־e^(At) כמפעיל מעבר מצב. לאחר שמחשבים אותו פעם אחת, אפשר להעביר כל מצב התחלתי ולחבר גם מקורות חיצוניים באמצעות אינטגרל תגובה.
מלכודת נפוצה
מה כדאי לבדוק
להניח ש־e^(A+B)=e^Ae^B בלי לבדוק AB=BA. זו זהות סקלרית שאינה עוברת אוטומטית למטריצות. בדיקה קצרה של שני המכפלות מונעת פירוק שגוי.
בודקים שהרעיון יושב
תרגול ומשוב
בדיקת הבנה
בחרו תשובה ורק אז בדקו את עצמכם
בחרו אחת מהאפשרויות כדי להמשיך.
עכשיו אתם
אתגר קצר
עבור A=[[0,−2],[2,0]], חשבו e^(At) מן הטור או מן הזהות A²=−4I, ופרשו את התוצאה גאומטרית.
רמז ראשון
הפרידו בטור בין חזקות זוגיות לאי־זוגיות. החזקות הזוגיות יוצרות cos(2t), והאי־זוגיות יוצרות sin(2t).
הצגת דרך הפתרון
- A²=−4I, ולכן A^(2k)=(−4)^kI ו־A^(2k+1)=(−4)^kA.
- סכום האיברים הזוגיים הוא cos(2t)I.
- סכום האיברים האי־זוגיים הוא (sin(2t)/2)A.
- לכן e^(At)=[[cos(2t),−sin(2t)],[sin(2t),cos(2t)]], סיבוב בזווית 2t.
מימוש הנושא
קוד שאפשר לקחת לניסוי
הקוד מיישם את אותו רעיון מתמטי. ב־JavaScript אפשר להריץ אותו כאן; גרסת Python זמינה להשוואה ולהעתקה.
הקוד מסכם את טור החזקות עד שהאיבר קטן, ומשווה אותו לנוסחה הסגורה במטריצה החסרה.
ב־t=0 תתקבל I; עבור J=[[1,1],[0,1]] ו־t=0.5, הטור יתקרב ל־e^0.5[[1,0.5],[0,1]].
הגדילו והקטינו את מספר איברי הטור. באילו ערכי t נדרשים יותר איברים כדי לשמור על אותה דיוק?
מהרעיון אל הקוד
מימוש חישובי
function matMul(A, B) {
return A.map(row => B[0].map((_, j) =>
row.reduce((sum, value, k) => sum+value*B[k][j], 0)));
}
function addScaled(A, B, scale) {
return A.map((row, i) => row.map((value, j) => value+scale*B[i][j]));
}
function expSeries(A, t, terms=28) {
let sum = [[1, 0], [0, 1]];
let term = [[1, 0], [0, 1]];
for (let k=1; k<terms; k++) {
term = matMul(term, A);
term = term.map(row => row.map(value => value*t/k));
sum = addScaled(sum, term, 1);
}
return sum;
}
const J = [[1, 1], [0, 1]];
const t = 0.5;
const exact = Math.exp(t);
console.log("series", expSeries(J, t));
console.log("exact", [[exact, t*exact], [0, exact]]);
console.log("at zero", expSeries(J, 0));from math import exp
def mat_mul(A, B):
columns = list(zip(*B))
return [[sum(a*b for a, b in zip(row, column))
for column in columns] for row in A]
def add_scaled(A, B, scale):
return [[value+scale*B[i][j] for j, value in enumerate(row)]
for i, row in enumerate(A)]
def exp_series(A, t, terms=28):
total = [[1, 0], [0, 1]]
term = [[1, 0], [0, 1]]
for k in range(1, terms):
term = mat_mul(term, A)
term = [[value*t/k for value in row] for row in term]
total = add_scaled(total, term, 1)
return total
J = [[1, 1], [0, 1]]
t = 0.5
exact = exp(t)
print("series", exp_series(J, t))
print("exact", [[exact, t*exact], [0, exact]])
print("at zero", exp_series(J, 0))לפני שממשיכים
מה לוקחים מהשיעור
- טור החזקות מגדיר e^(At) גם כשאין לכסון.
- e^(At) מתחיל ב־I, נגזרתו Ae^(At), והוא מעביר y₀ אל הפתרון בזמן t.
- לכסון הופך את החישוב לאקספוננטים סקלריים; נילפוטנטיות יכולה לקצר את הטור.
- פיצול אקספוננט של סכום דורש בדרך כלל שהמטריצות יתחלפו.
משימת מעבדה לשיעור הזה
תחנה 3 — e^(At) כמכונת זמן
בחרו מערכת, הזיזו את הזמן והשוו בין המיקום על המסלול לבין הספקטרום והאקספוננט המטריצי.
מקורות להעמקה בלבד — השיעור עומד בפני עצמו
מדריך המרצים: עמ׳ 179–184
ספר הלימוד: עמ׳ 362–371