שיטת המיתר
באנליזה נומרית, שיטת המיתר היא שיטה איטרטיבית למציאת שורשים של פונקציה רציפה של משתנה אחד.
שיטה זו דומה לשיטת ניוטון-רפסון למציאת שורשים. בשיטת ניוטון-רפסון יש צורך בנגזרת הפונקציה בנקודה האחרונה. שיטת המיתר מקרבת את הנגזרת על ידי שיפוע המיתר המחבר את שתי הנקודות האחרונות שחושבו, ומכאן שמה. סדר ההתכנסות של השיטה נמוך יותר מזה של שיטת ניוטון-רפסון: בשיטת ניוטון-רפסון הסדר הוא 2, ואילו בשיטת המיתר, הסדר הוא 1.618 לערך. יתרונה בכך שהיא אינה משתמש בנגזרת: אם הנגזרת אינה ידועה, או שחישובה גוזל משאבי חישוב רבים, שיטת המיתר מתכנסת מהר יותר.
תוכן עניינים |
[עריכה] השיטה
בשיטת המיתר דרושים שני ערכים התחלתיים,
ו-
, שאמורים להיות קרובים לשורש המבוקש. בהמשך מוגדרת סדרה של נקודות

ובמקרים מסוימים אפשר להבטיח שהסדרה מתכנסת לשורש של הפונקציה
.
[עריכה] תאור גרפי
בהינתן שתי נקודות על הישר,
ו-
, אנו בונים את הישר העובר דרך הנקודות
ו-
, כפי שניתן לראות בתמונה משמאל. נשים לב כי הקו הוא מיתר של הגרף של הפונקציה
. משוואת הישר היא:

נבחר את
, הערך הבא באיטרציה, להיות השורש של קו זה, כלומר נקודת החיתוך שלו עם הישר
:

פתרון משוואה זו נותן את היחס האיטרטיבי המגדיר את שיטת המיתר.
[עריכה] התכנסות
השיטה לא תמיד מתכנסת, אך אם הפונקציה
רציפה וגזירה, הערכים ההתחלתיים
ו-
קרובים מספיק לשורש, והשורש הינו שורש פשוט (כלומר נגזרתה של
לא מתאפסת באותה נקודה), אזי ניתן להראות כי השיטה מתכנסת לשורש של הפונקציה
. סדר ההתכנסות הוא יחס הזהב
, כאשר
.
[עריכה] קוד דוגמה
להלן קוד בשפת C אשר מיישם את שיטת המיתר. הקוד נכתב בדגש על בהירות ולא על יעילות. הבעיה: למצוא את המספר החיובי
המקיים
. הבעיה מומרת לבעית מציאת שורש של הפונקציה
.
בקוד הרשום מטה, שיטת המיתר ממשיכה כל עוד מתקיימים שני התנאים הבאים:
כאשר
הוא קבוע (השגיאה המקסימלית המותרת),
הוא מספר האיטרציה ו-
הוא חסם על מספר האיטרציות.
#include <stdio.h>
#include <math.h>
double f(double x)
{
return cos(x) - x*x*x;
}
double SecantMethod(double xn_1, double xn, double e, int m)
{
int n;
double d;
for (n = 1; n <= m; n++)
{
d = (xn - xn_1) / (f(xn) - f(xn_1)) * f(xn);
if (fabs(d) < e)
return xn;
xn_1 = xn;
xn = xn - d;
}
return xn;
}
int main(void)
{
printf("%0.15f\n", SecantMethod(0, 1, 5E-11, 100));
return 0;
}
אחרי הרצה של הקוד התוצאה הסופית תהיה 0.865474033101614. הערכים המתקבלים הם:
הגרף הבא מראה את הפונקציה
באדום וקו המיתר האחרון בכחול. בגרף ניתן לראות שנקודת החיתוך של המיתר עם ציר ה-
קרובה מאוד לשורש של
.













