Regresia unei curbe cu un model de vârf asimetric, utilizând algoritmul Gauss-Newton cu un factor de amortizare
{\ displaystyle \ alpha} variabil.
Deasupra: date brute și curbă model.
Mai jos: evoluția sumei normalizate a pătratelor reziduurilor.
Algoritmul Gauss-Newton este o metodă iterativă pentru rezolvarea problemelor celor mai mici pătrate și a regresiilor neliniare . Este o versiune modificată a metodei Newton pentru găsirea unui minim de funcție . Spre deosebire de acesta din urmă, algoritmul Gauss - Newton poate fi utilizat doar pentru a minimiza o sumă de funcții pătrate, dar are avantajul că nu sunt necesare derivate secundare, adesea dificil de calculat.
Problemele celor mai mici pătrate neliniare apar, de exemplu, în regresia neliniară , unde parametrii sunt căutați astfel încât modelul să fie în acord cu observațiile disponibile.
Numele metodei provine de la matematicienii Carl Friedrich Gauss și Isaac Newton .
Descriere
La tine acasa {\ displaystyle m} funcții {\ displaystyle {\ boldsymbol {r}} = (r_ {1}, \ ldots, r_ {m})} (deseori numite reziduuri) de {\ displaystyle n} variabile {\ displaystyle {\ boldsymbol {\ beta}} = (\ beta _ {1}, \ ldots, \ beta _ {n})} , cu {\ displaystyle m \ geq n} , algoritmul Gauss - Newton găsește iterativ valorile variabilelor pentru a minimiza următoarea sumă de pătrate: [1]
- {\ displaystyle S ({\ boldsymbol {\ beta}}) = \ sum _ {i = 1} ^ {m} r_ {i} ^ {2} ({\ boldsymbol {\ beta}}).}
Incepand cu {\ displaystyle {\ boldsymbol {\ beta}} ^ {(0)}} ca estimare inițială pentru minim, metoda funcționează iterativ
- {\ displaystyle {\ boldsymbol {\ beta}} ^ {(s + 1)} = {\ boldsymbol {\ beta}} ^ {(s)} - \ left (\ mathbf {J_ {r}} ^ {\ mathsf {T}} \ mathbf {J_ {r}} \ right) ^ {- 1} \ mathbf {J_ {r}} ^ {\ mathsf {T}} \ mathbf {r} ({\ boldsymbol {\ beta}} ^ {(s)}),}
unde, dacă {\ displaystyle {\ boldsymbol {r}}} Și {\ displaystyle {\ boldsymbol {\ beta}}} sunt vectori de coloană, elementele matricei iacobiene sunt
- {\ displaystyle (\ mathbf {J_ {r}}) _ {ij} = {\ frac {\ partial r_ {i} ({\ boldsymbol {\ beta}} ^ {(s)})} {\ partial \ beta _ {j}}},}
și simbolul {\ displaystyle ^ {\ mathsf {T}}} indică matricea transpusă .
De sine {\ displaystyle m = n} , iterația simplifică și devine
- {\ displaystyle {\ boldsymbol {\ beta}} ^ {(s + 1)} = {\ boldsymbol {\ beta}} ^ {(s)} - \ left (\ mathbf {J_ {r}} \ right) ^ {-1} \ mathbf {r} ({\ boldsymbol {\ beta}} ^ {(s)}),}
care este o generalizare directă multidimensională a metodei tangentei .
În regresia datelor, unde scopul este de a găsi valorile parametrilor {\ displaystyle {\ boldsymbol {\ beta}}} astfel încât o anumită funcție de model {\ displaystyle y = f (x, {\ boldsymbol {\ beta}})} este pe cât posibil în conformitate cu seria de puncte{\ displaystyle (x_ {i}, y_ {i})} , funcții {\ displaystyle r_ {i}} sunt reziduurile:
- {\ displaystyle r_ {i} ({\ boldsymbol {\ beta}}) = y_ {i} -f (x_ {i}, {\ boldsymbol {\ beta}}).}
Apoi, metoda Gauss - Newton poate fi exprimată în termeni de Jacobian {\ displaystyle {\ boldsymbol {J}} _ {f}} a funcției {\ displaystyle f} ca
- {\ displaystyle {\ boldsymbol {\ beta}} ^ {(s + 1)} = {\ boldsymbol {\ beta}} ^ {(s)} + \ left (\ mathbf {J_ {f}} ^ {\ mathsf {T}} \ mathbf {J_ {f}} \ right) ^ {- 1} \ mathbf {J_ {f}} ^ {\ mathsf {T}} \ mathbf {r} ({\ boldsymbol {\ beta}} ^ {(s)}).}
Rețineți că {\ displaystyle \ left (\ mathbf {J_ {f}} ^ {\ mathsf {T}} \ mathbf {J_ {f}} \ right) ^ {- 1} \ mathbf {J_ {f}} ^ {\ mathsf {T}}} este pseudo-inversul lui {\ displaystyle \ mathbf {J_ {f}}} . În algoritm, presupunerea {\ displaystyle m \ geq n} este necesar, altfel matricea {\ displaystyle \ mathbf {J_ {r}} ^ {\ mathsf {T}} \ mathbf {J_ {r}}} nu este inversabilă și ecuațiile nu pot fi rezolvate (cel puțin într-un mod unic).
Algoritmul Gauss - Newton este obținut din aproximarea liniară a vectorului funcțiilor {\ displaystyle r_ {i}} folosind teorema lui Taylor . De fapt, la fiecare iterație obținem:
- {\ displaystyle \ mathbf {r} ({\ boldsymbol {\ beta}}) \ approx \ mathbf {r} ({\ boldsymbol {\ beta}} ^ {(s)}) + \ mathbf {J_ {r}} ({\ boldsymbol {\ beta}} ^ {(s)}) \ Delta}
cu {\ displaystyle \ Delta = {\ boldsymbol {\ beta}} - {\ boldsymbol {\ beta}} ^ {(s)}} . A găsi {\ displaystyle \ Delta} care minimizează suma pătratelor din partea dreaptă, adică
- {\ displaystyle \ min \ left \ | \ mathbf {r} ({\ boldsymbol {\ beta}} ^ {(s)}) + \ mathbf {J_ {r}} ({\ boldsymbol {\ beta}} ^ { (s)}) \ Delta \ right \ | _ {2} ^ {2},}
este o problemă liniară cu cele mai mici pătrate, care este rezolvată explicit.
Ecuațiile normale sunt {\ displaystyle n} ecuații liniare simultane în increment {\ displaystyle \ Delta} incognito. Ele pot fi rezolvate într-un singur pas, folosind descompunerea Cholesky sau, chiar mai bine, factorizarea QR a {\ displaystyle \ mathbf {J_ {r}}} . Pentru sistemele mari, o metodă iterativă , cum ar fi cea a gradientului conjugat , poate fi mai eficientă. Dacă există o dependență liniară între coloanele din {\ displaystyle \ mathbf {J_ {r}}} , iterațiile vor eșua din cauza singularității lui {\ displaystyle \ mathbf {J_ {r}} ^ {\ mathsf {T}} \ mathbf {J_ {r}}} .
Exemplu
Cea mai bună curbă de potrivire obținută (în albastru), cu
{\ displaystyle {\ hat {\ beta}} _ {1} = 0,362} și
{\ displaystyle {\ hat {\ beta}} _ {2} = 0,556} , împreună cu datele observate (în roșu).
În acest exemplu, algoritmul Gauss - Newton este utilizat pentru regresia vitezei {\ displaystyle V} formarea produsului într-o reacție catalizată de enzime în raport cu concentrația substratului {\ displaystyle [S]} , conform modelului Michaelis-Menten . Datele măsurate sunt prezentate în tabelul următor. Incertitudinile fiecărei măsuri au fost stabilite egale cu 1.
{\ displaystyle i} | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|
{\ displaystyle [S]} | 0,038 | 0,194 | 0,425 | 0,626 | 1.253 | 2.500 | 3.740 |
---|
V. | 0,050 | 0,127 | 0,094 | 0,2122 | 0,2729 | 0,2665 | 0,3317 |
---|
Funcția model este de formă
- {\ displaystyle V = {\ frac {V _ {\ text {max}} [S]} {K_ {M} + [S]}}}
cu parametri {\ displaystyle V _ {\ text {max}}} Și {\ displaystyle K_ {M}} să fie determinată prin algoritm.
Lasa-i sa fie {\ displaystyle x_ {i}} Și {\ displaystyle y_ {i}} valorile de {\ displaystyle [S]} Și {\ displaystyle V} respectiv în tabel, cu {\ displaystyle i = 1, \ dots, 7} . Lasa-i sa fie {\ displaystyle \ beta _ {1} = V _ {\ text {max}}} Și {\ displaystyle \ beta _ {2} = K_ {M}} . Se vor găsi reciproc {\ displaystyle \ beta _ {1}} Și {\ displaystyle \ beta _ {2}} astfel încât suma pătratelor reziduurilor
- {\ displaystyle r_ {i} = y_ {i} - {\ frac {\ beta _ {1} x_ {i}} {\ beta _ {2} + x_ {i}}} \ quad (i = 1, \ puncte, 7)}
este minim.
Jacobianul {\ displaystyle \ mathbf {J_ {r}}} a vectorului rezidual {\ displaystyle r_ {i}} cu privire la necunoscute {\ displaystyle \ beta _ {j}} este o matrice {\ displaystyle 7 \ times 2} în care în {\ displaystyle i} se găsește a treia linie
- {\ displaystyle {\ frac {\ partial r_ {i}} {\ partial \ beta _ {1}}} = - {\ frac {x_ {i}} {\ beta _ {2} + x_ {i}}} ; {\ frac {\ partial r_ {i}} {\ partial \ beta _ {2}}} = {\ frac {\ beta _ {1} x_ {i}} {(\ beta _ {2} + x_ { i}) ^ {2}}}.}
Începând cu o estimare inițială {\ displaystyle \ beta _ {1} ^ {(0)} = 0.9} Și {\ displaystyle \ beta _ {2} ^ {(0)} = 0.2} , după cinci iterații ale algoritmului Gauss - Newton, se obțin valorile optime {\ displaystyle {\ hat {\ beta}} _ {1} = 0,362} Și {\ displaystyle {\ hat {\ beta}} _ {2} = 0,556} . Suma pătratelor reziduale descinde de la valoarea inițială a {\ displaystyle 1.445} până la cea finală a {\ displaystyle 0.00784} . Graficul din figură arată datele din tabel împreună cu curba modelului cu parametrii optimi obținuți de algoritm. Mai jos este un tabel cu valori intermediare ale {\ displaystyle \ beta _ {1}} Și {\ displaystyle \ beta _ {2}} în timpul algoritmului.
Repetare {\ displaystyle i} | {\ displaystyle \ beta _ {1} ^ {(i)}} | {\ displaystyle \ beta _ {2} ^ {(i)}} | {\ displaystyle S (\ mathbf {\ beta ^ {(i)}})} |
---|
1 | 0,33266293 | 0,26017391 | 0,015072 |
2 | 0.34280925 | 0,42607918 | 0,008458 |
3 | 0,35777522 | 0,52950844 | 0,007864 |
4 | 0,36140546 | 0.5536581 | 0,007844 |
5 | 0,36180308 | 0.55607253 | 0,007844 |
6 | 0,36183442 | 0.55625246 | 0,007844 |
Convergența metodei
Se poate arăta [2] că creșterea {\ displaystyle \ Delta} este o direcție de coborâre pentru {\ displaystyle S} , și, dacă algoritmul converge, limita este un punct staționar de {\ displaystyle S} . Cu toate acestea, convergența nu este garantată, nici măcar convergența locală ca în metoda tangentă sau în condiții comune Wolfe. [3]
Rata de convergență Gauss - Newton poate deveni pătratică. [4] Algoritmul ar putea converge, de asemenea, lent sau deloc dacă estimarea inițială este departe de minim sau de matrice {\ displaystyle \ mathbf {J_ {r} ^ {\ mathsf {T}} J_ {r}}} este prost condiționat . De exemplu, luați în considerare problema cu {\ displaystyle m = 2} ecuații e {\ displaystyle n = 1} variabile, date de
- {\ displaystyle {\ begin {align} r_ {1} (\ beta) & = \ beta +1, \\ r_ {2} (\ beta) & = \ lambda \ beta ^ {2} + \ beta -1. \ end {align}}}
Minimul este pentru {\ displaystyle \ beta = 0} . (De fapt, minimul este pentru {\ displaystyle \ beta = -1} de sine {\ displaystyle \ lambda = 2} , atâta timp cât {\ displaystyle S (0) = 1 ^ {2} + (- 1) ^ {2} = 2} , dar {\ displaystyle S (-1) = 0} .) De sine {\ displaystyle \ lambda = 0} , atunci problema devine liniară și metoda găsește minimul într-o singură iterație. De sine {\ displaystyle | \ lambda | <1} , atunci algoritmul converge liniar și eroarea scade asimptotic cu un factor {\ displaystyle | \ lambda |} la fiecare iterație. Cu toate acestea, dacă {\ displaystyle | \ lambda |> 1} , nici măcar nu există convergență locală. [5]
Derivarea din metoda lui Newton
În această secțiune, algoritmul Gauss - Newton va fi derivat din metoda Newton pentru optimizarea funcției. În consecință, rata de convergență a algoritmului Gauss - Newton poate fi pătratică în anumite condiții de regularitate. În general (în condiții mai slabe), convergența este liniară. [6]
Relația de recurență pentru metoda lui Newton pentru minimizarea funcției {\ displaystyle S} de parametri {\ displaystyle {\ boldsymbol {\ beta}}} Și
- {\ displaystyle {\ boldsymbol {\ beta}} ^ {(s + 1)} = {\ boldsymbol {\ beta}} ^ {(s)} - \ mathbf {H} ^ {- 1} \ mathbf {g} ,}
unde este {\ displaystyle \ mathbf {g}} indică vectorul gradient al {\ displaystyle S} , Și {\ displaystyle \ mathbf {H}} matricea sa hesiană . Atâta timp cât {\ displaystyle S = \ sum _ {i = 1} ^ {m} r_ {i} ^ {2}} , gradientul este dat de
- {\ displaystyle g_ {j} = 2 \ sum _ {i = 1} ^ {m} r_ {i} {\ frac {\ partial r_ {i}} {\ partial \ beta _ {j}}}.}
Elementele din Hessian sunt calculate prin derivarea componentelor gradientului, {\ displaystyle g_ {j}} , în comparație cu {\ displaystyle \ beta _ {k}} :
- {\ displaystyle H_ {jk} = 2 \ sum _ {i = 1} ^ {m} \ left ({\ frac {\ partial r_ {i}} {\ partial \ beta _ {j}}} {\ frac { \ partial r_ {i}} {\ partial \ beta _ {k}}} + r_ {i} {\ frac {\ partial ^ {2} r_ {i}} {\ partial \ beta _ {j} \ partial \ beta _ {k}}} \ right).}
Metoda Gauss - Newton se obține prin neglijarea termenilor cu derivatele secundare (a doua din expresie). Adică matricea Hessian este aproximată ca
- {\ displaystyle H_ {jk} \ approx 2 \ sum _ {i = 1} ^ {m} J_ {ij} J_ {ik},}
unde este {\ displaystyle J_ {ij} = {\ frac {\ partial r_ {i}} {\ partial \ beta _ {j}}}} sunt elementele iacobianului {\ displaystyle \ mathbf {J_ {r}}} . Puteți rescrie gradientul și Hessianul aproximativ în notație matricială ca
- {\ displaystyle \ mathbf {g} = 2 \ mathbf {J} _ {\ mathbf {r}} ^ {\ mathsf {T}} \ mathbf {r}, \ quad \ mathbf {H} \ approx 2 \ mathbf { J} _ {\ mathbf {r}} ^ {\ mathsf {T}} \ mathbf {J_ {r}}.}
Înlocuim aceste expresii în relația de recurență anterioară, astfel încât să obținem ecuațiile algoritmului
- {\ displaystyle {\ boldsymbol {\ beta}} ^ {(s + 1)} = {\ boldsymbol {\ beta}} ^ {(s)} + \ Delta; \ quad \ Delta = - \ left (\ mathbf { J_ {r}} ^ {\ mathsf {T}} \ mathbf {J_ {r}} \ right) ^ {- 1} \ mathbf {J_ {r}} ^ {\ mathsf {T}} \ mathbf {r} .}
Convergența metodei Gauss - Newton nu este garantată în toate situațiile. Aproximarea
- {\ displaystyle \ left | r_ {i} {\ frac {\ partial ^ {2} r_ {i}} {\ partial \ beta _ {j} \ partial \ beta _ {k}}} \ right | \ ll \ left | {\ frac {\ partial r_ {i}} {\ partial \ beta _ {j}}} {\ frac {\ partial r_ {i}} {\ partial \ beta _ {k}}} \ right |, }
care servește pentru a neglija derivatele secundare poate fi valabil în două cazuri, astfel încât să se aștepte convergența algoritmului: [7]
- Valorile funcției {\ displaystyle r_ {i}} sunt mici, cel puțin în jurul valorii minime.
- Funcțiile sunt cvasi-liniare, astfel încât {\ displaystyle {\ frac {\ partial ^ {2} r_ {i}} {\ partial \ beta _ {j} \ partial \ beta _ {k}}}} este relativ mic.
Versiuni îmbunătățite ale algoritmului
Cu algoritmul Gauss - Newton, suma pătratelor reziduurilor {\ displaystyle S} este posibil să nu scadă cu fiecare interacțiune. Cu toate acestea, din moment ce {\ displaystyle \ Delta} este o direcție de coborâre, cu excepția cazului în care {\ displaystyle S ({\ boldsymbol {\ beta}} ^ {s})} este un punct staționar, susține că {\ displaystyle S ({\ boldsymbol {\ beta}} ^ {s} + \ alpha \ Delta) <S ({\ boldsymbol {\ beta}} ^ {s})} pentru fiecare {\ displaystyle \ alpha> 0} suficient de mic. Deci, dacă metoda divergă, o soluție este să folosești o fracție {\ displaystyle \ alpha} a sporului {\ displaystyle \ Delta} , folosind următoarea formulă:
- {\ displaystyle {\ boldsymbol {\ beta}} ^ {s + 1} = {\ boldsymbol {\ beta}} ^ {s} + \ alpha \ Delta.} .
Cu alte cuvinte, vectorul de creștere este prea lung, dar este direcționat în jos, astfel încât avansarea doar o fracțiune a drumului va scădea valoarea funcției obiective {\ displaystyle S} . Se poate găsi valoarea optimă a {\ displaystyle \ alpha} folosind un algoritm de căutare pe linie , adică valoarea {\ displaystyle \ alpha} este determinată de găsirea a ceea ce minimizează {\ displaystyle S} , de obicei cu o metodă de căutare directă în interval {\ displaystyle 0 <\ alpha <1} .
Unde fracția optimă {\ displaystyle \ alpha} este aproape de zero, o metodă alternativă pentru tratamentul divergenței este utilizarea algoritmului Levenberg-Marquardt , cunoscut și ca „metoda regiunii de încredere”. [1] Ecuațiile normale sunt modificate astfel încât creșterea să fie rotită spre direcția de scădere maximă ,
- {\ displaystyle \ left (\ mathbf {J ^ {\ mathrm {T}} J + \ lambda D} \ right) \ Delta = - \ mathbf {J} ^ {\ mathrm {T}} \ mathbf {r}, }
unde este {\ displaystyle \ mathbf {D}} este o matrice diagonală pozitivă. Rețineți că atunci când {\ displaystyle \ mathbf {D}} este matricea identității {\ displaystyle \ mathbf {I}} Și {\ displaystyle \ lambda \ to + \ infty} , asa de {\ displaystyle \ lambda \ Delta = \ lambda \ left (\ mathbf {J ^ {\ mathrm {T}} J} + \ lambda \ mathbf {I} \ right) ^ {- 1} \ left (- \ mathbf { J} ^ {\ mathrm {T}} \ mathbf {r} \ right) = \ left (\ mathbf {I} - \ mathbf {J ^ {\ mathrm {T}} J} / \ lambda + \ cdots \ right ) \ left (- \ mathbf {J} ^ {\ mathrm {T}} \ mathbf {r} \ right) \ to - \ mathbf {J} ^ {\ mathrm {T}} \ mathbf {r}} , de unde și direcția {\ displaystyle \ Delta} se apropie de direcția gradientului negativ {\ displaystyle - \ mathbf {J} ^ {\ mathrm {T}} \ mathbf {r}} .
Parametrul Marquardt {\ displaystyle \ lambda} poate fi optimizat printr-o căutare pe linie, dar este foarte ineficient, deoarece vectorul de increment trebuie recalculat la fiecare modificare a {\ displaystyle \ lambda} . O strategie mai eficientă este aceasta: când metoda divergă, parametrul Marquardt este crescut atâta timp cât există o scădere a {\ displaystyle S} . Apoi valoarea este păstrată de la o iterație la alta, dar este scăzută până la atingerea unei valori limită, când parametrul Marquardt poate fi setat egal cu 0; minimizarea {\ displaystyle S} de aceea devine o optimizare standard Gauss - Newton.
Optimizare pe scară largă
Pentru optimizarea pe scară largă, algoritmul Gauss - Newton prezintă un interes deosebit, deoarece, în general, susține (deși nu întotdeauna) matricea {\ displaystyle \ mathbf {J} _ {\ mathbf {r}}} este mult mai împrăștiat decât Hessianul aproximativ {\ displaystyle \ mathbf {J} _ {\ mathbf {r}} ^ {\ mathsf {T}} \ mathbf {J_ {r}}} . În aceste cazuri, pasul algoritmului se face cu o metodă iterativă aproximativă potrivită pentru probleme mari și împrăștiate, cum ar fi metoda gradientului conjugat .
Pentru ca această abordare să funcționeze, aveți nevoie de cel puțin un mod eficient de a calcula calculul produsului
- {\ displaystyle \ mathbf {J} _ {\ mathbf {r}} ^ {\ mathsf {T}} \ mathbf {J_ {r}} \ mathbf {p}}
pentru un transportator {\ displaystyle \ mathbf {p}} . Pentru stocarea cu matrice rară, este, în general, practic să stocați rândurile de {\ displaystyle \ mathbf {J} _ {\ mathbf {r}}} într-o formă comprimată (adică fără elementele nule), dar făcând calculul direct al produsului precedent oarecum complicat datorită transpunerii. Cu toate acestea, dacă se definește pe sine {\ displaystyle \ mathbf {c_ {i}}} ca linia {\ displaystyle i} -alea din matrice {\ displaystyle \ mathbf {J} _ {\ mathbf {r}}} , are loc următoarea relație simplă:
- {\ displaystyle \ mathbf {J} _ {\ mathbf {r}} ^ {\ mathsf {T}} \ mathbf {J_ {r}} \ mathbf {p} = \ sum _ {i} \ mathbf {c} _ {i} (\ mathbf {c} _ {i} \ cdot \ mathbf {p}),}
astfel încât fiecare rând să contribuie aditiv și independent la produs. Pe lângă memorarea foarte practică, această expresie este potrivită pentru calcul paralel . Rețineți că fiecare linie {\ displaystyle \ mathbf {c_ {i}}} este gradientul reziduului respectiv {\ displaystyle r_ {i}} ; ținând cont de acest lucru, forma anterioară subliniază faptul că reziduurile contribuie la problemă independent unul de celălalt.
Algoritmi înrudiți
Într-o metodă cvasi-Newton, cum ar fi cea datorată lui Davidon, Fletcher și Powell sau Broyden - Fletcher - Goldfarb - Shanno (metoda BFGS), o estimare a lui Hessian este calculată numeric {\ displaystyle {\ frac {\ partial ^ {2} S} {\ partial \ beta _ {j} \ partial \ beta _ {k}}}} folosind doar primele derivate {\ displaystyle {\ frac {\ partial r_ {i}} {\ partial \ beta _ {j}}}} , astfel încât abia după {\ displaystyle n} cicluri de rafinare metoda se apropie de cea a lui Newton în termeni de performanță. Rețineți că metodele cvasi-newtoniene pot reduce funcțiile arbitrare la valori reale, în timp ce Gauss - Newton, Levenberg - Marquardt etc. ele rezolvă doar probleme neliniare cu cele mai mici pătrate.
O altă metodă de rezolvare a problemelor minime folosind doar primele derivate este coborârea gradientului . Cu toate acestea, ultima metodă nu ia în considerare derivatele secundare nici măcar aproximativ, deci este extrem de ineficientă pentru multe funcții, mai ales dacă parametrii au o corelație puternică.
Notă
- ^ a b Björck (1996)
- ^ Björck (1996), p. 260.
- ^ Mascarenhas, Divergența metodelor BFGS și Gauss Newton , în Mathematical Programming , vol. 147, nr. 1, 2013, pp. 253–276, DOI : 10.1007 / s10107-013-0720-6 , arXiv : 1309.7922 .
- ^ Björck (1996), p. 341, 342.
- ^ Fletcher (1987), p. 113.
- ^ Copie arhivată , la henley.ac.uk . Accesat la 2 noiembrie 2018 (Arhivat din original la 4 august 2016) .
- ^ Nocedal (1999), p. 259.
Bibliografie
- A. Björck, Metode numerice pentru problemele celor mai mici pătrate , SIAM, Philadelphia, 1996, ISBN 0-89871-360-9 .
- Roger Fletcher,Metode practice de optimizare , 2nd, New York, John Wiley & Sons , 1987, ISBN 978-0-471-91547-8 .
- Jorge Nocedal și Wright, Stephen, Optimizare numerică , New York: Springer, 1999, ISBN 0-387-98793-2 .
linkuri externe
Implementări
- Artelys Knitro este un rezolvator neliniar cu implementarea metodei Gauss - Newton. Este scris în limbaj C și are interfețe pentru C ++ / C # / Java / Python / MATLAB / R.