Kernel: Python 3 (Anaconda 2019)
name2-ו name1 הקלידו את שימכם ואת שם בן/בת זוגכם
In [26]:
חוק סנל ועיקרון פרמה-הזמן המינימאלי
נחשב את המסלול המהיר ביותר
מצילה הנמצאת בנקודה (x1,y1) רואה טובע הנמצא בנקודה (x2,y2). מהירות הריצה של המצילה ביבשה היא v1 ואילו במים היא שוחה במהירות v2.
התרשים מתאר את הבעיה:
In [0]:
הנקודה השמאלית התחתונה מייצגת את המקום בו נמצאת המצילה. הנקודה הימנית העליונה מייצגת את המקום בו נמצא הטובע. הקו האופקי המקווקו הוא קו x=0. הקו המאונך המלא, המחלק את התמונה לשתיים, הוא קו המפריד בין היבשה למים. נקודת המפגש בין הקו המקווקו והקו המלא הוא ראשית הצירים.
תרגיל 1
אילו מהירויות ההתקדמות של המצילה במים וביבשה היו זהות, רשמו מה היה המסלול המהיר ביותר כדי להציל את הטובע.
אילו מהירויות ההתקדמות של המצילה במים וביבשה היו זהות, המסלול המהיר ביותר כדי להציל את הטובע היה קו ישר
תרגיל 2
הפונקציה lifeguard_C_time שבתא שלמטה צריכה להחזיר את הזמן הלוקח למצילה לנוע בין המיקום שלה לקו המים בנקודה C. שיעורי הנקודה C הוא לאורך הציר x=0. הפרמטרים שהפונקציה מקבלת הם שיעור ה-y של מקום הנקודה C, מיקום המצילה ומהירותה ביבשה. השלימו את הפונקציה כך שהיא תחזיר את הזמן בין הנקודה C ומיקום המצילה.
In [27]:
2.1081851067789197
תרגיל 3
כתבו פונקציה בשם drowned_C_time. הפונקציה תקבל את אותה נקודה y כמו בתרגיל 2, מיקום הטובע ומהירות השחיה של המצילה במים. הפונקציה צריכה להחזיר את הזמן שלוקח למצילה לשחות בין הנקודה C והטובע.
In [1]:
9.762812094883317
תרגיל 4
במידה והקודים שכתבתם נכונים (בתרגילים 2 ו- 3), החיבור של שני הקודים הקודמים יחזיר את הזמן שלוקח למצילה להציל את הטובע כתלות בשיעור ה- y של הנקודה C, מהירויות המצילה במים וביבשה ומיקומם של הצילה והטובע. כתבו פונקציה אחת הקוראת לשתי הפונקציות הקודמות ומחשבת את הזמן שלוקח למצילה להגיע לטובע דרך נקודה C.
In [29]:
5.833904511881269
תרגיל 5
ישנם מספר שיטות לחשב מסלול עם זמן מינמאלי. אחת השיטות היא השיטה שלמדנו בשבוע שעבר (בה בדקנו כל פעם את אורך המסלול, חצינו את המסלול לקו האמצע, חישבנו שוב את אורך המסלול החדש והחלפנו בינו לבין המסלול הארוך ביותר מבין שני הקודמים).
שיטה נוספת למציאת ערך ה y שבו המסלול הוא מהיר ביותר הוא להתחיל בחישוב אורך המסלול כאשר y=y0 ולהשוות אותו למסלול בו y=y0+dy כאשר הערך dy יקבע את גודל השגיאה בחישוב כי הוא מתאר את אורך הצעד בין y ראשון ל- y הבאה.
הזמן שלוקח למצילה להגיע לטובע, עבור מיקומים קבועים של המצילה והטובע , תלוי במהירויות היחסיות של המצילה בים וביבשה.
כתבו פונקציה המחשבת את הזמן הקצר ביותר שיקח למצילה להגיע לטובע. אתם מקבלים כפרמטרים את מיקומי המצילה והטובע, את המהירויות של המצילה בים ביבשה ואת ערך השגיאה של הבדיקה שלכם.
In [30]:
('when c is (0,-0.0019999999999859453) the time is the shortest - ',
0.5590170390963338)
תרגיל 6
העריכו את השגיאה בחישוב שיעור ה-y של הנקודה C עבור ערכי dy שונים הנעים בין 0.05-0.5
In [12]:
{('dy is', 0.5): 0.25,
('dy is', 0.45): 0.22499999999999998,
('dy is', 0.4): 0.2,
('dy is', 0.35000000000000003): 0.17500000000000004,
('dy is', 0.30000000000000004): 0.15000000000000002,
('dy is', 0.25000000000000006): 0.12500000000000003,
('dy is', 0.20000000000000007): 0.10000000000000003,
('dy is', 0.15000000000000008): 0.07500000000000007,
('dy is', 0.10000000000000007): 0.050000000000000044,
('dy is', 0.05000000000000007): 0.025000000000000022}
השגיאה בחישוב ערך הוואי בנקודה סי תלוי בדלתא וואי, כלומר גודל הקפיצות בין בדיקה לבדיקה, משום שזה קובע את מידת הדיוק שניתן להגיע לתוצאה הנכונה. ככל שהקפיצה גדולה יותר, השגיאה תהיה גדולה יותר שכן יש רווחים גדולים יותר בין בדיקה לבדיקה. .
עקרון פרמה כמקדים לחוק סנל
הדוגמה של המצילה והטובע מדגים את עיקרון פרמה המסביר את מסלול האור כאשר הוא עובר מתווך אחד לתווך אחר. הסרטון שבהמשך (באנגלית- מצטערת) יסביר יותר מפורט את העקרון ויחבר אותו לחוק סנל.
In [1]:
תרגיל 7
כתבו פונקציה המחזירה את זוית השבירה של האור בתווך חדש, בהינתן את זווית הפגיעה ואת שני מקדמי השבירה של התווך הראשון והשני.
שימו לב שפייטון מחשב זויות רק ברדיאנים
בהנחה שהאור בא מהתווך בעל מהשבירה הגבוה, התרעו במשפט מה תהיה הזוית הקריטית
In [7]:
31.378438522021522
תרגיל 8
חזרו על הפעלה אבל עכשיו כתבו פונקציה המחזירה את מקדם השבירה של התווך החדש, בהינתן את זווית הפגיעה, זוית השבירה ומקדמי השבירה של התווך הראשון .
In [3]:
1.0009170307174313
תרגיל 9
שרטטו מקרה אחד של מסלול אור מכל אחד משני הפונקציות הקודמות .
In [8]:
enter refractive index :
enter second refractive index :
angle in degrees ;
theta2 =31.284419182523177
[<matplotlib.lines.Line2D at 0x7f48957b7e90>]
In [13]:
enter refractive index :
angle in degrees ;
angle in degrees ;
theta1 = 45.0 theta2 = 70.0
n2 =1.0030655966345146
Text(-2, 10, 'n2 =1.0030655966345146')
In [0]: