Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

11th grade-all tasks

2151 views
Kernel: SageMath (stable)

משוואות דיפרנציאליות


א. מה זו משוואה דיפרנציאלית

משוואה דיפרנציאלית זו משוואה המכילה ביטויים מתמטיים בהם משולבים משתנים ונגזרותיהם. למשל המשוואה:dydx=xy\frac{dy}{dx}=-\frac{x}{y} היא משוואה דיפרנציאלית מסדר ראשון. פרושה של משוואה זו הוא שהנגזרת הראשונה של המשתנה התלוי y, נמצאת ביחס ישר למנת המשתנה הבלתי תלוי x במשתנה התלוי y. המשוואה:d2ydx2=3x2y\frac{d^2y}{dx^2}=3\cdot x^2\cdot y היא משוואה מסדר שני. גם המשוואה d2ydx2+3dydx+y=0\frac{d^2y}{dx^2}+3\cdot \frac{dy}{dx}+y=0 היא משוואה דיפרנציאלית מסדר שני. כפי שבוודאי כבר הבנתם, סדר המשוואה הוא הסדר הגבוה ביותר של הנגזרת המופיעה בה.

תרגיל

מה הסדר של כל אחת מהמשווארות הדיפקנציאליות שבהמשך?:d3ydx3dydx=3x2+y \frac{d^3y}{dx^3}-\frac{dy}{dx}=3\cdot x^2+y d2ydx2+3(dydx)3+y=0\frac{d^2y}{dx^2}+3\cdot(\frac{dy}{dx})^3+y=0

פתרון המשוואה הדיפרנציאלית הוא פונקציה f(x)f(x) שאם תוצב במשוואה, במקום המשתנה הבלתי תלוי, יתקבל פסוק אמת. פתרון של המשוואהdydx=xy\frac{dy}{dx}=-\frac{x}{y} יכולה להיות הפונקציה: f(x)=ax2f(x)=\sqrt{a-x^2} כאשר a הוא קבוע. בעזרת Sympy ניגזור ונציב את הפתרון במשוואה.
#1. סדר 3 #2. סדר 3
import sympy as sp sp.init_printing() sp.var('x') y = sp.Function('y') eq = sp.Eq(y(x).diff(x), -x / y(x)) eq
ddxy(x)=xy(x)\frac{d}{d x} y{\left (x \right )} = - \frac{x}{y{\left (x \right )}}
a = sp.var('a') f = sp.sqrt(a-x ** 2) f.diff(x) - eq.rhs.subs(y(x), f)
00

הצבה של f(x)f(x) במשוואה הדיפרנציאלית נותנת פסוק אמת ולכן הפונקציה ax2\sqrt{a-x^2} היא פתרון של המשוואה. עבור כל בחירה של a נקבל פונקציה היכולה לשמש פיתרון למשוואה הדיפרנציאלית. הפיתרון הכללי של משוואה דיפרנציאלית הוא למעשה לא פונקציה אחת אלה משפחה של פונקציות. הפיתרון הכללי של המשוואה מכיל פרמטרים שמספרם שווה לסדר המשוואה.

הפתרון הכללי של משוואה דיפרנציאלית מסדר ראשון יכיל פרמטר חופשי אחד ומשוואה דיפרנציאלית מסדר שני תכיל שני פרמטרים. אם ידוע ערך פונקציית הפתרון בנקודות מסוימות שמספרן כמספר הפרמטרים, אפשר לקבוע ערך מספרי לפרמטרים, והפיתרון הוא פתרון פרטי. לדוגמא אם יודעים כי פתרון המשוואה dydx=xy\frac{dy}{dx}=-\frac{x}{y} עובר דרך הנקודה (1,1) אפשר לקבוע את ערכו של a באמצעות פתרון המשוואה y=ax2y=\sqrt{a-x^2}.

import sympy as sp sp.init_printing() sp.var('a x y') eq = sp.Eq(y,sp.sqrt(a - x ** 2)) eq = eq.subs([(x, 1), (y, 1)]) x=sp.solve(eq, a)[0] x
22

