Лично я такие же задачи, которые возникают при обработке результатов физического эксперимента, решаю в матлабе с помощью функции
fminsearch. Просто задаю функцию модели. Задаю функцию МНК. И оптимизирую её по параметрам модели. Единственная проблема: угадать начальное приближение для этих параметров (хотя, в зависимости от модели этой проблемы может и не быть).
Считается просто шикарно. Алгоритм, использованный в функции
fminsearch вполне известный:
метод Нелдера-Мида. Он гарантированно находит локальный минимум и достаточно быстро даже на плохих функциях. Кроме того, он очень прост для самостоятельной реализации (и я это сам проверял). Кстати, некоторые параметры модели, по которым модель линейна (например, постоянное смешение, амплитудный множитель каждого из слагаемых модели) не обязательно оптимизировать, их можно посчитать по формуле линеаризированного МНК аналитически, а оптимизацию вести по тем параметрам, по которым модель нелинейна. Это немного усложняет реализацию, но очень сильно увеличивает быстродействие.
И ещё. В численных методах первоочерденая задача -- поиск минимума. Решать диффуры, находить нули системы уравнений лучше делать через неё, а не на оборот.
А вообще для именно такой функции не лучше ли было оценить...
Кстати, это очень хороший метод получить
оценки параметров модели и использовать их в качестве начального приближения для дальнейшей оптимизации. Однако, непосредственно их нельзя считать окончательным результатом, так как из-за выполненных нелинейных преобразований они не будут удовлетворять тем трём требованиям (что-то там про несмещённость, адекватность и так делее -- не помню точно), что накладывает теорвер на оценки параметров модели. Честно посчитать МНК всегда лучше, особенно, если случайные погрешности в данных имеют Гауссово распределение и не имеют систематической погрешности.