Levenberg–Marquardt算法

本文介绍了Levenberg-Marquardt算法,一种用于非线性最小二乘问题的优化方法。文章详细阐述了算法的描述、在Matlab中的实现以及在不同场景下的应用案例。通过实例展示了在Matlab中使用lsqnonlin函数进行非线性数据拟合,并探讨了带边界条件的优化问题。此外,还提到了算法在cirrus cloud ice water content retrieval中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Levenberg-Marquardt 算法

最优估计算法中通常的做法都是写一个代价函数,并迭代计算最小化代价函数。
解决非线性最小二乘问题的方法有高斯牛顿法等,下面介绍Levenberg-Marquardt 算法:

1. 算法描述

以下引用自维基百科

问题描述

假设 f {\displaystyle f} f是一个从 ℜ m → ℜ n {\displaystyle \Re ^{m} \rightarrow \Re ^{n}} mn 的非线性映射,也就是说 P ∈ ℜ m {\displaystyle \mathbf {P} \in \Re ^{m}} Pm X ∈ ℜ n {\displaystyle \mathbf {X} \in \Re ^{n}} Xn 那么:
f ( P ) = X {\displaystyle f(\mathbf {P} )=\mathbf {X} } f(P)=X

而我们的目的就是希望任意给定一个 x {\displaystyle \mathbf {x} } x 以及合理的初始值 p 0 {\displaystyle \mathbf {p} _{0}} p0 ,我们能找到一个 p + {\displaystyle \mathbf {p}^{+}} p+,使得 ϵ T ϵ {\displaystyle \mathbf {\epsilon } ^{T}\mathbf {\epsilon } } ϵTϵ 尽量小(局部极小),其中 ϵ = f ( p + ) − x {\displaystyle \mathbf {\epsilon } =f(\mathbf {p} ^{+})-\mathbf {x} } ϵ=f(p+)x

解法

像大多数最小化的方法一样,这是一个迭代的方法。首先根据泰勒展开式我们能把 f ( p + δ p ) {\displaystyle f(\mathbf {p} +\mathbf {\delta _{p}} )} f(p+δp)写为下面的近似,这有两个好处:第一是线性、第二是只需要一阶微分。

f ( p + δ p ) ≈ f ( p ) + J δ p {\displaystyle f(\mathbf {p} +\mathbf {\delta _{p}} )\approx f(\mathbf {p} )+\mathbf {J\delta _{p}} } f(p+δp)f(p)+Jδp

其中 J \mathbf {J} J f f f 的雅可比矩阵。对于每次的迭代我们这么做:假设这次 iteration 的点是 p k {\mathbf {p}}_{k} pk,我们要找到一个 ∣ x − f ( p + δ p , k ) ∣ ≈ ∣ x − f ( p ) − J δ p , k ∣ = ∣ ϵ k − J δ p , k ∣ |{\mathbf {x}}-f({\mathbf {p}}+{\mathbf {\delta }}_{ { {\mathbf {p}},k}})|\approx |{\mathbf {x}}-f({\mathbf {p}})-{\mathbf {J{\mathbf {\delta }}_{ { {\mathbf {p}},k}}}}|=|{\mathbf {\epsilon }}_{ {k}}-{\mathbf {J{\mathbf {\delta }}_{ { {\mathbf {p}},k}}}}| xf(p+δp,k)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值