מבוא לשיטות נומריות/מציאת שורשים של משוואה

מתוך testwiki
קפיצה לניווט קפיצה לחיפוש

הקדמה:

  • באמצעות איטרציות נרצה למצוא פתרון (שורשים) של משוואה.
  • ההנחה:  f(x) - פונקציה רציפה.

מתי:

  • כאשר הפתרון האנליטי לא קיים או קשה לחישוב.
  • בעיות מינימום ומקסימום.
  • כשלב בפתרון בעיות מורכבות יותר.

שיטות פתרון:

א) שיטות תחום:

1) חציית התחום.

2) אינטרפולציה לינארית.


ב) שיטות פתוחות:

1) ניוטון-רפסון.

2) חיתוך.

3) איטרציות רצופות.


א) שיטת תחום:


1) חציית התחום:

התקדמות על גרף הפונקציה עד מציאת שינוי סימן בין  [X0,X1]. אז, בודקים את ערך הפונקציה במרכז  X2=X0+X12 והמשך צמצום המרווח פי 2 עד להגעה לפתרון הקרוב ביותר לפי הקירוב הרצוי.

  • שלבי פתרון:

1) מנחשים 2 פתרונות התחלתיים כך שסימני  f(X1),f(X2) הפוכים.

2) מבצעים איטרציות עוקבות  Xnew=x1+x22

3) אם  f(xnew)f(x1)<0 אז  X2=Xnew

אם  f(xnew)f(x1)>0 אז  X1=Xnew


תיאור גרפי:

קובץ:Numeriot (4).png
תיאור גרפי

פתרון התחלתי:  f(X1)<0,f(X2)>0

 X3=X1+X22,f(X3)<0[X3,X2]

 X4=X3+X22,f(X4)>0[X3,X4]


4) אם  f(Xnew)=0 אז  Xnew הוא הפתרון המבוקש ויש לעצור את האיטרציות.


התכנסות:

  •  ϵn הוא השגיאה בכל איטרציה  ϵ(n)<|X2(n)X1(n)|
  • בכל איטרציה תחום הפתרון קטן בחצי ולכן ניתן לרשום:  |ϵ(n+1)||ϵ(n)|12
  • מדובר בקצב התכנסות לינארי  k=12,R=1
  • ניתן לדעת מראש את מספר האיטרציות הדרוש להשגת הדיוק הנדרש:

 |ϵ(n)|(12)n|X2(0)X1(0)|<δ

כאשר:

 δ - הדיוק הנדרש מאיתנו

 |X2(0)X1(0)| - גודל התחום הראשון

n - מספר האיטרציות


נחלץ את n (מספר האיטרציות):

 n>log(|X2(0)X1(0)|)logδlog2


יתרונות השיטה:

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

חסרונות השיטה:

  • דרושים 2 פתרונות התחלתיים.
  • ההתכנסות הלינארית איטית יחסית.
  • אינו מנצל מידע על הפונקציה.


2) שיטת האינטרפולציה הלינארית

דומה לשיטת חציית התחום, השוני הוא באופן חישוב הנקודה החדשה  Xnew.

נבצע אינטרפולציה לינארית של 2 הפתרונות הנוכחיים, קירוב לינארי של f(X) וחיפוש השורש של הקירוב.

* משוואת הישר:

עבור 2 נקודות  (X1,f(X1)),(X2,f(X2)) נרצה למצוא את הישר המחבר בינהן

 f(x)=ax+b

 {f(X1)=aX1+bf(X2)=aX2+b{a=f(X1)f(X2)X1X2b=f(X2)X1f(X1)X2X1X2

 f(Xnew)=aXnew+b=0

נקודת החיתוך של ישר זה עם ציר X:

 Xnew=ba=f(X2)X1f(X1)X2f(X2)f(X1)=X1X2X1f(X2)f(X1)f(X1)


  • האלגוריתם:

1) נמצא שני פתרונות התחלתיים  X1(0),X2(0) כך ש:  f(X1(0))f(X2(0))<0

2) נחשב פתרון חדש (שהוא החיתוך עם ציר X של הישר המחבר בין 2 פתרונות התחלתיים אל:

 Xnew=X1X2X1f(X2)f(X1)f(X1)

3) נחשב את  f(Xnew)

4) עדכון הפתרון:

  • אם  f(Xnew)=0 אז  Xnew הוא הפתרון המבוקש.
  • אם  f(Xnew)f(X1(n))>0 אז  Xnew=X1(n+1),X2(n+1)=X2(n)
  • אם  f(Xnew)f(X1(n))<0 אז  X1(n+1)=X1(n),X2(n+1)=Xnew


  • תיאור גרפי:
