非线性最小二乘

非线性最小二乘

tags:数值优化


最小二乘

请思考一下下面的问题

:1.1x,使F(x)=12i=1m(fi(x))2fi:RnR,i=1,,m,mn

最小二乘的一个重要用途是数据拟合,来看一个例子。假设有 m 组样本点数据(t1,y1),(t2,y2),,(tm,ym),现在要找到一个函数使得该函数能够很好的拟合上面的数据点并能够预测新的数据点。现在设这个函数的模型

M(x,t)=x3ex1t+x4ex2t

其中向量 x 是该模型的参数,这里设x=(x1,x2,x3,x4)T,如果存在向量 x+ 使得

yi=M(x+,ti)+ϵi

其中 {ϵi} 纵坐标的测量误差,假设这个误差服从白噪声(即服从高斯分布 N(0,1) )。对于任何一个 x 我们可以计算它的残差

fi(x)=yiM(x,ti)=yix3ex1tix4ex2tii=1,,m.

这里使用最小二乘的定义来求解最小的 x 值。现实中,很多问题都是最小二乘的一个特殊的变体:给一个函数 F:RnR ,找满足映射关系的 F 的最小参数值。其中F叫做目标函数或者代价函数。

:1.2F:RnR,x+=argminx{F(x)}

一般情况下,找到全局最小很困难。这里我们仅仅求解 F 的局部最小解,也就是求在x变换很小的情况下求解 F 在这个很小的范围δ的最小解。其中 δ 是很小的一个正数。

:1.3F:RnmapstoR,x使F(x)F(x),xx<δ.

我们假设目标函数是光滑可微分的,下面的泰勒的截断式是有效的

F(x+h)=F(x)+hTg+12hTHh+O(h3),(1.4a)

其中 g 是梯度函数,即:

gF(x)=F(x)x1F(x)xn(1.4b)

H 是黑塞矩阵,即:

HF(x)=2Fxixj(x)(1.4c)

如果 x 是局部最小解同时 h 足够的小,那么我们不可能找的一个点 x+h 使得 F 的值更小。由1.4a可知:

:1.5xgF(x)=0.

对于上面的必要条件我们给出一个具体的名字叫稳定点:

:1.6gsF(xs)=0xsF

因此局部最小点也是一个稳定点,但也可能是一个局部最大点。稳定点也有可能既不是局部最小点也不是局部最大点,这个点也被称作鞍点。为了确定给定的点是不是局部最小点。我们需要把第二个条件 xs 带入1.4a,于是有

F(xs+h)=F(xs)+12hTHsh+O(h3),Hs=F(xs).(1.7)

从定义(1.4c)可知,黑塞矩阵是对称的矩阵,如果我们让 Hs 是正定的,它的特征值要比某些数字 δ>0 要大,则有

hTHsh>δh2

上式说明对于给定的足够小的 h 第二个条件起主要作用,同时第二个条件是正的,这样我们可以得到

:xsF(xs)xs

如果 Hs 是负定的,则 xs 是局部最大解。如果 Hs 是非定的(也就是它有正的和负的特征值),则 xs 是一个鞍点。

2. 下降方法

所有非线性优化方法都是迭代方法。从迭代开始点 x0,x1,, ,我们希望它能够收敛到被给函数的局部最小点 x ,看定义1.3。大多数的方法使用下面的约束强制函数是下降的

F(xk+1)<F(xk)(2.1)

这就防止了函数收敛到局部最大点同时也使函数更少的可能收敛到鞍点。如果被给的函数的局部最小点不止一个,那么收敛的结果值依赖于它的初始解 x0 。因为我们不知道哪一个最小解将要被发现。所以最小解不有必要与 x0 很接近。

在很多情况下,该方法可能要经历两个阶段才能收敛到最小解。当 x0 远离最小解时,我们想让该方法能够稳定的朝着$x^*收敛。因此在整个的迭代过程中我们应保证误差不增加(除了在第一步时),也就是

ek+1<ekk>K

其中 ek 表示当前的误差,

ek=ekx.(2.2)

xk 接近 x 时,我们想让函数更快的收敛,看看下面关于收敛速度的一些定义

线线ek+1αekek+1=O(ek2)ekek+1/ekk

下面给出下降方法的算法步骤,其中迭代的每一步我们需要考虑下面两个问题

  • 找到下降的方向 hd
  • 找到一个好的迭代步长

算法大概步骤

