当前位置: 首页 > news >正文

【高斯拟合最终篇】Levenberg-Marquardt(LM)算法

Levenberg-Marquardt(LM)算法是一种结合高斯-牛顿法和梯度下降法的优化方法,特别适合非线性最小二乘问题,如高斯函数拟合。它通过引入阻尼因子(damping factor)平衡高斯-牛顿法的快速收敛和梯度下降法的稳定性。以下是基于之前的 gaussian_fit.py,加入 LM 算法实现高斯拟合的 Python 示例,包含计算公式、代码和可视化结果,与高斯-牛顿法和梯度下降法的结果对比。


计算公式

高斯函数

高斯函数形式为:
f ( x ; A , μ , σ ) = A exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) f(x; A, \mu, \sigma) = A \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) f(x;A,μ,σ)=Aexp(2σ2(xμ)2)

  • A A A: 幅度,控制曲线高度。
  • μ \mu μ: 均值,控制曲线中心。
  • σ \sigma σ: 标准差,控制曲线宽度。
优化目标

最小化残差平方和:
S ( θ ) = ∑ i = 1 n ( y i − f ( x i , θ ) ) 2 , θ = [ A , μ , σ ] S(\theta) = \sum_{i=1}^n (y_i - f(x_i, \theta))^2, \quad \theta = [A, \mu, \sigma] S(θ)=i=1n(yif(xi,θ))2,θ=[A,μ,σ]

  • y i y_i yi: 观测数据。
  • f ( x i , θ ) f(x_i, \theta) f(xi,θ): 模型预测值。
  • r i = y i − f ( x i , θ ) r_i = y_i - f(x_i, \theta) ri=yif(xi,θ): 残差。
雅可比矩阵

雅可比矩阵 ( J ) 包含高斯函数对参数 θ = [ A , μ , σ ] \theta = [A, \mu, \sigma] θ=[A,μ,σ] 的偏导数:
J = [ ∂ f ( x 1 ) ∂ A ∂ f ( x 1 ) ∂ μ ∂ f ( x 1 ) ∂ σ ⋮ ⋮ ⋮ ∂ f ( x n ) ∂ A ∂ f ( x n ) ∂ μ ∂ f ( x n ) ∂ σ ] J = \begin{bmatrix} \frac{\partial f(x_1)}{\partial A} & \frac{\partial f(x_1)}{\partial \mu} & \frac{\partial f(x_1)}{\partial \sigma} \\ \vdots & \vdots & \vdots \\ \frac{\partial f(x_n)}{\partial A} & \frac{\partial f(x_n)}{\partial \mu} & \frac{\partial f(x_n)}{\partial \sigma} \end{bmatrix} J= Af(x1)Af(xn

http://www.dtcms.com/a/197128.html

相关文章:

  • Java Records:简洁的数据建模新方式
  • 类方法_静态方法_实例方法
  • 算法:分治法
  • Python训练营打卡Day28(2025.5.17)
  • 小白学习java第19天(下):spring
  • css 中 content: “\e6d0“ 怎么变成图标的?
  • 实验八 基于Python的数字图像问题处理
  • JDBC实现模糊、动态与分页查询的详解
  • 论文解读:ICLR2025 | D-FINE
  • LangGraph(四)——加入人机交互控制
  • 开源项目实战学习之YOLO11:12.3 ultralytics-models-sam-encoders.py源码分析
  • DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
  • Vue3——父子组件通信
  • Android7 Input(七)App与input系统服务建立连接
  • 灵光一现的问题和常见错误1
  • 搭建基于Windows平台的http文件服务(miniserve+filebrowser+nssm)
  • Datawhale PyPOTS时间序列5月第3次笔记
  • 湖北理元理律师事务所:债务优化中的双维支持实践解析
  • 一分钟用 MCP 上线一个 贪吃蛇 小游戏(CodeBuddy版)
  • java中的运算符
  • 多线程(4)——线程安全,锁
  • 数学复习笔记 16
  • 在 Linux 上安装 MATLAB:完整指南与疑难解决方案
  • 交流学习 | 江西同为科技有限公司赴海尔总部考察交流
  • Spring源码之解决循环依赖 三级缓存
  • Python二进制运算:高效操作与实用技巧
  • OpenHarmony外设驱动使用 (二),Camera
  • [ctfshow web入门] web118
  • hysAnalyser 从MPEG-TS导出ES功能说明
  • Leaflet使用SVG创建动态Legend