levmar

Screenshot Software:
levmar
Detalii soft:
Versiune: 2.6
Incarca data: 15 Apr 15
Producător: Manolis Lourakis
Licenţă: Gratuit
Popularitate: 18

Rating: 5.0/5 (Total Votes: 1)

levmar este o punere în aplicare a neliniară Levenberg-Marquardt mai mici pătrate algoritmi în C / C ++.
Lmder rutina de Minpack, puse în aplicare în inceputul anilor '80 de la Laboratorul Național Argonne, este, probabil, cel mai des utilizat punerea în aplicare liberă a algoritmului LM. lmder este scris în FORTRAN77 și-a lungul anilor sa dovedit a fi o bucată de încredere de software. Având în vedere că rutine FORTRAN poate fi apelat din C / C ++, s-ar putea întreba despre motivația pentru a scrie o versiune de LM din C. Ei bine, problema este că, atunci când FORTRAN este numit de C, programator ar trebui să fie conștienți de (și conforme cu ) mai multe norme privind numele calandrat, argument care trece, multidimensional aspect memorie matrice, convenții de legatura, etc, care sunt nefiresc în comparație cu normele obișnuite C. Un al doilea motiv este acela că această abordare reușește de la sine că un compilator FORTRAN pentru mediul de programare țintă este disponibil, care ar putea să nu fie neapărat cazul. Un alt motiv are de a face cu incapacitatea de a înțelege mecanismele interne ale unei implementări FORTRAN: Ocazional, atunci când este necesar să se înțeleagă exact ceea ce face codul FORTRAN, anumite bucăți din ea s-ar putea părea de neînțeles pentru programatori fara cunostinte de FORTRAN. FORTRAN automată a C traducători (de exemplu, F2c) nu rezolvă problema, deoarece codul C produs este destul de ilizibil pentru oameni "neinițiați". Mai mult decât atât, documentație descrie matematica pe care punerea în aplicare se bazează ar putea fi obscure sau inaccesibile. Nu în ultimul rând, o punere în aplicare LM candidat în C ar trebui să fie liber și punct de vedere tehnic. De exemplu, varianta C a algoritmului LM prezentate în "Rețete numerice" Cartea (de exemplu mrqmin), nu este întotdeauna o alegere viabilă: departe de a fi drepturi de autor, se are reputația de a nu dispun de robustețe
. Pentru motivele de mai sus, am dezvoltat pachetul levmar care include C implementări de arome LM, care sunt, de asemenea, folosite cu C ++. levmar include implementari duble și single LM precizie, atât diferență analitic și finit aproximative Jacobians. Acesta este oferit gratuit, în condițiile GNU General Public License. Teoria matematică din spatele levmar fără restricții este descris în detaliu în notele de curs Metode intitulat pentru non-liniare mici pătrate Probleme, prin K. Madsen, HB Nielsen și O. Tingleff, Universitatea Tehnică din Danemarca; Implementări Matlab de algoritmii prezentate în notele de curs sunt, de asemenea, disponibile. Rețineți, totuși, că formularea problemei de minimizare a adoptat aici este puțin diferită de cea descrisă în notele de curs utilizare
Funcția lui:.
Levmar oferă mai multe funcții nevărsat de utilizator ascultarea următoarea convenție de denumire: prima literă (d sau e) specifică precizie dublă sau single si sufixul (_der sau _dif) reprezintă Jacobian analitic sau aproximative. Dacă este prezent, LEC, BC și a componentelor BLEC implica ecuație liniară, cutie și cutie simultană și constrângerile ecuație liniară, respectiv. Mai precis, levmar include funcțiile de mai jos:
optimizare fără restricții
dlevmar_der (): dublă precizie, Jacobian analitic
dlevmar_dif (): dublă precizie, diferență finită aproximat slevmar_der Jacobian
(): singur precizie, analitic slevmar_dif
Jacobian (): singur precizie, diferență finită aproximat Jacobian
optimizare Limitată
dlevmar_lec_der () : dublă precizie, constrângerile ecuație liniară, Jacobian analitic
dlevmar_lec_dif (): dublă precizie, constrângerile ecuație liniară, diferență finită aproximat Jacobian
slevmar_lec_der (): singur precizie, constrângerile ecuație liniară,
Jacobian analitic slevmar_lec_dif (): singur precizie, constrângerile ecuație liniară, diferență finită aproximat Jacobian
dlevmar_bc_der (): dublă precizie, constrângeri cutie, Jacobian analitic
dlevmar_bc_dif (): dublă precizie, constrângeri cutie, finit diferență aproximate Jacobian
slevmar_bc_der (): precizie singur, constrângeri cutie, analitic slevmar_bc_dif
Jacobian (): singur precizie, constrângeri cutie, diferență finită aproximat Jacobian
dlevmar_blec_der (): dublă precizie, cutie si constrângerile ecuație liniară, analitic dlevmar_blec_dif
Jacobian (): dublă precizie, cutie si constrângerile ecuație liniară, diferență finită aproximat Jacobian
slevmar_blec_der (): singur precizie, cutie de & ecuația liniară constrângeri, Jacobian analitic
slevmar_blec_dif (): constrângeri unic de precizie, cutie de & ecuația liniară, diferență finită aproximat Jacobian
Observații că utilizarea diferențe finite de apropiere a rezultatelor Jacobian în evaluări repetate ale funcției pentru a fi montate. Cu scopul de a reduce numărul total al acestor evaluări, funcțiile xxxxxxx_dif pună în aplicare aproximări secantă la Jacobian, utilizând rang unul actualizări Broyden lui. Toate funcțiile rezolva aceeași problemă, și anume ei caută p vector parametru care descrie cel mai bine (din punct de vedere norma L2) măsurători vectorului x. Mai precis, având în vedere o funcție vector f: R ^ m -> R ^ n cu n> = m, se calculează ap astfel încât f (p) ~ = x, adică norma pătrat || e || ^ 2 = | | xf (p) || ^ 2 este minimizat. De asemenea, constrângerile cutie de forma lb [i]

