From a653082b1a79c268638bf7d8f446d1efad8527c7 Mon Sep 17 00:00:00 2001 From: Jesper Andersson <jesper@fmrib.ox.ac.uk> Date: Mon, 15 Jun 2009 17:14:14 +0000 Subject: [PATCH] Small change to how Hessian is updated when lambda increases in levmar --- nonlin.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nonlin.cpp b/nonlin.cpp index ed5be3a..e738af8 100644 --- a/nonlin.cpp +++ b/nonlin.cpp @@ -309,7 +309,8 @@ NonlinOut levmar(const NonlinParam& p, const NonlinCF& cfo) } for (int i=1; i<=p.NPar(); i++) { // Nudge it if (p.GaussNewtonType() == LM_LM) { // If Levenberg-Marquardt - H->AddTo(i,i,(p.Lambda()-olambda)*H->Peek(i,i)); + // H->AddTo(i,i,(p.Lambda()-olambda)*H->Peek(i,i)); + H->Set(i,i,((1.0+p.Lambda())/(1.0+olambda))*H->Peek(i,i)); } else if (p.GaussNewtonType() == LM_L) { // If Levenberg H->AddTo(i,i,p.Lambda()-olambda); -- GitLab