Применение метода Ньютона для нахождения кратного корня.

Метод Ньютона для случая кратного корня обладает лишь линейной скоростью сходимости. Чтобы сохранить квадратичную сходимость его модифицируют следующим образом:

, где - кратность корня.

Как правило, значение v неизвестно. Используя метод Ньютона, можно узнать кратность корня. Для этого будем задавать значения = 1, 2, 3 и вычислять значение корня с заданной точностью, одновременно подсчитывая количество итераций для каждого значения . При некотором значении число итераций будет минимальным. Это значение и есть кратность корня.

Пример 7. Определение кратности корня методом Ньютона.

 

function ex3

% Определить кратность корня f(x), где f(x)= (tan(x)^2 -1)^2 методом Ньютона

% Введём функцию f(x)

syms x;

f = (tan(x)^2 -1)^2;

[root1, iter1] = newton(f, 0.5, 1);

[root2, iter2] = newton(f, 0.5, 2);

[root3, iter3] = newton(f, 0.5, 3);

% То m, где меньше итераций - кратность корня

iter1

iter2

iter3

% Меньше всего итераций при m = 2, значит кратность корня - 2

% Метод Ньютона

function [root, iter] = newton(f, x0, m)

df = diff(f);

root = x0 - subs(f, x0) / subs(df, x0);

old_root = x0;

iter = 0;

while abs(subs(f, old_root)) > 10 * eps

t = old_root;

old_root = root;

root = t - m*subs(f, t) / subs(df, t);

iter = iter + 1;

if iter > 200

warning('Max number of iterations reached');

root = NaN;

return;

end

end

>>

iter1 = 45

iter2 = 7

iter3 = 45