שיטות גרפיות ונומריות
לינאריזציה ויציבות
Linearization and Stability in 2D and 3D
מקרבים מערכת לא־לינארית ליד שיווי משקל בעזרת מטריצת יעקובי.
- 1נקודת פתיחהמה כבר ידוע ומה השאלה?
- 2ניבוימה יקרה במקרה הפשוט?
- 3המחשהמה באמת משתנה בתמונה?
- 4ניסוח והצדקהשם, נוסחה ולמה היא נכונה
- 5בדיקהדוגמה, תרגול ומשוב
- 6העברהמקרה חדש והמשך המסלול
שאלה לפני נוסחה
מה אנחנו מנסים לראות?
לקרב מערכת לא־לינארית ליד נקודת שיווי משקל באמצעות מטריצת יעקובי, ולהסיק מן הערכים העצמיים שלה יציבות מקומית או אי־יציבות.
בקרבת שיווי משקל, שדה וקטורי חלק נראה כמעט כמו המפה המשיקה שלו. מטריצת יעקובי מודדת כיצד הפרעה קטנה בכל משתנה משנה מיד את כל רכיבי המהירות.
לפני ההמחשה: קראו רק את הכותרת “מקרוב sin(θ) נראה כמו θ”. מה לדעתכם ישתנה, מה יישאר קבוע, ואיזה סימן בתמונה יוכל להפריך את הניבוי?
לראות לפני שמחשבים · המקרה הפשוט ביותר
מקרוב sin(θ) נראה כמו θ
ההמחשה משווה במבט רחב ובתקריב את הכוח הלא־לינארי −sin(θ) לקירוב הלינארי −θ סביב שיווי המשקל θ=0.
מה כדאי לגלות: בתקריב שתי העקומות כמעט חופפות. התרחקו מן הראשית ושימו לב כיצד הפער גדל — זהו בדיוק הגבול המקומי של מסקנות הלינאריזציה.
אחרי שראינו
בסוף השיעור תוכלו
- למצוא את כל נקודות שיווי המשקל של מערכת לא־לינארית לפני ביצוע לינאריזציה.
- לחשב מטריצת יעקובי ולהעריך אותה בנקודת שיווי משקל נתונה.
- להסיק יציבות מקומית מממשות הערכים העצמיים במערכות דו־ממדיות ותלת־ממדיות.
- לזהות מצבים שבהם ערך עצמי על הציר המדומה הופך את מבחן הלינאריזציה ללא־מכריע.
נותנים שמות למה שראינו
מושגים שנשתמש בהם
- מערכת לא־לינארית
- מערכת x′=F(x) שבה רכיבי F עשויים להכיל מכפלות, חזקות או פונקציות לא־לינאריות של המצב.
- נקודה קריטית
- מצב קבוע Y שמקיים F(Y)=0; זהו שם נוסף לנקודת שיווי משקל.
- מטריצת יעקובי
- מטריצת כל הנגזרות החלקיות Jᵢⱼ=∂Fᵢ/∂xⱼ, המתארת את השינוי הלינארי הראשון בשדה.
- הפרעה
- הסטייה הקטנה u=x−Y מן שיווי המשקל שסביבה בודקים יציבות.
- נורמה ‖u‖
- הגודל של וקטור ההפרעה; ב־2D מתקיים ‖u‖=√(u₁²+u₂²).
- O(‖u‖²)
- איבר שגודלו חסום על ידי C‖u‖² עבור קבוע C כאשר u קרוב מספיק לאפס; לכן הוא קטן מן האיבר הלינארי בסביבה קטנה.
- שיווי משקל היפרבולי
- נקודת שיווי משקל שליעקובי שלה אין ערכים עצמיים בעלי חלק ממשי אפס.
- יציבות מקומית
- מסקנה התקפה לתנאי התחלה קרובים מספיק לשיווי המשקל, לא בהכרח בכל מרחב המצבים.
מהמילים אל הסימנים
כותבים את הפעולה שכבר ראינו
פתחו את הנוסחה רק אחרי שאתם יכולים לומר במילים מה כל פעולה אמורה לעשות. בשלב הבא נצדיק אותה צעד אחר צעד.
להצגת נוסחת המפתח
קראו כל סימן כפעולה, לא כמשהו שצריך לשנןu′ ≈ J(Y)uמרכיבים את הפעולות
מהתמונה אל הנוסחה — הגזירה, בלי לדלג על הצעדים
מוצאים קודם את שיווי המשקל
לינאריזציה של יציבות מתחילה רק בנקודה שבה המהירות אפס. יש לפתור את כל רכיבי F(Y)=0 יחד; נגזרות בנקודה אחרת מתארות שיפוע מקומי אך לא יציבות של מצב קבוע.
x′=F(x), F(Y)=0בונים את היעקובי תא אחר תא
במערכת דו־ממדית x′=f(x,y), y′=g(x,y), השורה הראשונה מכילה את נגזרות f והשנייה את נגזרות g. לאחר הגזירה מציבים את נקודת שיווי המשקל.
J(x,y)=[[∂f/∂x,∂f/∂y],[∂g/∂x,∂g/∂y]], A=J(Y)עוצרים לחשוב: גוזרים כל רכיב לפי כל משתנה, כאשר המשתנה האחר מוחזק קבוע.
מפרידים את ההפרעה
כותבים את המצב כסכום של שיווי המשקל והסטייה ממנו. מאחר ש־Y קבוע, נגזרת המצב היא בדיוק נגזרת ההפרעה.
x=Y+u ⇒ u′=F(Y+u)לוקחים את האיבר הראשון של טיילור
היעקובי מרכז את כל השינויים מסדר ראשון. השאר R(u) קטן בסדר ריבועי ביחס להפרעה כאשר F חלקה מספיק.
F(Y+u)=F(Y)+J(Y)u+R(u), ‖R(u)‖=O(‖u‖²)מתקבלת מערכת לינארית מקומית
מפני ש־F(Y)=0, האיבר הקבוע נעלם. עבור הפרעות קטנות, הדינמיקה המובילה היא זו של מטריצת היעקובי.
u′=J(Y)u+O(‖u‖²) ≈ J(Y)uמבחן הערכים העצמיים בכל ממד
ב־2D, ב־3D ובכל ממד סופי: אם לכל ערכי J(Y) חלק ממשי שלילי מתקבלת יציבות אסימפטוטית מקומית. אם לפחות לאחד חלק ממשי חיובי, שיווי המשקל אינו יציב.
max Re(λ)<0 ⇒ יציב אסימפטוטית; max Re(λ)>0 ⇒ לא יציבהמקרה ההיפרבולי הוא המקרה המכריע
כאשר אף ערך עצמי אינו נמצא על הציר המדומה, הסיווג הלינארי נשמר מקומית גם במערכת הלא־לינארית. הצורה עשויה להתעקם, אך בור, מקור או אוכף אינם מחליפים את יציבותם.
Re(λᵢ)≠0 לכל i ⇒ שיווי משקל היפרבוליחלק ממשי אפס עוצר את המבחן
אם קיים λ עם Re(λ)=0 ואין ערך בעל חלק ממשי חיובי, האיברים הלא־לינאריים שנזנחו עשויים לייצב או לערער. לכן מרכז לינארי אינו הוכחה ליציבות של המערכת המקורית.
Re(λ)=0 ⇒ הלינאריזציה לבדה אינה מכריעהעוצרים לחשוב: במקרה כזה מחפשים פונקציית אנרגיה, פונקציית ליאפונוב או ניתוח מסדר גבוה יותר.
עכשיו רואים את השיטה בפעולה
דוגמאות פתורות, צעד אחר צעד
מטוטלת מרוסנת: למטה יציב, למעלה אוכף
נתחו את נקודות שיווי המשקל של y′=z, z′=−z−sin(y).
משיווי המשקל נדרש z=0 וגם sin(Y)=0, ולכן Y=nπ ו־Z=0.
נסמן f(y,z)=z ו־g(y,z)=−z−sin(y). נגזרות השורה הראשונה הן ∂f/∂y=0 ו־∂f/∂z=1.
נגזרות השורה השנייה הן ∂g/∂y=−cos(y) ו־∂g/∂z=−1, ולכן J(y,z)=[[0,1],[−cos(y),−1]].
בנקודה התחתונה (0,0), מתקבל J=[[0,1],[−1,−1]] והפולינום λ²+λ+1=0.
הערכים λ=(−1±i√3)/2 בעלי חלק ממשי שלילי, ולכן (0,0) היא ספירלה מושכת מקומית.
בנקודה העליונה (π,0), מתקבל J=[[0,1],[1,−1]] והפולינום λ²+λ−1=0.
ערך אחד (−1+√5)/2 חיובי והשני שלילי, ולכן (π,0) היא נקודת אוכף לא־יציבה.
ריסון מחזיר מטוטלת שנמצאת קרוב לתחתית, אך סטייה זעירה מן המצב הזקוף גורמת לה ליפול.
(2nπ,0): יציב; ((2n+1)π,0): לא יציבלינאריזציה בשלושה ממדים
נתחו את יציבות הראשית במערכת x′=−x+y², y′=−2y+xz, z′=z+x².
מציבים (x,y,z)=(0,0,0) ומקבלים F(0,0,0)=0, ולכן הראשית היא שיווי משקל.
היעקובי הכללי הוא J=[[−1,2y,0],[z,−2,x],[2x,0,1]].
בראשית כל האיברים הלא־אלכסוניים מתאפסים: J(0)=diag(−1,−2,1).
במטריצה אלכסונית הערכים העצמיים הם איברי האלכסון: λ₁=−1, λ₂=−2, λ₃=1.
הערך החיובי λ₃=1 יוצר כיוון הפרעה שגדל. די בערך עצמי חיובי אחד כדי להסיק אי־יציבות מקומית.
שני כיוונים דועכים, אך הכיוון השלישי גדל; הראשית אינה יציבה.
spec(J(0))={−1,−2,1} ⇒ unstableאיפה זה פוגש את העולם
יישום
לינאריזציה מאפשרת לבדוק במהירות אם בקרה, מטוטלת או מערכת אוכלוסיות תחזור למצב עבודה לאחר הפרעה קטנה. באותה שיטה מחשבים יעקובי 3×3 במערכת תלת־ממדית.
מלכודת נפוצה
מה כדאי לבדוק
טעות נפוצה היא לחשב יעקובי בנקודה שבה F(Y)≠0 או להפוך מסקנה מקומית לטענה גלובלית. בנוסף, חלק ממשי אפס אינו הוכחה ליציבות של המערכת הלא־לינארית.
בודקים שהרעיון יושב
תרגול ומשוב
בדיקת הבנה
בחרו תשובה ורק אז בדקו את עצמכם
בחרו אחת מהאפשרויות כדי להמשיך.
עכשיו אתם
אתגר קצר
במערכת y′=z, z′=−y−z³ מתקבלים בלינאריזציה סביב הראשית הערכים ±i ולכן הבדיקה אינה מכריעה. הגדירו E=(y²+z²)/2, חשבו את E′ והסבירו מה מגלה האיבר הלא־לינארי.
רמז ראשון
גזרו את E לאורך מסלול: E′=yy′+zz′. לאחר הביטול, בדקו מתי E′=0 והאם מסלול שאינו הראשית יכול להישאר תמיד בקבוצה הזאת.
הצגת דרך הפתרון
- הצבה נותנת E′=yz+z(−y−z³)=−z⁴≤0, ולכן האנרגיה אינה גדלה.
- מכאן שהפרעות קטנות אינן יכולות לצבור אנרגיה ולברוח: הראשית יציבה במובן ליאפונוב.
- השוויון E′=0 מתקיים כאשר z=0. אך אם z=0 ו־y≠0, אז z′=−y≠0 ולכן המסלול עוזב מיד את הקבוצה הזאת.
- המסלול היחיד שיכול להישאר ב־E′=0 הוא הראשית. עקרון האינווריאנטיות מראה שהפתרונות מתקרבים אליה: האיבר −z³ יוצר ריסון לא־לינארי שהיעקובי לא ראה.
מימוש הנושא
קוד שאפשר לקחת לניסוי
הקוד מיישם את אותו רעיון מתמטי. ב־JavaScript אפשר להריץ אותו כאן; גרסת Python זמינה להשוואה ולהעתקה.
pendulumJacobian בונה את היעקובי בכל זווית, ו־classify2x2 קוראת את סימני העקבה, הדטרמיננטה והדיסקרימיננטה.
ב־θ=0 יודפס stable spiral; ב־θ=π יודפס unstable saddle.
שנו את איבר הריסון −1 ל־0. אילו ערכים עצמיים מתקבלים בתחתית, ומדוע הקוד צריך לדווח שהמבחן אינו מכריע?
מהרעיון אל הקוד
מימוש חישובי
function classify2x2(A, tolerance=1e-12) {
const trace = A[0][0] + A[1][1];
const det = A[0][0]*A[1][1] - A[0][1]*A[1][0];
const delta = trace**2 - 4*det;
if (Math.abs(det) < tolerance) return { trace, det, delta, type: "inconclusive" };
if (det < 0) return { trace, det, delta, type: "unstable saddle" };
if (delta < 0) {
const type = trace < 0 ? "stable spiral"
: trace > 0 ? "unstable spiral" : "inconclusive center";
return { trace, det, delta, type };
}
const type = trace < 0 ? "stable node"
: trace > 0 ? "unstable node" : "inconclusive";
return { trace, det, delta, type };
}
function pendulumJacobian(theta) {
return [[0, 1], [-Math.cos(theta), -1]];
}
for (const theta of [0, Math.PI]) {
console.log({ theta, ...classify2x2(pendulumJacobian(theta)) });
}from math import cos, pi
def classify_2x2(A, tolerance=1e-12):
trace = A[0][0] + A[1][1]
det = A[0][0]*A[1][1] - A[0][1]*A[1][0]
delta = trace**2 - 4*det
if abs(det) < tolerance:
kind = "inconclusive"
elif det < 0:
kind = "unstable saddle"
elif delta < 0:
kind = ("stable spiral" if trace < 0 else
"unstable spiral" if trace > 0 else "inconclusive center")
else:
kind = ("stable node" if trace < 0 else
"unstable node" if trace > 0 else "inconclusive")
return {"trace": trace, "det": det, "delta": delta, "type": kind}
def pendulum_jacobian(theta):
return [[0, 1], [-cos(theta), -1]]
for theta in (0, pi):
print({"theta": theta, **classify_2x2(pendulum_jacobian(theta))})לפני שממשיכים
מה לוקחים מהשיעור
- לינאריזציה של יציבות תקפה רק סביב נקודה המקיימת F(Y)=0.
- היעקובי הוא המודל הלינארי של הפרעות קטנות סביב שיווי המשקל.
- כל החלקים הממשיים שליליים מבטיחים יציבות אסימפטוטית מקומית; חלק ממשי חיובי מבטיח אי־יציבות.
- ערך עצמי בעל חלק ממשי אפס אינו תשובה אלא סימן שצריך לבדוק את האיברים הלא־לינאריים.
- מסקנת היעקובי היא מקומית, גם כאשר החישוב עצמו מדויק.
משימת מעבדה לשיעור הזה
תחנה 2 — מגדילים סביב שיווי משקל
בחרו תבנית מטריצה ותנאי התחלה, השוו את המסלול הלא־לינארי ללינאריזציה סביב הראשית ובדקו כיצד המרחק מן הראשית משנה את ההתאמה.
מקורות להעמקה בלבד — השיעור עומד בפני עצמו
מדריך המרצים: עמ׳ 87–91
ספר הלימוד: עמ׳ 170–183