מבוא לשיטות נומריות/משוואות דיפרנציאליות רגילות

מתוך testwiki
גרסה מ־19:39, 4 בספטמבר 2010 מאת imported>Eitanormand
(הבדל) → הגרסה הקודמת | הגרסה האחרונה (הבדל) | הגרסה הבאה ← (הבדל)
קפיצה לניווט קפיצה לחיפוש

הקדמה:

- פתרון אנליטי נותן פונקציה  f(x)

- פתרון נומרי נותן ערכים בנקודות מסויימות.

סוגי בעיות:

א) בעיית מד"ר מסדר ראשון:

1) שיטת אויילר.
2) שיטות סתומות.
3) שיטת קרנק-ניקולסון.
4) שיטת הנקודה המרכזית.
5) שיטת אויילר המשופרת.

ב) בעיית מד"ר מסדר שני או גבוה יותר:

  • שיטת רונגה-טונגה.

ג) בעיית מערכת משוואות דיפרנציאליות:

  • שימוש בשיטת אויילר.

ד) בעיית תנאי שפה (תנאי גבול)

1) shooting method.
2) הפרשים סופיים.


בעיית מד"ר מסדר ראשון

  • צורה כללית:  dydx=f(x,y(x))
  • ת. התכולה:  y(x0)=y0

1) שיטת אויילר

דרך א:

  • קירוב טיילור מסדר ראשון סביב  x0:

 y(x)=y(x0)+(xx0)dydx(x0)

  • אנו רוצים את הערך בנקודה הבאה  x1=x0+h נציב:

 y(x1)=y(x0)+(x1x0)dydx(x0)

  • הביטוי הכללי:
 y(xi+1)=yi+f(xi,yi)h+O(h2)

כאשר  O(h2) היא השגיאה.


דרך ב:

  • במקום קירוב טיילור נבצע נגזרת קדמית:

 dydx(xi)=y(xi+h)y(xi)h=y(xi+1y(xi)h

  • הביטוי הכללי:
 y(xi+1)=yi+f(xi,yi)h+O(h2)
  • השגיאה: מושפעת מגודל הצעד ומורכבת משגיאה מקומית: עבור כל שלב בפתרון ומשגיאה גלובלית: שגיאה המצטברת עד לנקודה בפתרון.


2) שיטות (סכמות) סתומות:

  • בדומה לאוילר נחשב נגזרת אך ע"י צעד אחורנית:

 dydx(xi+1)=y(xi+1)y(xi)h

 yi+1=y(xi)+f(xi+1,yi+1)h
  • הבעייה בשיטה זו: הנעלם  yi+1 מופיע משני צידי המשוואה ולכן מדובר במשוואה סתומה.


3) שיטת קרנק-ניקולסון

  • נחשב נגזרת ע"י קירוב מרכזי:

 dydx(xi+1/2)=y(xi+1)y(xi)2h2

 y(xi+1)y(xi)h=f(xi+1/2,yi+1/2)

  • כעת נמצע:

 =f(xi,yi)+f(xi+1,yi+1)2

  • נבודד את  y(xi+1)
 y(xi+1)=y(xi)+12h[f(xi,yi)+f(xi+1,yi+1)]
  • גם בשיטה זו ישנה בעייתיות כי הנעלם  y(xi+1) מופיע משני צידי המשוואה ולכן מדובר במשוואה סתומה.


יציבות

  • באופן כלי לשיטות סתומות תכונות יציבות-פתרון טובות יותר.
  • שגיאות מצעדים קודמים אינן גדולות מצעד לצעד בפתרון.
  • שיפורים לשיטת אויילר:

