Здравствуйте! Я реализовал аппроксимацию методом Левенберга-Марквардта, но алгоритм работает не так, как хотелось бы.
(Оффтоп)
Коротко о проблеме. Есть начальные параметры

, к которым в каждой итерации прибавляется

, чем и подбирается их истинное значение.

Если "неправильно" выбрать начальные параметры

или начальное значение

, тогда алгоритм изменяет параметры в неверном направлении, что приводит к абсолютно неверному ответу.
Получается, алгоритм либо выдает точное и правильное решение, либо полную чушь. Пытаюсь понять почему так происходит, сразу возникают вопросы:
- Непонятно, насколько близко к истинному значению надо задавать стартовые значения параметров
? - Величина
, насколько я понимаю, должна меняться в каждой итерации. Она должна быть обратно пропорциональна скорости изменения ошибки. Но по какому конкретно закону ее следует менять я не понимаю. Сейчас у меня
(полагаю знаменатель есть модуль скорости изменения суммы квадратов отклонений). - В выражении первом выражении матрица
должна быть квадратной, в которой все ячейки нулевые, кроме главной диагонали (тут значения берутся из
). Я правильно понял?
Или могут быть какие-то другие причины? Подскажите, как можно решить данную проблему?