Бодигрим писал(а):
а Вы попробуйте выписать практически универсальное условие, а потом ехидничайте
Нам на парах давали что-то в духе
.
. . . . . . . . . . . . . . . . .
[quote="Alcohol_frei
сообщении #143262"]Сравниваем предыдущее и полученное значение, учитывая погрешность.
Проверять
недостаточно для хорошего результата алгоритма. Дело в том, что если у вас на некотором шаге перемещение было малым, на следующем оно может быть снова очень и очень большим. ИМХО лучше делать, как я писал выше.[/quote]
Так Ваш вышний рецепт как раз именно от этой-то проблемы и не спасает ( не говоря уж о том, что и выглядит странно -- совсем разного типа величины почему-то сравниваются с одной и той же; впрочем, это, видимо, из-за "что-то в духе").
Фактически достаточно отслеживать только
, но -- обязательно беря максимум по некоторой группе последних приближений. Например, по
последним, где
-- размерность задачи (после каждых
шагов условия сходимости более-менее повторяются).
Но и это ещё не всё. Метод градиентного сходится спуска (усреднённо) со скоростью геометрической прогрессии, т.е. усреднённые разности соседних приближений убывают примерно как
. Беда в том, что
запросто может оказаться очень близкой к единице (величина
оценивается через отношение минимального и максимального собственных чисел матрицы вторых производных в окрестности экстремума). Поэтому сравнивать надо не просто с
, а с
, т.е. с некоторым запасом. Причём на практике величина
тоже неизвестна, и её нужно оценивать по мере вычислений через усреднённые отношения усреднённых же приращений.