Ce este nou în această versiune:

  • Această versiune adaugă suport pentru scalare diagonală a xlevmar_bc_der (), care pot îmbunătăți convergența când punctul de plecare este departe de adevărata Minimizarea.
  • O sistemelor Solver liniar de sprijin descompunere Cholesky paralel cu PLASMA, biblioteca algebra liniara pentru procesoare multi-core.
  • rezolvarea liniare au fost stabilite astfel încât să funcționeze pe triunghiuri mai mici de matrice simetrice, ceea ce duce la o mai bună performanță cache.
  • Fișierele de configurare CMake pentru construirea proiectului au fost revizuite.
  • O serie de alte modificări minore au fost făcute.

Ce este nou în versiunea 2.5:

  • ATENȚIE PENTRU versiunile anterioare UTILIZATORII: Pentru o mai bună coerență și evitarea conflicte, numele fișierului antet levmar a fost schimbat de la lm.h la levmar.h; vă rugăm să actualizați fișierele sursă în consecință.
  • Adăugat suport pentru minimizarea rubrica simultan, constrângerile ecuația și inegalitate liniare (a se vedea funcții xlevmar_bleic_der () și xlevmar_bleic_dif ()).
  • ambalaje de cartier puse în aplicare pentru xlevmar_bleic_der () și xlevmar_bleic_dif () se ocupă de cazuri limitate simple, de exemplu, xlevmar_blic_der () și xlevmar_blic_dif () reducerea la minimum sprijin la rubrica și constrângeri de inegalitate liniare numai.
  • Adaugata o sisteme de rezolvare liniară bazat pe descompunerea UDUt (de exemplu,-sqrt gratuit Cholesky).
  • Eliminat unele copierea memorie inutile de cele mai multe rezolvarea liniare.
  • Adaugata o nouă problemă de test-montaj date (Osborne).
  • si voi alte câteva modificări minore.

Ce este nou în versiunea 2.4:

  • ATENȚIE PENTRU versiunile anterioare UTILIZATORII: Dimensiunea argumentului info (de exemplu, LM_INFO_SZ) a crescut cu o a găzdui un câmp de retur nou (de exemplu, info [9]), care corespunde cu numărul total de sisteme liniare rezolvate în cursul minimizării. Indicii de câmpuri returnate în prealabil în matrice de informatii rămân neschimbate.
  • Implementarea unui sistem de mai-cache eficient pentru calculul aproximativ Hessian J ^ T * J și J ^ T * e pentru probleme de dimensiuni mici de reducere la minimum.
  • Asigurarea că orice memorie de lucru reținute între invocări ale rezolvarea liniare este eliberat la încetarea de rutine levmar.
  • Asigurarea că rezolvarea liniare folosesc cantitatea minimă necesară de memorie auxiliar, evitând ocazional supra-alocările.
  • Implementarea unui sistem de buclă derulare pentru accelerarea calculul e = x-HX.
  • fix o pereche de probleme cu aliniere memorie pe sistemele pe 64 biți.
  • funcții Adaugata pentru calculul coeficientului de determinare.
  • rezolvat câteva probleme minore.

Software similare

Chombo
Chombo

15 Apr 15

ConvertAll
ConvertAll

17 Feb 15

LaserCalc
LaserCalc

20 Feb 15

Comentarii la levmar

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!