תיאור גרפי
  • השיטה לא עובדת עבור פונקציות "שטוחות":
פונקציה שטוחה

ההפרש בין  f(Xi) יהיה קטן, יתאים לתנאי  ϵ ויגרום למציאת פתרון שגוי.


התכנסות:

  • עבור פונקציה קמורה/ קעורה ההתקדמות איטית.
  • קצב ההתכנסות דומה לזה של שיטת חציית התחום.
  • לא ניתן לקבוע מראש את מספר האיטרציות הדרוש להשגת דיוק נדרש.


ב) שיטות פתוחות

1) שיטת ניטון-רפסון:

  • נעביר משיק לפונקציה בנקודה  x0 ,  x1 תוגדר כנקודת חיתוך המשיק עם ציר x.
  • נפתח ביטוי למשיק ע"י קירוב טיילור מסדר ראשון:

 f^(x)=f(x0)+df(x0)dx(xx0) - קירוב למשיק

  • נחשב את נקודת החיתוך עם ציר x של קירוב זה:

 f(x0)+f(x0)(xx0)=0

 x=x0f(x0)f(x0)


  • האיטרציה הכללית:
 xn+1=xnf(x(n))f(x(n))


  • תיאור גרפי:
קובץ:Numeriot (2).png
תיאור גרפי



  • הפתרון עלול להתבדר כאשר הנגזרת הראשונה קרובה לאפס:
תיאור גרפי


  • התכנסות:

 ϵ(n+1)=x(n+1)x*=x(n)f(x(n))f(x(n))x*=ϵ(n)f(x(n))f(x(n))


כאשר:

 x* - הוא הפתרון האמיתי - לא ידוע.

 ϵ(n+1) - השגיאה באיטרציה n+1.

  • קצב ההתכנסות ריבועי (R=2)

 ϵ(n+1)12f(x*)f(x*)[ϵ(n)]2=O[|ϵ(n)|]2

  • הפתרון עלול לא להתכנס כאשר  f(x)0 בסביבת הפתרון.


2) שיטת החיתוך:

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

שיפוע המיתר:  f(x(n))=f(x(n))f(x(n1))x(n)x(n1)

  • נציב ביטוי זה באיטרציה הכללית של ניוטון-רפסון:

 x(n+1)=x(n)x(n)x(n1)f(x(n))f(x(n1))

   x(n+1)=x(n)x(n)x(n1)f(x(n))f(x(n1))f(x(n))
  • משתמשים בשני הפתרונות האחרונים ולא בקצוות התחום.
  • מדובר בביטוי זהה כמו בשיטת האינטרפולציה הלינארית: מחושב שיפוע המיתר במקום שיפוע המשיק.
  • תיאור גרפי:
קובץ:Numeriot (3).png
תיאור גרפי


  • בדומה לשיטת ניוטון-רפסון הפתרון עלול להתבדר:
קובץ:Numeriot (6).png
תיאור גרפי



  • התכנסות: נפתח ביטוי לשגיאה עבור האיטרציה ה- n+1 (בדומה לשיטת ניוטון-רפסון):  ϵ(n+1)=x(n+1)x*

כאשר:

 x* - הפתרון האמיתי והלא ידוע.

 ϵ(n+1) - הגדרת השגיאה.


  • קצב ההתכנסות:

 ϵ(n+1)(12f(x*)f(x*))0.618[ϵ[n]]1.618=O[|ϵ(n)|1.618]

  • R > 1 : מדובר בהתכנסות סופר-לינארית.
  • אם  1>>|f(xn)f(xn1)| אז השיטה קורסת.


3) שיטת האיטרציות הרצופות - משמשת לבעיות מסובכות במיוחד.

  • נגדיר פונקציה חדשה  x=g(x) שתהיה טרנספורמציה לבעיה הנתונה  f(x)=0.
  • ניתן לבצע את הטרנספורמציה בדרכים רבות:

 f(x)=x3+x=0

 g(x)=x3+x+x=x

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

 x(n+1)=g(x(n))

  • תיאור גרפי:
קובץ:Numeriot (8).png
תיאור גרפי



  • שלבי הפתרון:

1) נמצא פתרון התחלתי  x(0)

2) עדכון הפתרון:  x(n+1)=g(x(n))

  • ההתכנסות של השיטה לינארית רק כאשר  |g(x*)|<1 - תנאי להתכנסות
  •  ϵ(n+1)=x(n+1)x*=g(x(n))x* - השגיאה באיטרציה ה- n+1