Поскольку один из моих ответов был процитирован, я попытаюсь уточнить, почему я предложил использовать IPOPT вместо MINPACK.
Мои возражения против использования MINPACK не имеют ничего общего с алгоритмами, которые использует MINPACK, и не имеют ничего общего с их реализацией. Мое основное возражение заключается в том, что программное обеспечение датируется 1980 годом, а последнее обновление было в 1999 году. Хорхе Море на пенсии; Я сомневаюсь, что он или любой другой автор программного обеспечения больше следят за ним, и нет команды людей, активно поддерживающих его. Единственная документация, которую я могу найти по программному обеспечению, - это оригинальный технический отчет Argonne 1980 года, написанный Хорхе Море и другими авторами MINPACK. (Главы 1-3 можно найти здесь , а главу 4 можно найти здесь.) После поиска в исходном коде MINPACK и просмотра документации (PDF-файлы являются отсканированными изображениями и не могут быть найдены), я не вижу никаких вариантов, чтобы приспособиться к ограничениям. Поскольку первоначальный плакат о нелинейной проблеме наименьших квадратов хотел решить ограниченную нелинейную проблему наименьших квадратов, MINPACK даже не решит эту проблему.
Если вы посмотрите на список рассылки IPOPT, некоторые пользователи отметят, что производительность пакета для задач нелинейного наименьших квадратов (NLS) смешана по сравнению с алгоритмами Левенберга-Марквардта и более специализированными алгоритмами NLS (см. Здесь , здесь и здесь ). Производительность IPOPT относительно алгоритмов NLS, конечно, зависит от проблемы. Учитывая эту обратную связь с пользователем, IPOPT представляется разумной рекомендацией относительно алгоритмов NLS.
Тем не менее, вы делаете хорошее замечание, что алгоритмы NLS должны быть исследованы. Я согласен. Я просто считаю, что следует использовать пакет, более современный, чем MINPACK, потому что я считаю, что он будет работать лучше, будет более удобным и поддерживаться. Ceres кажется интересным кандидатом, но сейчас он не может справиться с ограниченными проблемами. ТАОбудет работать над задачами наименьших квадратов с ограничением по квадратам, хотя он не реализует классический Левенберг-Марквардт, но вместо этого реализует алгоритм без производных. Алгоритм без производных, вероятно, будет хорошо работать для крупномасштабных задач, но я не буду использовать его для мелкомасштабных задач. Я не мог найти никаких других пакетов, которые внушали бы большую уверенность в их разработке программного обеспечения. Например, GALAHAD, похоже, не использует контроль версий или какое-либо автоматическое тестирование, на первый взгляд. МИНПАК, похоже, тоже этого не делает. Если у вас есть опыт работы с MINPACK или рекомендации относительно лучшего программного обеспечения, я весь в ушах.
Имея все это в виду, возвращаясь к цитате моего комментария:
Любая система уравнений эквивалентна задаче оптимизации, поэтому методы оптимизации, основанные на Ньютоне, очень похожи на методы, основанные на Ньютоне, для решения систем нелинейных уравнений.
Лучший комментарий, вероятно, что-то вроде:
nng(x)=0
Это утверждение верно даже для решения систем уравнений при ограничениях. Я не знаю ни одного алгоритма, который считается "решателем уравнений" для случая, когда существуют ограничения на переменные. Обычный подход, о котором я знаю, возможно, из-за нескольких семестров курсов по оптимизации и исследований в лаборатории по оптимизации, заключается во включении ограничений на систему уравнений в формулировку оптимизации. Если бы вы попытались использовать ограничения в схеме, подобной Ньютону-Рафсону, для решения уравнений, вы, вероятно, в конечном итоге получили бы метод прогнозируемого градиента или прогнозируемой области доверия, очень похожий на методы, используемые в ограниченной оптимизации.