2.4begink:=0;x:=x0;found:=false;while(notfound)and(k<kmax)hd:=search_direction(x)if(nosuchhexiists)found:=true;elseα:=steplength(x,hd)x:=x+αhd;k:=k+1;end{}{x}{x}{xhd}{}

思考一下下面的情况,关于以 x 起点,h为方向的&F&的值。从泰勒阶段时我们看到

F(x+αh)=F(x)+αhTF(x)+O(α2)F(x)+αhTF(x)α(2.5)

这里我们把 F(x+α) 看成关于 α 的函数

ϕ(α)=F(x+αh),ϕ(0)=F(x),ϕ(α)=hTF(x+αh)ϕ(0)=hTF(x)(2.5)

可以看出,如果 α=0ϕ(0)=htF(x)<0 时, F(x) 为单调减函数。所有我们可以得到下降方向 h 满足的条件

:2.6$F(x)$$x$,hTF(x)<0,h

如果没有那样的 h 存在,而此时又有F(x)=0,则说明 x 是稳定点。否则,我们就需要选择一个步长α,也就是选择一个沿着 h 方向下降的长度。以便于我们可以得到F(x+αh)的值。其中一种确定 α 的近似方法是找

αe=argmina>0{F(x+α)}(2.7)

这个过程叫做线性搜索。下面我们先介绍两种计算下降方向的方法。

2.1 最速下降法

(2.5)我们可以知道完成一个 αh,α>0 ,函数的相对增益值满足

limα0=F(x)F(x+αh)αh=1hhTF(x)=F(x)cosθ

其中 θ h F(x)之间的夹角。所以当 θ=π 时,函数增益最大,最大为 F(x) 。因此最速下降方向 hsd

hsd=F(x)(2.8)

(2.8)为基础的方法叫做最速下降方法或者梯度方法。它是下降方向最好的方法,我们可以把它应用于(2.7)。该方法收敛的速度是线性的,比较缓慢。然而最速下降法用于精确线性搜索,在有限计算精度下有可能找不到最小点。但大多数情况下,该方法在最初的迭代过程中能够表现出很好的性能。

思考一下有没有这么一种混合方法,该方法在最初的表现的很好,如梯度方法,在接近真实解时它表现的像牛顿法。接下来我们来看看什么是牛顿法。使用混合方法的一个关键性问题是什么时候切换这两种方法最恰当。

2.2 牛顿法

我们从 x 是一个稳点时推导这个方法。根据(1.6)的定义,它满足 F(x)=0 ,这是一个非线性方程组,由泰勒表达式

F(x+h)=F+F(x)h+O(h2)F(x)+F(x)hh

我们推导牛顿方法:找 hn 的解

Hhn=F(x)H=F(x)(2.9a)

计算下一次的迭代

x:=x+hn.(2.9b)

若假设 H 是正定非奇异的,对于所有μ μTHμ>0 ,因此在(2.9a)的两边都乘以 hTn ,我们可以得到

0<hTnHhn=hTnF(x)(2.10)

这说明了 hn 是下降方向,它满足2.6定义的条件。

牛顿方法在迭代的最后阶段(即接近最小解)能够表现的非常的好。它也说明了如果黑塞矩阵是正定的(1.8定义的),在真实解附近 F(x) 也是正定的,然后就可以得到二次收敛的速度。另一方面,如果 F(x) 是负定的,我们将得到二次收敛速度的最大解。我们可以使用下降的条件避免收敛到最大点。

下面是依据梯度方法和牛顿方法的混合方法,根据2.10可知,如果 F 是正定的,牛顿方法能够保证是下山方向。

ifF(x)h:=hn;elseh:=hsd;x:=x+αh(2.11)

这里 hsd 是最速下降方向, α 是通过线性搜索找到。检查一个矩阵是不是正定的一个好的工具是使用乔里斯基方法(Cholesk’s method),如果分解成功还可以用来求解线性方程组,因此对正定的检查是很方面的。

2.4节我们将介绍同时求解搜索方向 hn 和步长 α 的方法。混合方法是非常有效的但它是很难被使用的。因为它需要计算 F(x) ,对于于一些复杂的应用是很困难的。相反我们使用拟牛顿方法(Quasi-Newton method),它使用一系列的逐渐逼近 H=F(x) 的方法。

2.3 线性搜索

给定一个点 x 和下降方向h,现在要求解在 X h方向移动的步长。我们可以设

