="justify"> j (X) - функція n-мірного аргументу. Розкладемо її в ряд Тейлора, відкинувши малі вищого порядку
j (Xk) + j Вў (Xk) (X - Xk)., звідки Xk +1 = Xk - j (Xk)/ j Вў (Xk).
Тепер рахуємо j (X) градієнтом f (X), тобто j = f Вў . Прирівнюючи f Вў = 0, знаходимо стаціонарні точки f (X). Формула для обчислення координат цих точок перетвориться до виду:
Xk +1 = Xk - f Вў (Xk)/f Вў Вў (Xk).
Недоліки методу Ньютона полягають в тому, що на кожному кроці необхідно обчислювати f Вў Вў , і вона повинна бути позитивно визначена, інакше процес може розходиться.
Метод досить ефективний, але його краще застосовувати, коли до X0 підійшли досить близько, причому в районі X0 функція сильно опукла.
Лістинг програми за методами 1го та 2го порядків
В
f (x: real): real;
// result: = sin (x);: = (x-3) * (x-3) * (x-3) * (x-3);; df (x: real): real;
// result: = cos (x);: = 4 * (x-3) * (x-3) * (x-3);; ddf (x: real): real;
// result: =-sin (x);: = 12 * (x-3) * (x-3);; TForm1.Button1Click (Sender:
Memo1.Text: = 'Пошук з використанням f'' (x)' # 13 # 10 # 13 # 10;
i: = 0;: = xk1;: = xk-h * df (xk); df (xk) * df (xk1)> 0 then h: = h * 2; f (xk) = abs (f (xk1)));. Lines. Add (Format ('X (% d) =% 4.4ff (% 1:4.4 f) =% 2:4.4 f f'' (% 1:4.4 f) =% 3:4.4 fh =% 4:4.4 f' , [i, xk, f (xk), df (xk), h])); (i); (abs (xk1-xk) Memo1.Text: = 'Пошук з використанням f'' (x)' # 13 # 10 # 13 # 10;
i: = 0;: = xk1;: = xk-h * df (xk)/ddf (xk); df (xk) * df (xk1)> 0 then h: = h * 2; f ( xk) = f (xk1));. Lines.Add (Format ('X (% d) =% 4.4ff (% 1:4.4 f) =% 2:4.4 f f'' (% 1:4.4 f) =% 3:4.4 fh =% 4:4.4 f', [i, xk, f (xk), df (xk), h])); (i); (abs (xk1-xk)