Poiché una delle mie risposte è stata citata, cercherò di chiarire perché ho suggerito di utilizzare IPOPT invece di MINPACK.
Le mie obiezioni all'utilizzo di MINPACK non hanno nulla a che fare con gli algoritmi utilizzati da MINPACK e tutto ciò che riguarda la loro implementazione. La mia obiezione principale è che il software risale al 1980 ed è stato aggiornato l'ultima volta nel 1999. Jorge Moré è in pensione; Dubito che lui o uno qualsiasi degli altri autori del software lo tengano più sotto controllo, e non ci sono team di persone che lo supportano attivamente. L'unica documentazione che posso trovare sul software è l'originale rapporto tecnico Argonne del 1980, scritto da Jorge Moré e dagli altri autori di MINPACK. (I capitoli 1-3 possono essere trovati qui e il Capitolo 4 può essere trovato qui.) Dopo aver cercato il codice sorgente MINPACK e aver consultato la documentazione (i PDF sono immagini scansionate e non possono essere cercate), non vedo alcuna opzione per soddisfare i vincoli. Poiché il poster originale del problema dei minimi quadrati non lineari voleva risolvere un problema dei minimi quadrati non lineare vincolato, MINPACK non risolverà nemmeno quel problema.
Se osservi la mailing list IPOPT, alcuni utenti indicano che le prestazioni del pacchetto sui problemi NLS (nonline linear squares) sono miste rispetto agli algoritmi Levenberg-Marquardt e agli algoritmi NLS più specializzati (vedi qui , qui e qui ). Le prestazioni di IPOPT rispetto agli algoritmi NLS dipendono ovviamente dal problema. Dato il feedback degli utenti, IPOPT sembra una ragionevole raccomandazione relativa agli algoritmi NLS.
Tuttavia, è opportuno sottolineare che gli algoritmi NLS dovrebbero essere studiati. Sono d'accordo. Penso solo che dovrebbe essere usato un pacchetto più moderno di MINPACK perché credo che funzionerà meglio, sarà più utilizzabile e sarà supportato. Cerere sembra un pacchetto candidato interessante, ma al momento non è in grado di gestire problemi vincolati. TAOfunzionerebbe su problemi di minimi quadrati vincolati da box, sebbene non implementasse il classico Levenberg-Marquardt, ma implementasse invece un algoritmo privo di derivati. Un algoritmo senza derivati probabilmente funzionerebbe bene per problemi su larga scala, ma non lo userei per problemi su piccola scala. Non sono riuscito a trovare altri pacchetti che abbiano ispirato molta fiducia nella loro ingegneria del software. Ad esempio, GALAHAD non sembra usare il controllo della versione o alcun test automatizzato, a prima vista. Anche MINPACK non sembra fare queste cose. Se hai esperienza con MINPACK o consigli su un software migliore, sono tutto a posto.
Con tutto ciò in mente, tornando alla citazione del mio commento:
Qualsiasi sistema di equazioni equivale a un problema di ottimizzazione, motivo per cui i metodi di ottimizzazione basati su Newton assomigliano molto ai metodi basati su Newton per risolvere i sistemi di equazioni non lineari.
Un commento migliore è probabilmente qualcosa all'effetto di:
nng(x)=0
Questa affermazione vale anche per la risoluzione di sistemi di equazioni sotto vincoli. Non conosco alcun algoritmo considerato "risolutore di equazioni" nel caso in cui vi siano vincoli sulle variabili. L'approccio comune che conosco, forse itterizzato da diversi semestri di corsi di ottimizzazione e ricerca in un laboratorio di ottimizzazione, è quello di incorporare i vincoli sul sistema di equazioni in una formulazione di ottimizzazione. Se dovessi provare a usare i vincoli in uno schema simile a Newton-Raphson per la risoluzione delle equazioni, probabilmente finiresti con un gradiente proiettato o un metodo di regione di fiducia proiettato, molto simile ai metodi usati nell'ottimizzazione vincolata.