ϕ(α)=F(x+αh),xhα0.(2.12)ϕ(α)=hTF(x+αh)

要保证 h 是下降的方向,则有

ϕ(0)=hTF(x)<0

对于牛顿法,通常情况下,我们让 α=1 ,对于 α 的选择可能引起一下几种情况

  • α 很小,使得目标函数增益很小, α 应该增加。
  • α 很大,大到 ϕ(α)ϕ(0) ,这时应该减少 α 使得满足下降方向。
  • α 接近 ϕ(α) 的最小值,接受这个 α 值。

精确地线性搜索是求解一系列的 α1,α2, 的迭代过程,我们的目标是寻找最小的 αe (2.7)。当迭代步长 αs 满足下面的条件时停止

|ϕ(αs)τ|ϕ(0)

其中 τ 是非常小的正数。其中

ϕ(αk)=F(x+αkh),ϕ(αk)=hTF(x+αh)

精确的线性搜索可能会更多的计算时间,那是因为当 x 远离x时,搜索方向 h 可能偏离xx更远。因此没有必要精确寻找 ϕ 的最小。如果 α 的值不是前两种情况我们就接受它,这种方法也就叫做松散的线性搜索(soft line search)。我们给出严格的版本关于(2.1)描述的下降条件

ϕ(αs)ϕ(0)+γ1ϕ(0)α0<γ1<1.(2.13a)

这就保证了不会出现第二种情况,第一种情况中 (α,ϕ(α)) 很接近起始点的切向,我们给出下面的条件

ϕ(αs)γ2ϕ(0),γ1<γ2<1.(2.13b)

如果开始的猜想的 α 满足这些约束,我就就接受它,否则我们必须以精确线性搜索为基础迭代搜索。

2.4 信頼域和阻尼方法

假设 L 有如下的模型

F(x+h)L(h)F(x)+hTc+12hTBh(2.14)

其中 cRn , 矩阵 BRn×n 是对称的。 L(h) 是对 F(x+h) 的近似。在 h 充分小的情况下这个近似是正确的。

在信頼域中我们假设知道一个正的数字,在以 x 为中心,为半径的球内 L 模型是充分精确地,迭代步长被确定

h=htrargminh{L(h)}(2.15)

阻尼模型里迭代步长被确定

h=hdmargminh{L(h)+12uhTh}(2.16)

其中阻尼参数 u0 。条件 12uhTh=12uh2 被看做惩罚大步骤。

算法2.4的中心部分若以上述方法为基础则有

if(F(x+h)<F(x))x:=x+h;updateoru

如果 h 满足下降的方向(2.1),则相应的α=1。否则, α=0 ,也就是说我们不移动 x 。然而,我们并不是停在x(除非 x=x ),我们修改 oru 以期待下次迭代的时候有个好的 h

因为L(h)是在 h 充分小的情况下对F(x+h)的很好的近似。下一步失败的原因是因为 h 步长的太大,此时我们应该减小它。更进一步说,如果我们接受了这个步长,那么在下次迭代的时候我们可以使用更大的步长,也就是说在到达最小点x之前根据需要减小步长。

计算步长模型的质量可以使用增益率来评估

ρ=F(x)F(x+h)L(0)L(h)(2.18)

也是说计算函数值真实的减少与预测的减少之间的比率。在这个式子中,分母是正的,如果分子是负的说明这一步不是下山方向(步长太大了应该减小步长)。

在信頼域中我们一直监测 的步长,下面的更新策略被广泛使用的

ifρ<0.25:=/2;elseifρ>0.75:=max{,3h}(2.19)

因此,如果 ρ<14 ,我们使用更小的步长,而 ρ>34 说明我们可以使用更大的步长。信頼域算法对阈值0.25,0.75,除数 p1=2 或者因子 p2=3 的微小变化不敏感。但是 p1=2,p2=3 的选择是非常重要的,它使得 值不震荡。

在阻尼方法中,如果 ρ 很小表明应该加大阻尼因子也就是增加惩罚步长。如果 ρ 是一个大的值表明 L(h) 很好的近似了 F(x+h) ,此时阻尼因子应该减小。下面的策略与(2.19)一样都是被广泛使用的,它最初由马夸尔克(Marquardt)提出

ifρ<0.25u:=u2;$elseifρ>0.75u:=u/3;(2.20)

