שיטות גרפיות ונומריות
משוואות לא־לינאריות ושדות שיפועים
Nonlinear Equations y′=f(t,y)
איזוקלינות, כיווני זרימה וקיום ויחידות של פתרון.
- 1נקודת פתיחהמה כבר ידוע ומה השאלה?
- 2ניבוימה יקרה במקרה הפשוט?
- 3המחשהמה באמת משתנה בתמונה?
- 4ניסוח והצדקהשם, נוסחה ולמה היא נכונה
- 5בדיקהדוגמה, תרגול ומשוב
- 6העברהמקרה חדש והמשך המסלול
שאלה לפני נוסחה
מה אנחנו מנסים לראות?
לבנות ולקרוא שדה שיפועים עבור y′=f(t,y), לזהות איזוקלינות וקווי אפס ולהשתמש בתנאי היחידות כדי להבין מדוע מסלולי פתרון אינם חוצים זה את זה.
שדה שיפועים הוא מפה של הוראות מקומיות: בכל נקודה (t,y) חץ קטן מצביע בכיוון שהפתרון חייב להמשיך בו. איזוקלינה מחברת נקודות שבהן לכל החצים אותו שיפוע, ועקומת פתרון נשארת משיקה לחצים לכל אורכה.
לפני ההמחשה: קראו רק את הכותרת “החצים מספרים את הסיפור לפני הנוסחה”. מה לדעתכם ישתנה, מה יישאר קבוע, ואיזה סימן בתמונה יוכל להפריך את הניבוי?
לראות לפני שמחשבים · המקרה הפשוט ביותר
החצים מספרים את הסיפור לפני הנוסחה
ההמחשה מציגה את שדה השיפועים של y′=1−y², את קווי האפס y=±1 ואת הפתרון היוצא מן הראשית.
מה כדאי לגלות: עברו מלמטה למעלה: היכן החצים פונים מעלה, היכן מטה, ומדוע אף מסלול שמתחיל בין y=−1 ל־y=1 אינו חוצה את שני קווי שיווי המשקל?
אחרי שראינו
בסוף השיעור תוכלו
- לחשב את השיפוע והכיוון המנורמל של החץ בכל נקודה נתונה בשדה.
- לשרטט איזוקלינות וקווי אפס ולהסיק מהם היכן פתרונות עולים, יורדים או נשארים קבועים.
- להשתמש בתנאי קיום ויחידות כדי לקבוע מתי שני פתרונות אינם יכולים להיפגש.
- לבנות קירוב מסלול מן השדה ולבדוק אותו מול פתרון אנליטי כאשר הוא ידוע.
נותנים שמות למה שראינו
מושגים שנשתמש בהם
- שדה שיפועים
- אוסף קטעים קצרים במישור (t,y), שכל אחד מהם מציג את השיפוע f(t,y).
- איזוקלינה
- עקומת גובה f(t,y)=s שלאורכה לכל חצי השדה אותו שיפוע s.
- קו אפס
- האיזוקלינה f(t,y)=0; החצים עליה אופקיים, אך היא אינה בהכרח פתרון.
- משוואה אוטונומית
- משוואה מן הצורה y′=f(y), שבה חוק השינוי אינו תלוי במפורש בזמן.
- שיווי משקל
- פתרון קבוע y(t)=Y שמקיים f(t,Y)=0 לכל t בתחום.
- יחידות מקומית
- דרך כל תנאי התחלה בסביבה עובר לכל היותר פתרון אחד; תנאי ליפשיץ ב־y מבטיח זאת.
- tanh
- הטנגנס ההיפרבולי tanh(t)=(eᵗ−e⁻ᵗ)/(eᵗ+e⁻ᵗ); ערכיו בין −1 ל־1 ונגזרתו 1−tanh²(t).
- artanh
- הפונקציה ההפוכה ל־tanh בתחום |y|<1: artanh(y)=½ln((1+y)/(1−y)).
מהמילים אל הסימנים
כותבים את הפעולה שכבר ראינו
פתחו את הנוסחה רק אחרי שאתם יכולים לומר במילים מה כל פעולה אמורה לעשות. בשלב הבא נצדיק אותה צעד אחר צעד.
להצגת נוסחת המפתח
קראו כל סימן כפעולה, לא כמשהו שצריך לשנןslope = f(t,y)מרכיבים את הפעולות
מהתמונה אל הנוסחה — הגזירה, בלי לדלג על הצעדים
מתנאי התחלה לחוק מקומי
המשוואה אינה נותנת מיד את y(t); היא אומרת מה חייב להיות השיפוע בכל נקודה. תנאי ההתחלה בוחר את העקומה המסוימת שצריכה לעבור דרך הנקודה הנתונה.
y′=f(t,y), y(t₀)=y₀מציירים חץ באורך אחיד
וקטור הכיוון הטבעי הוא (1,f): התקדמות אופקית של יחידה גוררת שינוי אנכי f. מנרמלים כדי ששיפועים גדולים לא ייצרו חצים ארוכים יותר אלא רק תלולים יותר.
d(t,y)=(1,f(t,y))/√(1+f(t,y)²)מקבצים חצים בעזרת איזוקלינות
על העקומה f(t,y)=s לכל החצים שיפוע s. איזוקלינות של ערכים שונים אינן נפגשות, מפני שלפונקציה f יש ערך יחיד בכל נקודה.
איזוקלינה של s: f(t,y)=sעוצרים לחשוב: איזוקלינה היא עקומת פתרון רק אם גם השיפוע הגאומטרי שלה שווה ל־s.
קו אפס ושיווי משקל אינם אותו דבר
על קו האפס החצים אופקיים. רק קו אופקי y=Y שעליו f(t,Y)=0 לכל t נותן פתרון קבוע. במשוואה אוטונומית די למצוא שורש של f(y).
f(t,Y)=0 לכל t ⇒ y(t)=Yסימן השיפוע מנבא את התנועה
באזור שבו f>0 פתרונות עולים כש־t גדל; באזור שבו f<0 הם יורדים. במשוואה אוטונומית קווי שיווי המשקל מחלקים את הציר לרצועות שאפשר לנתח בטבלת סימנים.
f>0 ⇒ y עולה, f<0 ⇒ y יורדתמדוע פתרונות אינם חוצים
רציפות של f מסייעת להבטיח קיום. אם f גם מקומית־ליפשיץ ב־y — למשל אם ∂f/∂y רציפה — תנאי ההתחלה מגדיר פתרון מקומי יחיד. מפגש בין שני פתרונות היה יוצר שני המשכים מאותה נקודה ולכן אינו אפשרי.
f, ∂f/∂y רציפות בסביבה ⇒ קיום ויחידות מקומייםקוראים את y′=1−y²
השורשים y=±1 הם שיווי משקל. בין הקווים השיפוע חיובי ומחוץ להם שלילי, ולכן פתרון שמתחיל ב־|y₀|<1 מתקדם כלפי y=1 בלי לחצות אותו.
1−y²>0 כאשר |y|<1; 1−y²<0 כאשר |y|>1
עכשיו רואים את השיטה בפעולה
דוגמה פתורה, צעד אחר צעד
מן השדה אל פתרון עקומת S
מצאו את הפתרון של y′=1−y² עם y(0)=0 ובדקו שהמסקנות משדה השיפועים מתקיימות.
בתחום |y|<1 מפרידים משתנים: dy/(1−y²)=dt.
האינטגרל הוא artanh(y)=t+C, מפני ש־d[artanh(y)]/dy=1/(1−y²).
מתנאי ההתחלה y(0)=0 מתקבל C=0.
מפעילים tanh על שני הצדדים ומקבלים y(t)=tanh(t).
בדיקה: הנגזרת של tanh(t) היא 1−tanh²(t)=1−y², והפתרון נשאר בין −1 ל־1 ומתקרב ל־1 כאשר t→∞.
הפתרון עוקב בדיוק אחר החצים: הוא עולה, משתטח ליד קו שיווי המשקל ואינו חוצה אותו.
y(t)=tanh(t)איפה זה פוגש את העולם
יישום
במודל מנורמל של ויסות לא־לינארי, y′=1−y² מחזיר כל מצב התחלתי y₀>−1 לכיוון היעד y=1 ומאט לידו. הקו y=−1 הוא סף לא־יציב; מתחתיו המצב דווקא יורד ומתרחק, הבחנה שהשדה חושף מיד.
מלכודת נפוצה
מה כדאי לבדוק
לחשוב שכל איזוקלינה היא עקומת פתרון. איזוקלינה רק מסמנת היכן השיפוע המבוקש שווה ל־s; היא עצמה פתרון רק כאשר השיפוע הגאומטרי שלה שווה גם הוא ל־s בכל נקודה.
בודקים שהרעיון יושב
תרגול ומשוב
בדיקת הבנה
בחרו תשובה ורק אז בדקו את עצמכם
בחרו אחת מהאפשרויות כדי להמשיך.
עכשיו אתם
אתגר קצר
עבור y′=y²−t סמנו את קו האפס t=y² ואת סימן השיפוע משני צדדיו. אם פתרון פוגש את קו האפס, הגדירו g(t)=y(t)²−t והשתמשו ב־g′ כדי להראות שהפתרון מגיע שם למקסימום מקומי.
רמז ראשון
לאורך פתרון מתקיים g=y′. גזרו את g(t)=y(t)²−t לפי t והציבו g=0 ברגע המפגש.
הצגת דרך הפתרון
- מימין לפרבולה t=y² מתקיים y²−t<0 ולכן הפתרונות יורדים; משמאלה מתקיים y²−t>0 ולכן הם עולים.
- לאורך פתרון g′=2yy′−1=2yg−1.
- ברגע t* שבו הפתרון פוגש את קו האפס, g(t*)=0 ולכן g′(t*)=−1<0.
- לכן g=y′ עובר מחיובי לשלילי בסביבת המפגש: העקומה עולה לפניו ויורדת אחריו, ולכן y(t*) הוא מקסימום מקומי.
מימוש הנושא
קוד שאפשר לקחת לניסוי
הקוד מיישם את אותו רעיון מתמטי. ב־JavaScript אפשר להריץ אותו כאן; גרסת Python זמינה להשוואה ולהעתקה.
directionField בונה חצים מנורמלים מן החוק f, ואוילר מחבר הוראות מקומיות למסלול מקורב.
בטבלת החצים השיפועים יהיו 0 בגבהים ±1 ו־1 בגובה 0. בסוף עשרה צעדים יתקבל y≈0.780 לעומת tanh(1)≈0.762.
הקטינו את h מ־0.1 ל־0.05 והכפילו את מספר הצעדים. האם נקודת הסיום מתקרבת ל־tanh(1)?
מהרעיון אל הקוד
מימוש חישובי
const rhs = (_t, y) => 1 - y * y;
function directionField(rhs, tValues, yValues) {
return tValues.flatMap((t) => yValues.map((y) => {
const slope = rhs(t, y);
const length = Math.hypot(1, slope);
return { t, y, slope, dx: 1/length, dy: slope/length };
}));
}
function euler(rhs, t0, y0, h, steps) {
const path = [{ t: t0, y: y0 }];
let t = t0;
let y = y0;
for (let n = 0; n < steps; n += 1) {
y += h * rhs(t, y);
t += h;
path.push({ t, y });
}
return path;
}
console.table(directionField(rhs, [0], [-1, -.5, 0, .5, 1]));
const path = euler(rhs, 0, 0, .1, 10);
console.log(path.at(-1), Math.tanh(1));from math import hypot, tanh
rhs = lambda _t, y: 1 - y*y
def direction_field(rhs, t_values, y_values):
field = []
for t in t_values:
for y in y_values:
slope = rhs(t, y)
length = hypot(1, slope)
field.append({"t": t, "y": y, "slope": slope,
"dx": 1/length, "dy": slope/length})
return field
def euler(rhs, t0, y0, h, steps):
path = [(t0, y0)]
t, y = t0, y0
for _ in range(steps):
y += h*rhs(t, y)
t += h
path.append((t, y))
return path
print(direction_field(rhs, [0], [-1, -.5, 0, .5, 1]))
path = euler(rhs, 0, 0, .1, 10)
print(path[-1], tanh(1))לפני שממשיכים
מה לוקחים מהשיעור
- שדה שיפועים מתרגם את y′=f(t,y) להוראת כיוון בכל נקודה.
- איזוקלינות מארגנות שיפועים שווים; קו אפס הוא שיווי משקל רק כאשר הוא קו פתרון קבוע.
- סימן f מגלה עלייה וירידה גם בלי נוסחת פתרון.
- תנאי יחידות הוא הסיבה המתמטית לכך שמסלולי פתרון אינם נפגשים או חוצים זה את זה.
משימת מעבדה לשיעור הזה
תחנה 1 — קוראים את השדה
שנו את תנאי ההתחלה, את צעד אוילר ואת שיפוע האיזוקלינה; נבאו תחילה את כיוון התנועה ואז בדקו את המסלול ואת השגיאה.
מקורות להעמקה בלבד — השיעור עומד בפני עצמו
מדריך המרצים: עמ׳ 81–83
ספר הלימוד: עמ׳ 154–160