במקרה זה הפונקציה y(x)=2x2y(x)=\sqrt{2-x^2}
היא הפתרון הפרטי של המשוואה הדיפרנציאלית הנתונה. פתרונן האנליטי של משוואות דיפרנציאליות איננו מלאכה פשוטה ולא תמיד ניתן למצוא למשוואה פיתרון אנליטי. לחבילות השונות של Python מספר כלים המסייעים במציאת פיתרון, בפרק זה תכירו אחדים מהם.

תרגיל

א. הראו כי גם הפונקציה y(x)=ax2y(x)=-\sqrt{a-x^2} יכולה להיות פתרון דיפרנציאלי למשוואה dydx=xy\frac{dy}{dx}=-\frac{x}{y}. האם זה פתרון כללי או פרטי?

ב. האם הפונקציה 3x2\sqrt{3-x^2} יכולה להיות פתרון למשוואה הדיפרנציאלית dydx=xy\frac{dy}{dx}=-\frac{x}{y} ? אם כן, האם זה פתרון כללי או פרטי?

ג. כמה פרמטרים (חוץ מ- k ו-m) יכיל הפתרון הכללי של המשוואה: d2xdt2+kmx=0\frac{d^2x}{dt^2}+\frac{k}{m}\cdot x=0

ד. הראו כי הפונקציה x(t)=Asin(ωt+ϕ)x(t)=A\cdot sin(\omega\cdot t+\phi) היא פתרון של המשוואה הדיפרנציאלית בסעיף הקודם, אם A,ωA, \omega ו-ϕ\phi הפרמטרים מקיימים תנאי מסויים. מיצאו תנאי זה.

ה. (אתגר) מהו הפתרון הפרטי אם הגוף המתואר על ידי המשוואה נמצא במרחק מטר אחד מהראשית בזמן t=0 ומהירותו ברגע זה היא 0.

import sympy as sp sp.init_printing() sp.var('x') y = sp.Function('y') eq = sp.Eq(y(x).diff(x), -x / y(x)) a = sp.var('a') f = -sp.sqrt(a-x ** 2) f.diff(x) - eq.rhs.subs(y(x), f) # הפתרון הינו פתרון כללי # הפונקציה יכולה להיות פתרון פרטי של המשוואה כיוון שהיא מתאימה לנקודה אחת על הישר # עוד 2 A,ω,t,phi,k,m,x,v=sp.symbols('A ω t phi k m x v') xt = A*sp.sin(ω*t+phi) xt1=xt.diff(t) xt2=xt1.diff(t) xt2 eq2 = sp.Eq(xt2+(k/m)*x,0) xsol = sp.solve(eq2,x) xsol eq3 = sp.Eq(xt2,v) eq3 = eq3.subs({:,})
[Amkω2sin(ϕ+tω)]\left [ \frac{A m}{k} ω^{2} \sin{\left (\phi + t ω \right )}\right ]

ב. תרשים כיוונים

נתונה המשוואה הדיפרנציאלית dydx=f(x,y)\frac{dy}{dx}=f(x,y) . נניח כי ידוע כי פתרון מסוים של המשוואה עובר דרך הנקודה (x0,y0)(x_0,y_0). אם נציב את x0x_0 ו- y0y_0 בפונקציה f(x,y)f(x,y) נקבל את שיפוע המשיק לפונקציית הפתרון y(x)y(x) בנקודה P=(x0,y0)P=(x_0,y_0). באופן דומה, עבור כל נקודה במישור נוכל למצוא את כיוון המשיק לפתרון מסוים העובר דרך הנקודה.


תרגיל
ידוע כי הפונקציה g(x)g(x) היא פתרון של המשוואה הדיפרנציאלית dgdxxg=4\frac{dg}{dx}-x\cdot g=4 אם הפונקציה עוברת דרך הנקודה (2,1)(-2,1) מה שיפועה שם? הסבירו.

