Algorithm 3.16. Levenberg-Marquardt method
b
e
g
i
n
begin
begin
k
:
=
0
;
v
:
=
2
;
x
:
=
x
0
k:=0; v:=2; x:=x_0
k:=0;v:=2;x:=x0
A
:
=
J
(
x
)
T
J
(
x
)
;
g
:
=
J
(
x
)
T
f
(
x
)
A:=J(x)^TJ(x); g:=J(x)^Tf(x)
A:=J(x)TJ(x);g:=J(x)Tf(x)
f
o
u
n
d
:
=
(
∥
g
∥
∞
≤
ε
1
)
;
μ
:
=
τ
∗
m
a
x
{
a
i
i
}
found:=(\|g\|_\infty \leq \varepsilon_1);\mu:=\tau*max\{a_{ii}\}
found:=(∥g∥∞≤ε1);μ:=τ∗max{aii}
w
h
i
l
e
(
n
o
t
f
o
u
n
d
)
a
n
d
(
k
<
k
m
a
x
)
while (not found)and(k<k_{max})
while(notfound)and(k<kmax)
k
:
=
k
+
1
;
S
o
l
v
e
(
A
+
μ
I
)
h
l
m
=
−
g
k:=k+1; Solve(A+\mu I)h_{lm}=-g
k:=k+1;Solve(A+μI)hlm=−g
i
f
∥
h
l
m
∥
≤
ε
2
(
∥
x
∥
+
ε
2
)
if \|h_{lm}\| \leq \varepsilon_2(\|x\|+\varepsilon_2)
if∥hlm∥≤ε2(∥x∥+ε2)
f
o
u
n
d
:
=
t
r
u
e
found:=true
found:=true
e
l
s
e
else
else
x
n
e
w
:
=
x
+
h
l
m
x_{new}:=x+h_{lm}
xnew:=x+hlm
ϱ
:
=
(
F
(
x
)
−
F
(
x
n
e
w
)
)
/
(
L
(
0
)
−
L
(
h
l
m
)
)
\varrho:=(F(x)-F(x_{new}))/(L(0)-L(h_{lm}))
ϱ:=(F(x)−F(xnew))/(L(0)−L(hlm))
i
f
ϱ
>
0
if \varrho>0
ifϱ>0{step acceptable}
x
:
=
x
n
e
w
x:=x_{new}
x:=xnew
A
:
=
J
(
x
)
T
J
(
x
)
;
g
:
=
J
(
x
)
T
f
(
x
)
A:=J(x)^TJ(x); g:=J(x)^Tf(x)
A:=J(x)TJ(x);g:=J(x)Tf(x)
f
o
u
n
d
:
=
(
∥
g
∥
∞
≤
ε
1
)
;
found:=(\|g\|_\infty \leq \varepsilon_1);
found:=(∥g∥∞≤ε1);
μ
:
=
μ
∗
m
a
x
{
1
3
,
1
−
(
2
ϱ
−
1
)
3
}
;
v
:
=
2
\mu:=\mu*max\{\frac13,1-(2\varrho-1)^3\};v:=2
μ:=μ∗max{31,1−(2ϱ−1)3};v:=2
e
l
s
e
else
else
μ
:
=
μ
∗
v
;
v
:
=
2
∗
v
\mu:=\mu*v; v:=2*v
μ:=μ∗v;v:=2∗v
e
n
d
end
end
![](https://i-blog.csdnimg.cn/blog_migrate/e87034cb4d08fb634e3b8226e23f9421.jpeg)
参考文献
K. Madsen, H. B. Nielsen, O. Tingleff, Methods for Non-Linear Least Squares Problems