משוואות מסדר ראשון
המשוואה הלוגיסטית
The Logistic Equation
גידול שמאט ליד קיבולת הנשיאה, יציבות, קציר ושינוי במספר שיווי המשקל.
- 1נקודת פתיחהמה כבר ידוע ומה השאלה?
- 2ניבוימה יקרה במקרה הפשוט?
- 3המחשהמה באמת משתנה בתמונה?
- 4ניסוח והצדקהשם, נוסחה ולמה היא נכונה
- 5בדיקהדוגמה, תרגול ומשוב
- 6העברהמקרה חדש והמשך המסלול
שאלה לפני נוסחה
מה אנחנו מנסים לראות?
לפתור את המשוואה הלוגיסטית, לקרוא יציבות מקו פאזה, ולראות כיצד קציר משנה את מספר שיווי המשקל.
בתחילת הדרך כמעט כל מפגש יכול לייצר גידול; ליד הקיבולת K רוב המשאבים כבר תפוסים. הגורם 1−y/K מודד את החלק הפנוי שנותר.
לפני ההמחשה: קראו רק את הכותרת “פרבולת הקצב ועקומת ה־S”. מה לדעתכם ישתנה, מה יישאר קבוע, ואיזה סימן בתמונה יוכל להפריך את הניבוי?
לראות לפני שמחשבים · המקרה הפשוט ביותר
פרבולת הקצב ועקומת ה־S
הגרף העליון מציג y′ כפונקציה של y; התחתון מציג את y לאורך הזמן.
מה כדאי לגלות: אתרו את y=K/2 בשני הגרפים. מדוע שיא הפרבולה מתאים לנקודת הפיתול של עקומת ה־S?
אחרי שראינו
בסוף השיעור תוכלו
- לסווג את שיווי המשקל 0 ו־K באמצעות סימן קצב הגידול.
- לגזור את הפתרון הלוגיסטי בלי לדלג על שלבי ההפרדה והבידוד.
- לחשב את קצב הגידול המרבי ואת סף הקציר הקריטי.
נותנים שמות למה שראינו
מושגים שנשתמש בהם
- קיבולת נשיאה K
- הרמה שהמשאבים מסוגלים לתמוך בה לאורך זמן במודל הבסיסי.
- שיווי משקל
- ערך y* שבו אגף ימין מתאפס ולכן הפתרון יכול להישאר קבוע.
- יציב
- שיווי משקל שאליו פתרונות סמוכים נעים; בלתי יציב דוחה פתרונות סמוכים.
- קו פאזה
- ציר y שעליו מסמנים את שיווי המשקל ואת כיוון התנועה לפי סימן y′.
- קציר H
- הוצאה קבועה בעלת יחידות כמות/זמן, ללא תלות בגודל האוכלוסייה.
מהמילים אל הסימנים
כותבים את הפעולה שכבר ראינו
פתחו את הנוסחה רק אחרי שאתם יכולים לומר במילים מה כל פעולה אמורה לעשות. בשלב הבא נצדיק אותה צעד אחר צעד.
להצגת נוסחת המפתח
קראו כל סימן כפעולה, לא כמשהו שצריך לשנןy′ = ay(1−y/K)מרכיבים את הפעולות
מהתמונה אל הנוסחה — הגזירה, בלי לדלג על הצעדים
מתחילים משיווי משקל וקו פאזה
נניח a>0, K>0 ו־y₀≥0. ל־a יחידות 1/זמן ול־K יחידות כמות. הקצב אפס ב־0 וב־K; לכן 0 בלתי יציב ו־K יציב.
y'=ay(1−y/K): 0 →→ K ←←שומרים פתרונות מיוחדים ומפרידים
y=0 ו־y=K הם פתרונות קבועים. עבור פתרון אחר מחלקים בשני הגורמים ומעבירים את כל y לצד אחד ואת t לצד השני.
dy/[y(1−y/K)] = a dtמפרקים ומבצעים אינטגרציה
השבר מתפרק לשני שברים פשוטים. שימו לב לסימן: האינטגרל של 1/(K−y) לפי y הוא −ln|K−y|.
1/[y(1−y/K)] = 1/y+1/(K−y) ⇒ ln|y|−ln|K−y|=at+Cמבודדים את y במלואו
נסמן r=(y₀/(K−y₀))e^(at). מן y/(K−y)=r נקבל y=rK−ry, ולכן y(1+r)=rK. הצבה מחדש נותנת את הנוסחה.
y(t)=K/[1+(K/y₀−1)e^(−at)]עוצרים לחשוב: y₀=0 ו־y₀=K טופלו קודם; עבור y₀>K הנוסחה מתארת ירידה אל K.
מוצאים את הגידול המרבי
האגף הימני הוא פרבולה ששיאה ב־K/2. שם y′=aK/4 וגם y″ מחליפה סימן, ולכן זו נקודת הפיתול של פתרון שאכן חוצה K/2.
y=K/2 ⇒ y'_max=aK/4מוסיפים קציר קבוע
קציר H מזיז את פרבולת הקצב מטה. מתחת לסף יש שני שיווי משקל; בסף הם מתאחדים לשיווי משקל חצי־יציב ב־K/2; מעליו אין שיווי משקל חיובי.
y'=ay(1−y/K)−H, H_critical=aK/4עוצרים לחשוב: כאשר H<aK/4, שיווי המשקל התחתון בלתי יציב והעליון יציב; זהו שינוי איכותי במספר שיווי המשקל.
עכשיו רואים את השיטה בפעולה
דוגמאות פתורות, צעד אחר צעד
פתרון לוגיסטי בסיסי
פתרו y′=0.6y(1−y/50), y(0)=5, וחשבו y(2).
a=0.6, K=50, y₀=5, ולכן K/y₀−1=9.
הפתרון הוא y(t)=50/(1+9e^(−0.6t)).
ב־t=2 מתקבל e^(−1.2)≈0.301, ולכן y(2)=50/(1+2.711)≈13.5.
בדיקה: y(0)=5 והפתרון עולה, כיוון ש־5 נמצא בין 0 ל־50 בקו הפאזה.
האוכלוסייה גדלה מכ־5 לכ־13.5 בשתי יחידות זמן ומתקרבת בהמשך ל־50.
y(t)=50/(1+9e^(−0.6t))כמה שיווי משקל נשארים עם קציר?
עבור a=0.4, K=100, השוו H=8, H=10 ו־H=12.
סף הקציר הוא aK/4=0.4·100/4=10.
ב־H=8 יש שני חיתוכים עם ציר y′=0: שיווי משקל תחתון בלתי יציב ועליון יציב.
ב־H=10 שני החיתוכים מתאחדים ב־K/2=50; זהו מקרה הסף.
ב־H=12 כל הפרבולה מתחת לאפס, ולכן אין שיווי משקל חיובי והמודל חוזה ירידה עד גבול תוקפו.
שינוי קטן סביב H=10 משנה את מספר שיווי המשקל מ־2 ל־0.
H_critical=10איפה זה פוגש את העולם
יישום
המודל מתאים לאוכלוסייה מוגבלת, אימוץ מוצר בשוק סופי או התפשטות בתוך מאגר משתמשים. K הוא פרמטר דינמי, לא פעולת חיתוך מלאכותית.
מלכודת נפוצה
מה כדאי לבדוק
לחשוב שפתרון שמתחיל מעל K נתקע מיד ב־K. למעשה הנגזרת שלילית והוא דועך אל K; רק פתרון שמתחיל בדיוק ב־K נשאר קבוע.
בודקים שהרעיון יושב
תרגול ומשוב
בדיקת הבנה
בחרו תשובה ורק אז בדקו את עצמכם
בחרו אחת מהאפשרויות כדי להמשיך.
עכשיו אתם
אתגר קצר
בהנחה 0<y₀<K/2, מצאו נוסחה לזמן שבו y מגיעה ל־K/2 והסבירו מדוע זה גם זמן נקודת הפיתול.
רמז ראשון
הציבו y=K/2 בנוסחה הסגורה. אחרי צמצום K, המכנה כולו חייב להיות שווה ל־2.
הצגת דרך הפתרון
- מציבים K/2=K/[1+(K/y₀−1)e^(−at)]. לאחר צמצום K מתקבל 1+(K/y₀−1)e^(−at)=2.
- לכן e^(−at)=1/(K/y₀−1), ומתקבל t*=ln(K/y₀−1)/a.
- ב־y=K/2 הפרבולה ay(1−y/K) בשיאה. לכן y′ מפסיקה לגדול ומתחילה לקטון, כלומר y″ מחליפה סימן וזו נקודת פיתול.
מימוש הנושא
קוד שאפשר לקחת לניסוי
הקוד מיישם את אותו רעיון מתמטי. ב־JavaScript אפשר להריץ אותו כאן; גרסת Python זמינה להשוואה ולהעתקה.
logistic מחשבת את הפתרון הסגור; harvestedEquilibria פותרת את המשוואה הריבועית שמתקבלת מאיפוס קצב עם קציר.
בזמן הפיתול מתקבל y=50. עבור H=8 מתקבלים שני שווי משקל, בערך 27.64 ו־72.36.
שנו את H לערכים 9.9, 10 ו־10.1. עקבו כיצד שני שווי המשקל מתאחדים ואז נעלמים.
מהרעיון אל הקוד
מימוש חישובי
function logistic(t, initial, rate, capacity) {
if (initial < 0 || rate <= 0 || capacity <= 0) {
throw new RangeError("initial must be non-negative; rate and capacity must be positive");
}
if (initial === 0) return 0;
const ratio = capacity / initial - 1;
return capacity / (1 + ratio * Math.exp(-rate * t));
}
function inflectionTime(initial, rate, capacity) {
if (!(initial > 0 && initial < capacity / 2)) return null;
return Math.log(capacity / initial - 1) / rate;
}
function harvestedEquilibria(rate, capacity, harvest) {
const normalized = 1 - (4 * harvest) / (rate * capacity);
if (normalized < 0) return [];
if (Math.abs(normalized) < 1e-12) return [capacity / 2];
const spread = Math.sqrt(normalized);
return [capacity * (1 - spread) / 2, capacity * (1 + spread) / 2];
}
const time = inflectionTime(10, 0.4, 100);
console.log(time, logistic(time, 10, 0.4, 100));
console.log(harvestedEquilibria(0.4, 100, 8));from math import exp, log
def logistic(t, initial, rate, capacity):
if initial < 0 or rate <= 0 or capacity <= 0:
raise ValueError("initial must be non-negative; rate and capacity must be positive")
if initial == 0:
return 0
ratio = capacity/initial - 1
return capacity / (1 + ratio*exp(-rate*t))
def inflection_time(initial, rate, capacity):
if not 0 < initial < capacity/2:
return None
return log(capacity/initial - 1) / rate
def harvested_equilibria(rate, capacity, harvest):
normalized = 1 - 4*harvest/(rate*capacity)
if normalized < 0:
return []
if abs(normalized) < 1e-12:
return [capacity/2]
spread = normalized**0.5
return [capacity*(1-spread)/2, capacity*(1+spread)/2]
time = inflection_time(10, 0.4, 100)
print(time, logistic(time, 10, 0.4, 100))
print(harvested_equilibria(0.4, 100, 8))לפני שממשיכים
מה לוקחים מהשיעור
- קו פאזה מאפשר לקבוע יציבות עוד לפני פתרון מפורש.
- בהפרדת משתנים שומרים תחילה את שיווי המשקל ורק אז מחלקים.
- קצב הגידול המרבי הוא aK/4 ב־y=K/2.
- קציר מעל הסף aK/4 מוחק את שיווי המשקל החיובי במודל.
משימת מעבדה לשיעור הזה
תחנה 3 — לוגיסטי, יציבות וקציר
התחילו מתחת ל־K, בדיוק ב־K ומעליו; אחר כך העבירו את H דרך הסף aK/4 וספרו את שיווי המשקל.
מקורות להעמקה בלבד — השיעור עומד בפני עצמו
מדריך המרצים: עמ׳ 25–32
ספר הלימוד: עמ׳ 53–64