Contact Us!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

| Download

סדנת מדע חישובי לתלמידי שמיר

Views: 34
Image: ubuntu2204
Kernel: Python 3 (system-wide)



האסון האקולוגי בגואם
גואם (הטריטוריה של גואם - באנגלית: U.S. Territory of Guam) הוא אי מקבוצת איי מריאנה שבמערב האוקיינוס השקט, ושטח חסות של ארצות הברית. 29% משטח האי משמשים את הכוחות המזוינים של ארצות הברית.אורכו של גואם הוא 50 ק"מ ורוחבו 6 עד 19 ק"מ, ושטחו 549 קמ"ר. בשנות השמונים המוקדמות של המאה הקודמת, רשויות שמירת הטבע של ארצות הברית גילו שמספר מיני ציפורי שיר שחיו באי ניכחדו. בהתחלה חשבו שהפגיעה בציפורים נובעת ממחלה ויראלית אבל בהמשך הסתבר שהגורם הוא נחש העצים האפור. נחש זה הוא מין פולש שהתגלה לראשונה בשנת 1952 וכניראה חדר לאי בשנות הארבעים או שנות החמישים המוקדמות. במשימה זאת תיבנו מודל חישובי שימדל את אופן גדילת הנחשים בגואם.

עוד על האסון של גואם תוכלו לקרוא בקישור זה.

ברור כי לקראת סוף שנות ה- 70 ותחילת שנות השמונים של המאה הקודמת אוכליסיית הנחשים עברה "התפוצצות אוכלוסין". נסמן את מספר הנחשים ב- x ואת קצב הגידול שלהם ב- dx (קצב הגדול זה השינוי במספר הנחשים בשנה).

שאלה: מה המשמעות של dx חיובי שלילי או אפס?

נוכל להיות יותר מדויקים אם נניח ש x שווה למסת הנחשים במקום למספרם. מכיוון שהמסה הממוצעת של נחש היא בסביבות 1 kg אזי x- יהיה בקרוב גם מספרם.
נניח כי 4 = dx ק"ג נחשים בשנה. בשנה מסוימת מצאו כי היו 100 נחשים. כמה נחשים יהיו בעוד שנתיים בהנחה שקצב הגידול קבוע?תוכלו לרשום את החישוב בתא הקוד שלמטה:
קצב גידול הנחשים לא יכול להיות מספר קבוע, הוא תלוי במספר הנחשים. dx=ax dx = a\cdot x a הוא פרמטר המתאר את ההפרש בין קצב הילודה היחסי לקצב התמותה היחסי.
משערים כי בממוצע רק צאצא אחד של נקבת נחש מגיע לבגרות בשנה. תוחלת החיים הממוצעת של הנחשים היא 10 שנים כך שעשירית ממספר הנחשים מתה בשנה. נוכל לכן לכתוב כי קצב הריבוי של הנחשים ניתן על ידי: dx=(12110)x dx = (\frac{1}{2} - \frac{1} {10})x
שאלה: מניין הופיע החצי?

נניח כי בשנה מסוימת היו בגואם 100 נחשים לקמ"ר. קטע הקוד בשפת Python שבהמשך מחשב את מספר הנחשים לקמ"ר כעבור 5 שנים. שנו אותו כך שיציג את מספר הנחשים בגואם כעבור 10 שנים.
a = (1/2 - 1/10) # קצב גידול x = 100 #נחשים years = 5 # שנים for i in range(0,years): x = x + a * x print("year=",i+1,f"snakes={x:3.2f} ")
year= 1 snakes=140.00 year= 2 snakes=196.00 year= 3 snakes=274.40 year= 4 snakes=384.16 year= 5 snakes=537.82
הקוד שלמטה משרטט גרף של מספר הנחשים כתלות בזמן. מה הבעיה בגרף?
import matplotlib.pyplot as plt a = 0.4 # קצב גידול x0 = 2 # מספר נחשים התחלתי t = 20 # מספר שנים x_list = [x] for i in range(t): x_list.append((a + 1) * x_list[-1]) plt.plot(x_list,'bo--') plt.title('snakes vs yeras', fontsize = 24, color = 'magenta' ) plt.xlabel('years') plt.ylabel('snakes')
Text(0, 0.5, 'snakes')
Image in a Jupyter notebook
לפי הגרף, מספר הנחשים גדל ללא גבול. כמובן שמודל כזה איננו הגיוני לאורך זמן. בשלב מסוים, כאשר מספר הנחשים גדול, כמות המזון קטנה וגם הסיכוי להתפשטות מגפות גדל ולכן התמותה עולה וקצב הגידול קטן. מודל נכון יותר הוא מודל שבו מניחים כי קצב הגידול ניתן על ידי: a(1xk) a(1 - \frac{x}{k}) לפי מודל זה ברגע שהאוכלוסיה עולה על ערך מסוים, k, קצב הגידול נהיה שלילי. התמותה גדולה מהילודה והאוכלוסיה קטנה. הערכה גסה של k היא כ-1500 נחשים למ״ר.
קטע הקוד שבהמשך משרטט גרף של מספר הנחשים כתלות בזמן עבור k זה.
a = 0.4# קצב גידול x0 = 2 # מספר נחשים התחלתי k = 1500 t = 40 # מספר שנים x_list = [x0] for i in range(t): x_list.append((a * (1 - x_list[-1] / k)+ 1) * x_list[-1]) plt.plot(x_list,'bo--') plt.title('snakes vs yeras', fontsize = 24, color = 'magenta' ) plt.xlabel('years') plt.ylabel('snakes') print('snakes after:',t,f'years equal:{x_list[-1]:3.1f}')
snakes after: 40 years equal:1499.9
Image in a Jupyter notebook

האם הכמות ההתחלתית של הנחשים משפיעה על הערך עליו מתיצב מספרם? בידקו זאת על ידי שינוי x0 והרצת הקוד מחדש.
למודל התנהגות מאד מעניינת עבור ערכים שונים של הפרמטר a. שנו את a לכל אחד מהערכים:1.7, 2.3, 2.5, 2.7 ובחנו את התנהגות המודל.