这个方法与上一个方法一样对阈值0.25, 0.75, p1=2,p2=3 的微小变化不敏感, p1,p2 的选择很重要,它使得 u 值不发生震荡。经验表明通过阈值0.25,0.75的不连续变换可能引起”抖动”的减缓收敛。下面是由尼克森(Nielsen)提出的总体性能较优越的策略

ifρ>0u:=umax{13,1(2ρ1)3};v:=2;(2.21)elseu:=uv;v:=2v;

2.4.1 计算步长

通过函数的稳定点求解阻尼因子的步长。

φu(h)=L(h)+12uhTh=F(x)+hTc+12hTBh+12uhTh

要求 φu(h) 最小的解,则意味着 hdm

φu(h)=L(h)+uh=0

的解( 参考2.16),从 (2.14)的定义可以看到它等价于
(B+uI)hdm=c(2.22)

其中 I 是单位阵,如果u足够大,则对称矩阵 B+uI 是正定的。根据1.8的理论可知 hdm L 的局部最小。

例子 2.1 阻尼牛顿法

假设模型为上述的L(h),其中 c=F(x) B=F(x) ,根据(2.22)我们有

(F(x)+uI)hdm=F(x).

这里 hdm 就是所说的阻尼牛顿步,如果 u 很大,有
hdm1uF(x)

也即是在最速方向上的很小的步。另一方面,如果 u 很小,hdm很接近牛顿的步 hn 。因此,我们可以认为阻尼牛顿法就是最速下降大和牛顿法的组合。

信頼域方法的步 htr 通过下面的约束问题求解

minimizeL(h)subjecttohTh2.(2.23)

3. 非线性最小二乘

首先考虑下面的问题

给一个向量函数 f:RnRm,m>n 现在要使 f(x) 最小。即:

x=argminx{F(x)}(3.1a)

或者等价于时 F(x) 最小,即:

F(x)=12i=1m(fi(x))2=12f(x)2=12f(x)Tf(x).(3.1b)

最小二乘问题可以通过一般的优化方法,我们将要提出的LMA方法更加有效率,很多情况下LMA要比线性方法要好,有些时候甚至是二次收敛的。

  • 当初始解远离真实解时,表现的像是一个梯度下降法(线性搜索),速度很慢,但是是可收敛的。

  • 当初始解很接近真实解时,LMA表现的像是高斯牛顿方法,它的收敛速度二次的。

对于求解 F(x) 的最小值,首先需要对 F(X) 求导,这里假设 f 有连续的二街偏导数。我们可以利用泰勒的阶段二项式:

f(x+h)=f(x)+Jh+Oh2,JRm×n(3.2a);
是雅克比矩阵, J f的一阶偏导构成,即:

(J)ij=fixj(x)(3.2b),

J(x)=f1x1f2x1fmx1f1x2f2x2fmx2f1xnf2xnfmxnm×n(3.2c)

F:RnR, 求一阶导,即:

Fx=i=1m(fifixj(x))(3.3)

因此 F(x) 的梯度为:

F(x)=JTf(x)(3.4a)

F(x)=JTJ+i=1m(fifi(x))(3.4b)


例3.1 线性最小二乘问题

f(x)=bAx ,其中 bRm,ARm×n ,这是一个简单的线性最小二乘问题。其中: f(x)=A ,从1.4b可知

F(x)=ATf(x)=AT(bAx)

假设 F(x)=0 ,则有:
ATAx=ATb(1.5)

上式又叫正规方程组,为了解这个问题可以写成:
Axb,

我们可以通过正交矩阵 Q 求解x,像下面这样:
QTA=(R0)
其中 R 是上三角矩阵,可以通过回带法求解x,
Rx=(QTb)1:n

*Note: 用正交矩阵求得的解要比解正规方程组得到的解精确的多。

例3.2 求正规方程的解

f(x)=0 , where f:RnRn

我们可以使用牛顿迭代法,牛顿迭代法的条件是首先有一个初始解的猜想 x0 ( x0 很接近真实解),然后依次计算 x1,x2, ,所有这些 x 必须满足f(x+h)=0,O(h),是可以忽略。求解过程如下:

J(xk)hk=f(xk)(3.6)
xk+1=xk+hk

这里如果 J(x) 是非奇异的,牛顿迭代法的收敛速度是二次的。也就是如果 dk=xkx 是很小的, xk+1x=O(d2k) ,如果 x s是远离x牛顿法可能不收敛或者收敛到一个错误的值。


3.1 高斯牛顿法