#dg/dx-x*g=4 #dg/dx=x*g+4 #x=-2,g=1 #M=-2*1+4=2 #yes roi daria allowed that
כדי לגלות פתרון איכותי של משוואה דפרנציאלית, נהוג ליצור במישור סריג של נקודות. בכל אחת מנקודות הסריג מציירים חץ קטן שכיוונו ככיוון המשיק לפונקציה y(x)y(x) אילו עברה דרך הנקודה. תרשים כזה מכונה תרשים כיוונים . תרשים הכיוונים הוא כלי מצוין למציאת פתרון למשוואה דיפרנציאלית ולו גם באופן איכותי בלבד. לחבילה matplotlib ולנגזרות שלה pylab ו- pyplot פונקציה בשם quiver המאפשרת לשרטט תרשים חיצים (או תרשים כיוונים במקרה שלנו). קטע הקוד שבהמשך מייצר תרשים כיוונים של המשוואה dydx=xy\frac{dy}{dx}=-\frac{x}{y} ברבע הראשון של המישור.
%matplotlib inline import matplotlib.pyplot as plt import numpy as np dydx=lambda x, y: -x / y x=np.linspace(0.01, 10, 19) y=np.linspace(0.01, 10, 19) X,Y=np.meshgrid(x, y) theta = np.arctan(dydx(X,Y)) vx=np.cos(theta) vy=np.sin(theta) plt.figure(figsize=(7, 7)) plt.quiver(X , Y, vx, vy, pivot = 'tail') plt.title('fig 1')
Text(0.5,1,'fig 1')
Image in a Jupyter notebook

מתקבל תרשים כיוונים שבו החיצים הם משיקים למעגלים שמרכזם הוא ראשים הצירים.


תרגיל

  1. מה עושה השיטה linspace?

  2. כיתבו פונקציה המקבלת את הפונקציה dydx ומציירת עבורה תרשים כיוונים ברביע הראשון. העזרו בקוד המופיע בחלונית הקודמת.

  3. ראינו כי פתרון פרטי של המשוואה הדיפרנציאלית הוא:y(x)=20x2y(x)=\sqrt{20-x^2}. צרו את תרשים 2: תרשים הכיוונים ועל גביו הפתרון הפרטי הנ"ל.

בשאלה 2 התבקשתם להפוך את הקוד לפונקציה. לא עשית את זה.
לא הבנתם את שאלה 3. עליכם לצייר את הפונקציה הנ"ל על גבי תרשים הכיוונים ולהווכח שתרשים הכיוונים אכן מתאר את שיפוע הפונקציה.

#1.it creates and array with numbers between the first and second input, with equal jumps, which depend on the thired input, which #is the number of numbers in the array. #2. %matplotlib inline import matplotlib.pyplot as plt import numpy as np dydx=lambda x, y: -x / y x=np.linspace(0.01, 10, 19) y=np.linspace(0.01, 10, 19) X,Y=np.meshgrid(x, y) theta = np.arctan(dydx(X,Y)) vx=np.cos(theta) vy=np.sin(theta) plt.figure(figsize=(7, 7)) plt.quiver(X , Y, vx, vy, pivot = 'tail') plt.title('fig 1') %matplotlib inline import matplotlib.pyplot as plt import numpy as np dydx=lambda x, y: np.sqrt(20-x**2) x=np.linspace(0.01, 10, 19) y=np.linspace(0.01, 10, 19) X,Y=np.meshgrid(x, y) theta = np.arctan(dydx(X,Y)) vx=np.cos(theta) vy=np.sin(theta) plt.figure(figsize=(7, 7)) plt.quiver(X , Y, vx, vy, pivot = 'tail') plt.title('fig 1')
/ext/sage/sage-8.3_1804/local/lib/python2.7/site-packages/sage/repl/ipython_kernel/__main__.py:25: RuntimeWarning: invalid value encountered in sqrt
Text(0.5,1,u'fig 1')

מתרשים הכיוונים ברור כי פיתרון כללי של המשוואה הדיפרנציאלית הוא מעגל שמרכזו בראשית. ראו תמונה שלמטה pic

נניח כי הנקודה (x,y) היא נקודה על היקף מעגל שראשיתו בראשית בנקודה (0,0) (ראו תרשים שלמעלה). המשיק למעגל בנקודה (x,y) ניצב לישר המחבר נקודה זו למרכז המעגל. שיפוע הישר המחבר את נקודת ההשקה למרכז המעגל הוא yx\frac{y}{x} . המשיק למעגל בנקודה הוא הניצב לישר זה ולכן שיפעו הוא xy-\frac{x}{y} . משוואת מעגל שריבוע רדיוסו (a)\sqrt(a) ומרכזו בראשית היא y2+x2=ay^2+x^2=a או y=ax2y=\sqrt{a-x^2} .

