Como se ha citado una de mis respuestas, intentaré aclarar por qué sugerí usar IPOPT en lugar de MINPACK.
Mis objeciones al uso de MINPACK no tienen nada que ver con los algoritmos que MINPACK usa y todo que ver con su implementación. Mi principal objeción es que el software se remonta a 1980 y se actualizó por última vez en 1999. Jorge Moré está retirado; Dudo que él o cualquiera de los otros autores del software lo controlen más, y no hay un equipo de personas que lo respalde activamente. La única documentación que puedo encontrar en el software es el informe técnico original de 1980 de Argonne escrito por Jorge Moré y los otros autores del MINPACK. (Los capítulos 1-3 se pueden encontrar aquí , y el Capítulo 4 se puede encontrar aquí.) Después de buscar el código fuente del MINPACK y examinar la documentación (los archivos PDF son imágenes escaneadas y no se pueden buscar), no veo ninguna opción para acomodar las restricciones. Dado que el póster original del problema de mínimos cuadrados no lineales quería resolver un problema de mínimos cuadrados no lineales restringidos, MINPACK ni siquiera resolverá ese problema.
Si observa la lista de correo IPOPT, algunos usuarios indican que el rendimiento del paquete en problemas de mínimos cuadrados no lineales (NLS) es mixto en relación con los algoritmos de Levenberg-Marquardt y los algoritmos de NLS más especializados (consulte aquí , aquí y aquí ). El rendimiento de IPOPT en relación con los algoritmos NLS depende, por supuesto, del problema. Teniendo en cuenta los comentarios de los usuarios, IPOPT parece una recomendación razonable en relación con los algoritmos NLS.
Sin embargo, hace un buen punto de que los algoritmos NLS deben investigarse. Estoy de acuerdo. Simplemente creo que debería usarse un paquete más moderno que MINPACK porque creo que funcionará mejor, será más útil y será compatible. Ceres parece un paquete candidato interesante, pero no puede manejar problemas restringidos en este momento. TAOfuncionaría en problemas de mínimos cuadrados con restricciones de caja, aunque no implementa el clásico Levenberg-Marquardt, sino que implementa un algoritmo sin derivadas. Un algoritmo sin derivadas probablemente funcionaría bien para problemas a gran escala, pero no lo usaría para problemas a pequeña escala. No pude encontrar ningún otro paquete que inspirara mucha confianza en su ingeniería de software. Por ejemplo, GALAHAD no parece utilizar el control de versiones o ninguna prueba automatizada, a primera vista. MINPACK tampoco parece hacer esas cosas. Si tiene experiencia con MINPACK o recomendaciones con respecto a un mejor software, soy todo oídos.
Con todo eso en mente, volviendo a la cita de mi comentario:
Cualquier sistema de ecuaciones es equivalente a un problema de optimización, por lo que los métodos de optimización basados en Newton se parecen mucho a los métodos basados en Newton para resolver sistemas de ecuaciones no lineales.
Un mejor comentario es probablemente algo en el sentido de:
nng(x)=0
Esta afirmación es válida incluso para resolver sistemas de ecuaciones bajo restricciones. No conozco ningún algoritmo que se considere "solucionador de ecuaciones" para el caso donde hay restricciones en las variables. El enfoque común que conozco, tal vez con ictericia por varios semestres de cursos de optimización e investigación en un laboratorio de optimización, es incorporar las restricciones sobre el sistema de ecuaciones en una formulación de optimización. Si intentara usar las restricciones en un esquema similar a Newton-Raphson para la resolución de ecuaciones, probablemente terminaría con un gradiente proyectado o un método proyectado de región de confianza, muy similar a los métodos utilizados en la optimización restringida.