完整文章请查看这里。转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/,并保持文章的完整性。

LM算法可用于解决非线性最小二乘问题。多用于曲线拟合等场合。

LM算法的实现并不难,这里不讨论使用MATLAB等工具直接得到结果的过程,使用那些工具对于算法编程能力的提高无任何益处。

LM算法的关键是用模型函数 f 对待估参数向量p在其领域内做线性近似,忽略掉二阶以上的导数项,从而转化为线性最小二乘问题,它具有收敛速度快等优点。

LM算法需要对每一个待估参数求偏导,所以,如果你的拟合函数 f 非常复杂,或者待估参数相当地多,那么就不适合使用LM算法了,可以使用Powell算法,Powell算法不需要求导。

对于急需自己编程(VC)用LM算法解决一些问题的朋友,如果你的数学几乎都忘了,那么你还是多请教一下自己的朋友吧,要不然连函数的偏导数都不记得怎么求了,是写不出代码的。

网上有很多LM算法的示例程序,但是如果你不理解这个算法的过程,要想看懂它们,很难。而且要对自己定义的函数使用LM算法,更加应该明白该算法的原理。

有一篇很不错的文章,解释了如何实现LM算法:http://www.ics.forth.gr/~lourakis/levmar/levmar.pdf

用Google搜索“Levenberg-Marquardt”,会有很多资料可参考。有一些现成的库也可以使用,不过,到你弄明白怎么用的时候,你都能够自己写出完整的代码了。当初我对LM也是很困惑,一直没弄清它的原理,网上的示例我怎么都用不对,后来一怒之下不再看网上的sample code,重新回到理论上,后来终于弄明白了,于是自己写出了完整的LM实现代码。

需要说明的是,这是非线性无约束的问题,如果待估参数是有约束的(例如参数在某一范围内变动),要想用在LM算法中,我还不知道怎样做,但是这一个帖子或许能给你一些启示(我尚未试验):http://www.numerical-recipes.com/forum/showthread.php?threadid=179

最后,不得不说的就是,LM算法并非许多人刚接触时想像的那般难,当你了解了过程之后,你就会觉得它很有意思。希望所有在学习它的朋友们都能成功。

转载自:https://blog.csdn.net/learnhard/article/details/1733843#commentBox

[转载]LM算法的实现相关推荐

  1. [原创]LM算法的实现

    完整文章请查看这里.转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/,并保 ...

  2. 7个重要内排序算法的实现以及实验比较

    本代码片段对7个内排序算法作出实现与比较,复制粘贴代码即可编译运行 其中,最需要一定掌握的是快速排序,请一定要记得快速排序的代码shi'xi /************************ 内排序 ...

  3. 简单分析Guava中RateLimiter中的令牌桶算法的实现

    为什么80%的码农都做不了架构师?>>>    令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法.典型情况下,令 ...

  4. Bug2算法的实现(RobotBASIC环境中仿真)

    移动机器人智能的一个重要标志就是自主导航,而实现机器人自主导航有个基本要求--避障.之前简单介绍过Bug避障算法,但仅仅了解大致理论而不亲自动手实现一遍很难有深刻的印象,只能说似懂非懂.我不是天才,不 ...

  5. 【分布式ID】理解Snowflake算法的实现原理

    1.概述 转载:冷饭新炒:理解Snowflake算法的实现原理 我上次也看了一个视频讲解:[分布式ID]键高并发 分布式 全局唯一 ID 雪花算法 snowflake 2.前提# Snowflake( ...

  6. 计算机LCG/PCG/MWC/XorShift等PRNG算法,以及V8中Math.random()、webkit中crypto等随机算法的实现

    计算机LCG/PCG/MWC/XorShift等PRNG算法,以及V8中Math.random().webkit中crypto等随机算法的实现 本文篇幅较长,如想直接看 js 的随机数实现可定位本文E ...

  7. 红包的分配算法php,php仿微信红包分配算法的实现方法,红包算法

    php仿微信红包分配算法的实现方法,红包算法 本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @para ...

  8. python 推荐系统算法,Python用户推荐系统minkowski算法的实现

    Python用户推荐系统minkowski算法的实现 #-*- coding: utf-8 -*- ''' python: www.iplaypy.com @author: Jekey 欧几里得距离 ...

  9. 彩票软件中热温冷算法的实现情况

    彩票软件中热温冷算法的实现情况 Delphi / Windows SDK/API http://www.delphi2007.net/DelphiDB/html/delphi_200612251912 ...

最新文章

  1. Jupyter 环境配置
  2. python namedtuple (命名元组)用法详解
  3. linux smb 所有者,python-3.x - 在Linux上使用python从smb共享中获取文件的所有者。 - SO中文参考 - www.soinside.com...
  4. 产品经理经验谈100篇(二)-数据分析应用,如何构建指标体系?
  5. 7价 半导体掺杂_模电总结第一章:常用半导体器件
  6. C++基础 ----- 文件操作
  7. php网址图片怎么转based4,Ionic4 Base64 转化成图片插件-Base64 转化成图片Base64 To Gallery - Ionic Native...
  8. uniapp 日期插件_日期时间选择器
  9. iphone12是双卡双待吗
  10. office 2010 word文档,插入复选框,方框打勾(打对号)的方法
  11. 植物大战僵尸辅助之重叠植物
  12. 3.8 js过渡效果
  13. 《计算机工程》期刊投稿经验分享
  14. 操作系统基础(八)快表和多级页表
  15. swal 弹窗html页面,SweetAlert - 演示6种不同的提示框效果
  16. RabbitMQ的四种交换机模式
  17. one 主格 复数 宾格_数字 主格宾格复数所有格
  18. 详解 PerformanceResourceTiming API,咦,这货真的干!
  19. Adobe Photoshop CC 2018之ps钢笔工具抠图(☆☆☆)
  20. 中国未来只有三种人:资源者、配置者、投资人

热门文章

  1. CentOS 7安装TigerVNC Server
  2. 分布式面试 - 如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?
  3. OSPF工作机制——OSPF邻居状态机详解(附图)
  4. 【Python】实现输出成绩最高或最低分的学生姓名以及低于平均分的学生姓名
  5. 【HTML】获取当前时间并显示在网页上
  6. 【Python爬虫】Scrapy爬虫框架
  7. C#LeetCode刷题之#11-盛最多水的容器(Container With Most Water)
  8. chrome 全屏截图_如何在不带扩展功能的Chrome中拍摄全屏截图
  9. 使用Sci-kit学习和XGBoost进行多类别分类:使用Brainwave数据的案例研究
  10. java final char_java基本数据类型总结 类型转换 final关键字的用法