מצאתם טעות? תפתחו discussion! (צריך לפתוח משתמש, די באסה).
NUM1_011 שיטות נומריות לפתרון משוואות דיפרנציאליות
מבוא
אנו כבר מכירים שמד”רים יכולים להיות קשים לפתרונות אנליטיים, ובעוד מדח”ים לרוב לא פתירים בכלל, חוץ מכמה משפחות מסוימות. לכן, הביקוש לפתרונות נומריים של משוואות דיפרנציאליות הוא מאוד גבוה.
שיטת אויילר
שיטת אויילר, הידועה גם בשם שיטת אויילר לפנים, היא השיטה הפשוטה ביותר לפתרון מד”ר עם תנאי התחלה.
אנו נעסוק בפתרון מד”ר מהצורה:
נסמן את הפתרון המשוער של ב-, ונקבל את שיטת אויילר לפנים, שמשערת את הפתרון בצורה הבאה:
כאשר הוא התנאי התחלה שלנו.
שני שלבים של שיטת אוילר לפנים. הפיתרון המדויק הוא הגרף הרציף. הערכים הנומריים שהתקבלו בשיטת אוילר מוקפים בעיגול.
השגיאה (האמיתית) של שיטה זו וכל שיטה לפתרון נומרי של מד”ר נקראת השגיאה הכללית/גלובלית, והיא נתונה ע”י:
נגדיר עוד שגיאה לשיטות נומריות לפתרון מד”ר:
הגדרה:
שגיאה מקומית . שגיאה מקומית היא השגיאה שנוצרת בצעד יחיד של השיטה. כלומר:
מהפיתוח שביצענו עבור שיטת אויילר, ניתן להראות כי:
כאשר . נסיק כי לשיטה זו שגיאה מקומית מסדר .
נרצה לדעת מה סדר השגיאה של השגיאה הכללית. ראינו כי השגיאה המקומית היא מסדר . מספר הצעדים מחושב באופן מאוד פשוט ע”י , שהוא פרופורציונאלי ל-. לכן, נסיק כי השגיאה הכללית תהיה פרופורציונאלית ל-. נוכל גם להראות זאת בצורה אנליטית, שאת הפיתוח שלא אין לנו כוח להראות:
כאשר בקטע, ו- בקטע.
דוגמה:
נביט במד”ר הבא:
הפתרון האמיתי הוא . נפתור בשיטת אויילר:
נקבל את הפתרונות הבאים עבור ( הוא הפתרון האמיתי, ואילו הוא הפתרון המשוער):
עבור :
נשים לב שהשגיאה שלנו קטנה בערך פי כאשר קטן באותה מידה. בנוסף, השגיאה שלנו גדלה ככל ש- גדל.
שיטות רונגה-קוטה (Runge-Kutta)
שיטת אויילר בעלת שגיאה מסדר ראשון. לכן, היא שיטה לא יעילה כל כך - הצעד שלוקחים כל פעם צריך להיות מאוד קטן כדי לקבל פתרון שימושי.
כדי להתחיל להסביר שיטות עם סדר שגיאה יותר גבוה, נביט במד”ר , בצעד אחד, מ- ל-. נניח כי הקירוב עבור ידוע, ונפתח שיטות לקבל את קירוב ל- בנקודה הבאה .
שיטה מאוד נפוצה היא להשתמש רק במידע בצעד הנוכחי - . שיטת רונגה-קוטה היא שיטה בה מבצעים חישובים חוזרים כדי בצעד אחד כדי לקבל קירוב מסדר יותר גבוה.
שיטת רונגה-קוטה: חישובים חוזרים של הפונקציה בקטע משולבים כדי לקבל קירוב יותר טוב ב-.
כעת נפתח שאת שיטות הטרפז ושיטות הביניים שהן כולן סוגים שונים של שיטות רונגה-קוטה.
שיטת אויילר המתוקנת
אם נבצע אינטגרציה על המד”ר שלנו לפי , בקטע , נקבל:
כדי לחשב את האינטגרל, ניעזר בקירוב שלו לפי שיטת הטרפזים, ונקבל את שיטת הטרפזים הסתומה:
קוראים לשיטה זו סתומה כי החישוב של תלוי ב- בעצמו (בביטוי האחרון מצד ימין). לכן, יש הפרדה בין שיטות סתומות לשיטות לא סתומות. נרצה להפוך את שיטה זו ללא סתומה, ובכך לחשב את יותר בפשטות.
נשתמש בשיטת אויילר כדי לחשב בקירוב את :
כעת נוכל להציב זאת בשיטה הסתומה, כדי לקבל את שיטת הטרפזים, שנקראת גם שיטת אויילר המתוקנת:
נשים לב כי שיטה זו כוללת שני חישובים של בשלב . נאמר כי זוהי שיטת בשני שלבים.
השגיאה המקומית:
כאשר . משגיאת שיטת הטרפזים (עבור אינטגרלים), ניתן להראות אחרי פיתוח מאוד טכני ומשעמם שהשגיאה המקומית תהיה , כלומר מסדר .
שיטת אויילר המשופרת
נוכל גם לקבל קירוב עבור האינטגרל בעזרת קירוב ביניים, כדי לקבל את שיטת הביניים הסתומה:
כאשר:
נשתמש בשיטת אויילר כדי למצוא קירוב ל-:
נציב, ונקבל את שיטת הביניים, שנקראת גם שיטת שיטת אויילר המשופרת:
כמו מקודם, זוהי שיטת בשני שלבים, עם שגיאה מסדר .
שיטת רונגה-קוטה הקלאסית
שיטת רונגה-קוטה הקלאסית מבוססת על אינטגרציה לפי שיטת סימפסון, ויש בה שלבים, כדי לקבל דיוק מסדר . היא נתונה ע”י:
הפיתוח של השיטה וההוכחה שהשגיאה של היא מסדר היא מסובכת שאפילו לספר לא היה כוח להראות אותו.
נהוג לסמן , ואז השיטה הופכת להיות:
להלן פונקציית MATLAB הכתובה עבור מערכת מד”ר. שימו לב שבמקום לחשב את , מחושב הערך :
דוגמה:
נביט במד”ר הבא:
הפתרון האמיתי הוא . נראה את השגיאות ב-:
ניתן באמת לראות שכל השיטות נותנות שגיאות מסדר בהתאמה.
תניב מרחב פתרונות ב- פרמטרים (מימד). כדי לקבל פתרון יחיד, דרושים אילוצים שכולם נתונים עבור נקודה ספציפית , כמו תנאי התחלה שראינו מקודם. לפי קיום ויחידות, כאשר נתונים תנאי התחלה, למד”ר קיים פתרון אמיתי ויחיד.
אבל, נוצרת בעיה כאשר במקום תנאי התחלה נתונים לנו תנאי שפה, כלומר שנתונים לנו אילוצים ב-, ו- אילוצים ב-. דוגמה לכך היא בעיית שטורם ליוביל.
דוגמה:
את המד”ר:
נוכל לרשום כמערכת משוואות:
אם היה נתון לנו תנאי התחלה, כמו למשל , אז קיים פתרון אמיתי ויחיד. אבל, אם היו נתונים לנו תנאי שפה כמו:
אז למשוואה יש כעת שני פתרונות שונים:
שני פתרונות שונים לבעיה עם תנאי שפה.
שיטת הירי (Shooting method)
בשיטת הירי אנו הופכים את הבעיית שפה שלנו לבעיית התחלה. היא כוללת מציאת פתרונות לבעיית התחלה עם תנאי התחלה שונים, עד שמוצאים פתרון שמקיים את תנאי השפה.
במונחים פשוטים, אנו “יורים” בכיוונים שונים מתנאי שפה אחד, עד שאנו “פוגעים” במטרה, שהוא התנאי שפה השני שלנו.
פתרון בעזרת שיטת הירי של הדוגמה הקודמת. נשים לב שעבור “ירייה” בכיוונים התחלתיים שונים, הפתרון שלנו מתכנס לאחד משני הפתרנות של הבעיה.
אנו נתמקד בפתרון נומרי של בעיה מסדר :
נפרק לשני מקרים - לינארית ו- לא לינארית.
שיטת הירי עבור משוואה לינארית
נביט במקרה הכללי של בעיה לינארית מסדר עם תנאי שפה:
כיוון שהבעיה לינארית, נוכל למצוא פתרון עבורה בעזרת רק “ניחושים” - כלומר רק שני בעיות התחלה () עם תנאי התחלה שונים. פעם אנו “יורים” בשיפוע , פעם בשיפוע :
בעיה :
בעיה :
מאחר הבעית שפה היא לינארית, הפתרון שלה יהיה לינארי ביחס לפתרונות של הבעיות התחלה בעלי אותה המשוואה:
נדרוש שהפתרון שלה יקיים את תנאי השפה הראשון, :
מהגדרת הבעיות, ולכן:
נדרוש שהפתרון שלה יקיים את תנאי השפה השני, :
מהסופרפוזיציה שפיתחנו מקודם:
אין כבר משמעות ל- ב-, אז פשוט נסמן אותו . נסכם:
הערות:
נשים לב שהפתרון הסופי לא תלוי בבחירה בתנאי התחלה של בעיות ההתחלה שפיתחנו. כלומר, לא חובה עלינו לבחור את השיפועים ו-.
יכל להיות שמבחירת תנאי ההתחלה שלנו, יקרה מצב בו , ואז ייתאפס לנו המכנה. במקרה כזה, פשוט נחליף את תנאי ההתחלה שקבענו בפיצול הבעיה. כלומר, נבחר ו- שונים, כך שהפתרונות ישתנו.