当初始解很接近真实解,高斯牛顿法是一种十分有效的方法,它的收敛速度是二次的,高斯牛顿法的实现以向量函数的一阶导为基础。同时高斯牛顿法在求解非线性问题时,也是把它局部化线性处理。由 3.2a 知,当 h2 很小时我们可以得到:

f(x+h)l(h)=f(x)+Jf(x)(3.7a)
3.7a带入 3.1b有:
F(x+h)L(h)12l(h)Tl(h)=12fTf+hTJTf+12hTJTJh=F(x)+hTJTf+12hTJTJh(3.7b)

最小化 L(h) 得到高斯牛顿步长h_gn,

hgn=argminh{L(h)}
我们很容易看到 L 的梯度和黑塞矩阵(Hession martrix),即:
L(h)=JTf+JTJhL(h)=JTJ3.8

3.4a比较可知 L(0)=F(x) 。从上面的方程 L(h) h 无关的并且是对称的。这里如果J是满秩,也就是说 J 的列是无关的,那么L(h)是正定的,这也说明了 L(h) 是唯一的最小值,我们可以通过下面的方程求解:

(JTJ)hgn=JTf(3.9)

因此对于 F 来讲hgn是最速下降的方向,因为:

hgnF(x)=hgn(JTf)=hgn(JTJ)hgn<0(3.10)

我们可以用下面的方程迭代求解:

(JTJ)hgn=Jf
x:=x+αhgn
其中 α 被用来表示线性搜索,典型的高斯牛顿方法在所有的迭代步骤中使用 α=1 ,如果线性高斯牛顿法满足下面的条件则是二次收敛。

  • {x|F(x)F(x0)}

  • 在所有的迭代步骤中 J 是满秩。

Note:基于优化的牛顿法通常是二次收敛的,但是高斯牛顿法通常不是这种情况。

下面我们比较这两种方法的搜索方向:

F(x)hn=FxandL(h)hgn=L(0)
根据 3.8a 我们可以看出方程的右边是相等的。根据3.4b3.8 可以看出来他们的系数矩阵的不同:

F(x)=L(x)+i=1mfi(x)fi(x)
因此,当 f(x)=0 x 很接近x时有 F(x)=L(x) ,这个时候高斯牛顿法二次收敛。如果函数 fi 曲率很小或者 |fi| 的值很小,则是超线性收敛,其他情况,我们希望它是线性收敛。

Note: F(x) 的值决定了收敛的速度。

例子3.3 考虑下面的问题,其中 n=1,m=2

f(x)=[x+1γx2+x1]F(x)=12(x+1)2+12(γx2+x1)2

接着:

F(x)=2γ2x3+3γx22(γ1)x
因此 x=0 F 的稳定点,接着:
F(x)=6γ2x2+6γx2(γ1)

这就表明如果 γ<1 ,那么 F(0)>0 ,因此 x=0 是一个局部最小解(更准确的说它是一个全局最小解)。下面在看看雅克比矩阵:
J(x)=[12γx+1]

高斯牛顿方法的迭代步骤:

xk+1=xk2γ2x3k+3γx2k2(γ1)xk2+4γxk+4γ2x2k

如果 γ0 xk 趋近于0则有:
xk+1=xk+(γ1)xk+O(x2k)=γxk+O(x2k)
因此,如果 |γ|<1 则是线性收敛,如果 γ<1 则高斯牛顿法不能找到最小值。例如 γ=2andx0=0.1 其迭代过程很混乱。如下表所示:

k012xk0.10000.30290.1368

最后,如果 γ=0 则有 xk+1=xkxk=0 ,这里一步就找到了解,因为这时 f(x) 退化成线性函数。

例子3.4牛顿迭代法和高斯牛顿法

回想例子1.2, f(x)=0 ,其中 f:RnRn 。如果使用牛顿迭代法去解决这个问题,迭代步骤如下:

J(x)hnr=f(x)x:=x+hnr

高斯牛顿法最小化 F(x)=12fT(x)f(x) 有如下的步骤:

(JT(x)J(x))hgn=JT(x)f(x);x:=x+hgn

这里 J(x) 是方阵,若假设 J(x) 是非奇异的且 (JT(x))1 存在,高斯牛顿方法和牛顿迭代法具有相同的问题。也就是初始解的问题。

3.2 The Levernberg-Marquardt Method

