שיטת ניוטון למערכת משוואות לא לינאריות

נביט במערכת של משוואות לא לינאריות ב- נעלמים:

כאשר:

בכתיב אינקדסי:

זוהי הכללה של המקרה:

דוגמה:

יהיו ו- שתי פונקציות המקיימות:

המשוואה מתארת פרבולה, והמשוואה מתארת עיגול:
book
ישנם שורשים למערכת המשוואות:

שורשים אלה הם נקודות החיתוך ו-

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

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

הבעיה היא ששיטת ניוטון המוכללת תעבוד לנו עבור מאוד קרוב ל-.

טור טיילור לפונקציות וקטוריות

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

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

משפט:

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

כאשר הוא היעקוביאן של :

לכן, נקבל בכתיב אינדקסי:

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

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

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

פיתוח שיטת ניוטון

נחזור למערכת משוואות לא לינאריות:$$
\bar{f}(\bar{x})=\bar{0}

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

\bar{0}=\bar{f}(\bar{x}{k}+\bar{p}^{*})\approx \bar{f}(\bar{x}{k})+J(\bar{x}_{x})\bar{p}^{*}

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

\bar{f}(\bar{x}{k})+J(\bar{x}{k})\bar{p}_{k}=\bar{0}

You can't use 'macro parameter character #' in math mode לפיכך, נקבל את האלגוריתם הבא: ### #אלגוריתם: שיטת ניוטון למערכת משוואות לא לינאריות עבור $k=0,1,\dots$ עד שנגיע להתכנסות: - נפתור $J(\bar{x}_{k})\bar{p}_{k}=-\bar{f}(\bar{x}_{k})$ כדי למצוא את $\bar{p}_{k}$. - נציב $\bar{x}_{k+1}=\bar{x}_{k}+\bar{p}_{k}$. ב-`MATLAB`: ```matlab % function [x,k] = newtons(f,x,tol,nmax) % % This function returns in x a column vector x_k such that % || x_k - x_{k-1} || < tol (1 + ||x_k||) % and in k the number of iterations (Jacobian evaluations) required. % On entry, x contains an initial guess. % If k equals nmax then no convergence has been reached. % % The iterates ||f(x_k)|| are recorded. This option % can be easily turned off function [x,k] = newtons(f,x,tol,nmax) %Initialize x = x(:); % ensure x is a column vector fprintf ('k ||f(x_k)|| \n') format long g %Newton for k=1:nmax [fx,Jx] = feval(f,x); fprintf ('%d %e \n',k-1,norm(fx) ) p = -Jx \ fx; x = x + p; if norm(p) < tol*(1+norm(x)) fx = feval(f,x); fprintf ('%d %e \n',k,norm(fx) ) return end end k = nmax; end ```