Проблема с методом Ньютона

У меня проблема с методом Ньютона (тангенс) в Matlab.

Я написал программу, которая:

  1. Отображает график заданной функции f, связанной с нелинейным уравнением, решения которого мне нужно определить (таким образом, я позволяю пользователю определить первое приближение с помощью графика, выбрав точку на [осях Ox, ближайшую к решению -> до пересечения f с [Бык)
  2. Определяет решение уравнения, соответствующее первому приближению.

    Но, все же этого недостаточно.

    Можно ли сделать такую ​​проверку первого приближения, вводимую пользователем, чтобы она не допускала блокирования метода Ньютона (это означает, что в окрестности выбранного первого приближения нет точки локального минимума)? Таким образом, когда что-то подобное происходит, пользователь будет знать, что точка выбрана неправильно, потому что к графику функции f есть две касательные, поэтому программа ничего не даст, а заблокирует.

    Можете ли вы, пожалуйста, предложить мне что-нибудь?


person Ivan Gandacov    schedule 09.05.2015    source источник


Ответы (1)


Если я правильно понимаю, вы используете метод Ньютона, формула которого:

введите здесь описание изображения

Насколько я помню, для сходимости метода Ньютона (помимо требований непрерывности) должны выполняться два условия:

1) Производная функции не должна быть равна нулю ни на одном из этапов. Таким образом, вы можете вставить в свой код что-то вроде:

if dfdx < 1e-4
disp('Bad starting point')
break;
end

2) Знак производной не должен менять свой знак при итерациях. Итак, вставка чего-то вроде:

derivative = temp; %save the value of old derivative in variable

%code that counts derivative for new iteration

if sign(derivative)~=sign(temp)
disp('Bad starting point')
break;
end

Если вы хотите добавить что-то более сложное, вы можете добавить проверку условий квадратичной сходимости. Метод подробно описан здесь или в Википедии.

Удачи

person brainkz    schedule 09.05.2015