Leverberg-Marquardt Method(LMA)中文称作列文伯格-马夸尔特法,也常被叫做阻尼最小二乘法(damped least-squares method)。常被用来解决非线性最小二乘问题,特别是在最小二乘曲线拟合问题(least squares curve fitting)。LMA算法其实就是下降法与高斯牛顿的结合,当初始解远离真实解时,LMA算法表现的像下降法,当初始解接近真实解时LMA算法表现的像是高斯牛顿法。下面定义了 hlm

(JTJ+μI)hlm=g,withg=JTf,μ0(3.13)

这里, J=J(x),f=f(x) 。其中阻尼参数 μ 的作用如下:

  • 如果 μ0 ,则系数矩阵是正定的,这就保证了 hlm 是下降方向

  • 如果 μ 的值较大我们有

    hlm1uF(x)

也就是在最速下降的方向减少步长,这也说明了如果当前的迭代解如果远离真实解时这是一个很好的确保正确的方法。

  • 如果 μ 是很小的。则有 hlm=hgn ,这对最终的真实解来说是一个很好地迭代步长。这时候如果 F(x)=0 (或者 Fx 非长的小),我们可能得到二次的收敛速度。

这就是阻尼擦数对方向和步长的影响。这也给了我们一个求解的方法,即使不是线性搜索的时候。 μ 值得选择应该与 A0=JT(x)J(x0) 的元素有关,例如让

u0=τmaxia0ii

这里 τ 是用户自定义的(此算法对于 τ 的选取不敏感,但是一般的经验都是使用很小的值,例如如果 x0 很接近真实解时 τ=106 ),否则, τ=103 或者 τ=1 .)。控制 τ 更新的条件是 ρ

ρ=F(x)F(x+hlm)L(0)L(hlm)

其中分母是对线性模型(1.7b)增益的预测

L(0)L(hlm)=hTlm12hTlmJTJhlm=12hTlm(2g+(JTJ+μJμJ)hlm)=12hTlm(μhlmg)

因为 hTlm,hTlmg 都是正的,所以保证了 L(0)L(hlm) 是正的。

如果 ρ 的值很大,说明 L(hhm) 能够很好的近似 F(x+hlm) ,此时我们可以减少阻尼因子 μ ,使得下一次LM步长更加接近高斯牛顿步长。如果 ρ 很小(也有可能是负的),那么 L(hlm) 不能够近似 F(x+hlm) ,此时我们应该增加 μ ,也就是使得 μ=2μ 以此让 μ 更加接近最速下降的方向和减少步长。

算法的停止迭代条件应该反映到全剧最小,我们有 F(x)=g(x)=0 ,因此我们可以使用

gϵ1(3.15a)

其中 ϵ 是用户设定的非常小的正数,另一个判断停止迭代的条件是利用 x 非常小的变换。

xnewxϵ2(x+ϵ2)(3.15b)

这里假设如果 x 趋近于0,当x|Vert大到时 ϵ22 时,这个表达式表示了 x 缓慢的变化。最后在一个有限循环中迭代终止的条件

k>kmax(3.15c)

ϵ2,kmax 都是用户设定的值,$\epsilon_2 \; , k_{max}的作用在于如果

ϵ1 设置的比较小以至于对舍入误差有很大的影响停止迭代,这也表明了 F 的增益也L的增益不一致的情况,也就是说可能出现这么个情况: μ 增加的很快同时 hlm 很小,这时(3.15b)将要起作用。该LM算法总结如下

AlgorithmLevenbergMarquartmethod
begin
k:=0;ν:=2;x:=x0;
A:=JT(x)J(x);g:=JT(x)f(x);
found:=(gϵ1);μ=τmax{aii};
while(notfound)and(k<kmax)
k:=k+1;Solve(A+μI)hlm=g;
ifhlmϵ2(x+ϵ2)
found:=true;
else
xnew:=x+hlm;
ρ:=(F(x)F(xnew))/(L(0)L(hlm));
ifρ>0
x:=xnew;
A:=JT(x)J(x);g:=JT(x)f(x);
found:=(gϵ1);
μ=:μmax{13,1(2ρ1)3};ν:=2;
else
μ:=μν;ν:=2ν;
end

参考文献

[1] Method for non-linear least squares problems. 2nd Edition, April 2004. K.Madsen, H.BNielsen, O.Tingleff.
[2] A Brif Description of the Levenberg-Marquardt Algorithm Implemented by levmar.
[3] 科学计算导论 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值