תרגילים

1. נתונה המשוואה הדיפרנציאלית dydx=yx\frac{dy}{dx}=-\frac{y}{x}
א. כיצד יראה לדעתכם תרשים הכיוונים של המשוואה? נסו לצייר את התרשים במחברת.
ב. אמתו את תשובתכם באמצעות תרשים כיוונים
ג. רשמו פתרון כללי למשוואה
ד. מה הפתרון הפרטי אם ידוע כי y(2)=3y(2)=3?
ה. הוסיפו פתרון פרטי זה לתרשים הכיוונים וודאו שהוא נכון.

אילו הייתם מגדירים פונקציה שיוצרת תרשימי כיוונים, לא הייתם צריכים להעתיק שוב את הקוד.



לא הגדרתם נכון פונקציה באמצעות מילת המפתח lambda

#a. #it would constantly go down,but at a faster pace as it progresses #b. %matplotlib inline import matplotlib.pyplot as plt import numpy as np dydx = lambda x, y: -x / y x=np.linspace(0.01, 10, 19) y=np.linspace(0.01, 10, 19) X,Y=np.meshgrid(x, y) theta = np.arctan(dydx(X,Y)) vx=np.cos(theta) vy=np.sin(theta) plt.figure(figsize=(7, 7)) plt.quiver(X , Y, vx, vy, pivot = 'tail') plt.title('fig 1') #c. #np.sqrt(a-x**2) #d. #a=13 #e. dydx=lambda: x, np.sqrt(13-2**2) x=np.linspace(0.01, 10, 19) y=np.linspace(0.01, 10, 19) X,Y=np.meshgrid(x, y) theta = np.arctan(dydx(X,Y)) vx=np.cos(theta) vy=np.sin(theta) plt.figure(figsize=(7, 7)) plt.quiver(X , Y, vx, vy, pivot = 'tail')
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-1-32a74c58e931> in <module>() 30 X,Y=np.meshgrid(x, y) 31 ---> 32 theta = np.arctan(dydx(X,Y)) 33 vx=np.cos(theta) 34 vy=np.sin(theta) TypeError: 'tuple' object is not callable
2. הכוח אותו מפעיל האוויר על גוף הנע בתוכו, נמצא ביחס ישר לריבוע מהירות הגוף. מקדם הפרופורציה הוא מספר התלוי בשטח חתך הגוף, צורתו וצפיפות האוויר. נסמן קבוע זה ב- c.

א. נניח כי גוף ניזרק מעלה במהירות v0v_0. הראו כי מהירות הגוף מקימת את המשוואה הדיפרנציאלית: dvdt=gcmvv\frac{dv}{dt}=-g-\frac{c}{m}|v|v (גודל הביטוי vv|v|v הוא כגודלה של ריבוע המהירות והוא חיובי כאשר המהירות חיובית ושלילי כאשר המהירות שלילית).

ב. הראו כי יחידות המידה של c הן יחידת מסה מחולקת ביחידת מרחק.

ג. כתבו תוכנית באמצעותה תוכלו לקבל תרשים כיוונים של המשוואה הדיפרנציאלית כתלות בפרמטרים g, c ו- m. בידקו שאתם מקבלים תוצאה הגיונית עבור מקרה הקצה בו החיכוך עם האוויר זניח, כלומר המקדם c שווה ל-0.

ד. עבור גוף מסוים נתון: c=1.2 kg/m ו- m=0.4kg. הגוף ניזרק מעלה במהירות 10m/s. תארו בעזרת תרשים הכיוונים את אופן תנועת הגוף.

ה. תארו במילים את תנועת הגוף שבסעיף הקודם אילו ניזרק מטה במהירות -10m/s.

ו. אפשר לראות שכעבור פרק זמן מספיק ארוך גוף הנופל בהשפעת התנגדות האוויר נופל במהירות קצובה. כיצד תלוי גודלה של מהירות זו ב- c, m ו-g?

השלימו את התרגיל הזה אחרי פסח