- קירוב טיילור מסדר גבוה (בעיה: הנגזרות של  f(x,y) עלולות להיות מסובכות.

- הקטנת h גודל הצעד (בעיה: מספר החישובים גדל, שגיאות עיגול).

- קירוב יותר טוב לשיפוע הנגזרת הראשונה (אויילר משתמש בקירוב קדמי).


4) שיטת הנקודה המרכזית

  • כמו בשיטת קרנק-ניקולסון, נחשב נגזרת ע"י קירוב מרכזי:

 y(xi+1)y(xi)h=f(xi+1/2,yi+1/2)

 y(xi+1)=y(xi)+hf(xi+1/2,yi+1/2)
  • ונחשב את  yi+1/2 לפי שיטת אויילר:
 yi+1/2=yi+h2f(xi,yi)
  • אנו בעצם מחשבים את הנקודה החדשה ע"י ערך הנגזרת באמצע הקטע.


5) שיטת אויילר המשופרת

  • שלבי פתרון:
1) לפי אויילר:  yi+10=yi+f(xi,yi)h
2) נגדיר k=0.
3) חישוב השיפוע הממוצע:  f¯ik=f(xi,yi)+f(xi+1,yi+1k)2
4) לפי קרנק-ניקולסון: תיקון הנקודה החדשה.  yi+1(k+1)=yi+f¯ikh
5) k=k+1.
6) לולאה, חזרה לשלב 3.
  • בשיטה זו יש אפשרות לאיטרציות פנימיות (k). חוזים ערך לפונקציה בנקודה חדשה ומבצעים תיקון באמצעות שיפוע הנקודה החדשה.
  • סדר גודל השגיאה בשיטה זו ובשיטת הנקודה המרכזית הוא מקומית  O(h3), גלובלית  O(h2)

הקטנת הצעד משפרת דיוק.


ב) בעיית מד"ר מסדר שני או גבוה יותר

  • צורה כללית:  d2ydx2=f(x,y(x),y(x))
  • תאנים - 2 תנאים נתונים באותה נקודה:  y(x0)=y0,y(x0)=y0*


שיטת פתרון: רונגה טונגה

  • הביטוי הכללי:  yi+1=yi+Φ(xi,yi,h)h
  • הפונקציה  Φ(yi,xi,h) מבטאת את השיפוע הממוצע.

עבור שיטה מסדר n:  Φ(xi,yi,h)=a1k+1+a2k2++ankn

כאשר ישנם n נעלמים:

 k1=f(xi,yi)

 k2=f(xi+b1h,yi+c11k1h)

 

 kn=f(xi+bn1h,yi+cn1,1k1h+cn1,2k2h++cn1,n1kn1h)

  • עבור בעיה מסדר שני:

 yi+1=yi+(a1k1+a2k2)h

 k1=f(xi,yi)

 k2=f(xi+b1h,yi+c1k1h)

תנאים לפרמטרים:  a1+a2=2b1a2=2c1a2=1


- לפי אוילר המשופר:  a1=12,a2=12

- לפי נקודה מרכזית:  a1=0,a2=1


  • ניתן לפתור מד"ר מסדר גבוה ע"י הגדרת הבעיה מחדש במערכת משוואות מסדר I:

 Z1=yZ2=yZ3=yZn=yn1

  נפתור n משוואות מסדר I  

 Z1=Z2Z2=Z3Z'n1=ZnZ'n=f(x,Z1,Z2,,Zn)


  • דוגמא למד"ר מסדר II:

 d2ydx2=f(x,y,y)

 y(x0)=y0,y(x0)=y0

 Z1=y quad,Z2=y

 Z1=Z2=y,Z'2=y=f(x,Z1,Z2)

תנאי התחלה:  Z1,0=y0,z2,0=y'0


ג) בעיית מערכת משוואות דיפרנציאליות:

  • צורה כללית:

 y'1=f1(x,y1,y2,,yn)

 y'2=f2(x,y1,y2,,yn)

 

 y'n=fn(x,y1,y2,,yn)


  • תנאי התחלה:

 y1(x0)=y1,0

 y2(x0)=y2,0

 

 yn(x0)=yn,0

  • הפתרון: n פונקציות

 y1(x)

 y2(x)

 

 yn(x)

  • שיטת הפתרון: נבצע אוילר מפורש לכל אחת מהמשוואות:

 =y1,i+f1(xi,y1,i,y2,i,,yn,i)h

 =y2,i+f2(xi,y1,i,y2,i,,yn,i)h

 

 =yn,i+fn(xi,y1,i,y2,i,,yn,i)h

  • בכתיב מטריציאלי:

- הבעיה:  Y=f(x,Y(x)),Y(x0)=Y0

- הפתרון:

 Y=[y1,y2,,yn]T

 Y0=[y1,0,y2,0,,yn,0]

 Yi+1=Yi+f(xi,Y(xi))h


3) בעיית תנאי שפה:

  • צורה כללית:  y=f(x,y,y)
  • תנאי התחלה:

 ab הערכים של תנאי ההתחלה אינם באותה נקודה כמו שהיה עד כה.

 y(a)=ya,y(b)=yb


1) שיטת shooting method - ניחוש ותיקון ערכים התחלתיים.

  • שלבי פתרון:
1) הנח תנאים התחלתיים.
2) פתרון בעיית הערך ההתחלתי.
3) חישוב תנאי הגבול שהתקבלו.
4) תיקון התנאים ההתחלתיים.
5) חזרה לשלב 2 בלולאה.


  • כיצד מתקנים את התנאים ההתחלתיים? (שלב 4)

- מנחשים תנאים התחלתיים (שלב 1) ומתאימים עקום אינטרפולציה לשם תיקונם.

- פותרים את המשוואה הלא לינארית

 BCg(IV)=0

כאשר BC הוא תנאי הגבול - boundry conditions

ו- I הוא עקום האינטרפולציה של התנאים ההתחלתיים שניחשנו  g(InitialValue)


2) שיטת ההפרשים הסופיים

  • נבטא את הנגזרת השניה באמצעות "קירוב לנגזרת שנייה" (מפרק גזירה נומרית)

 yi12yi+yi+1=h2y=h2f(xi,yi)

  • משוואה זו מוגדרת עבור הנקודות הפנימיות בלבד ולא עבור נקודות שפה (כי היא מצריכה גם צעד קדימה וגם צעד אחורה) ולכן עבור n+1 משתנים תתקבלנה n-1 משוואות.

 y02y1+y2=h2f(x1,y1) - נקודה 1

 

 yn22yn1+yn=h2f(xn1,yn1) - נקודה n-1

  • דרושות עוד 2 משוואות לפתרון:

- מקרה I: תנאי דריכילה: מוסיפים את שני תנאי השפה למשוואות:  y(a)=ya,y(b)=yb

- מקרה II: תנאי ניומן: תנאי גבול הנתונים באמצעות נגזרות:  y(x0)=y0,y(xN)=yN

  • מוסיפים שתי משוואות שהן קירוב לנגזרת:

1. קירוב קדמי/ אחורי:  yN=yNyN1h

חסרון: שגיאת הקיטוע גדולה יותר:  y0=y1y2h

2. קירוב נגזרת מרכזית:  y'N=yN+1yN12h

חסרון: עלי להוסיף 2 משוואות כי נוספים כעת שני נעלמים:  x1,xN+1

 x0mxN הופכות להיות נקודות פנימיות.

נקודת דמי: חישוב נקודה נוספת מעבר לגבול

נוספו 2 משוואות מתנאי הגבול אבל נוספו 2 נעלמים חדשים  x1,xN+1 ולכן יש צורך בעוד 2 משוואות:

 yN+1=yN1+2hyN

 y1=y1+2hy'0\

3. קירוב קדמי או אחורי עם שגיאה מסדר גבוה יותר.

מתקבל על ידי קירוב טיילור מסדר II  y'N=3yN4yN1+yN22h

וקירוב אחרוי לנגזרת השניה.

חסרון: פוגע במבנה התלת אלכסוני של המטריצה שיש לפתור אח"כ (מערכת המשוואות).

  • לאחר שביטאנו n+1 משוואות עבור n+1 נעלמים, ניתן ליצור מטריצה תלת אלכסונית ולפתור באמצעות אלגוריתם תומאס.