lm算法的实现方法_信赖域算法

lm算法的实现方法_信赖域算法完整文章请查看这里。转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/,并保持文章的完整性。 LM算法可用于解决非线性最小二乘问题。多用于曲线拟合等场合。LM算法的实现并不难,这里不讨论使用MATLAB等工具直接得到结果的过程,使用那些工具对于算法编程能力的提高无任何益处。 LM算法

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

完整文章请查看这里。转载请注明出处:本文来自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://javaforall.net/188864.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 00005__VSCode__xml格式化代码插件

    00005__VSCode__xml格式化代码插件1XML或HTML格式化代码缩进安装插件:Vetur2格式化代码的快捷键如下OnWindows:Shift+Alt+FOnMac:Shift+Option+FOnUbuntu:Ctrl+Shift+I

    2022年7月16日
    28
  • 排查挖矿病毒

    排查挖矿病毒场景最新发现linux服务器一直很卡,导致无法编译和其它相关操作。排查分析经top查看原来是一个叫269的进程一直抢占CPU,占比高达4000%。而该269进程则是挖矿病毒进行高度伪装,即使是kill掉该进程也无济于事,后面又会自动跑起来。top-19:29:19up1:24,2users,loadaverage:41.71,41.75,41.46Tasks:891total,3running,502sleeping,0st..

    2022年6月12日
    36
  • navicat怎么连接远程mysql_navicat可以连接sql server吗

    navicat怎么连接远程mysql_navicat可以连接sql server吗第一,首先能ping通mysql数据库所在的主机。第二,telnetmysql数据库的端口号。如果不行,要在防火墙,高级设置里面,配置入站规则;开放3306端口。第三,如果还不行,结合下面两个网址http://blog.csdn.net/a19881029/article/details/50805562,总结如下:第一步:mysql服务没问

    2022年10月13日
    1
  • Hdu1396「建议收藏」

    Hdu1396「建议收藏」//CountingTriangles/*顶角朝上的三角形:a[i]=a[i-1]+c(i+1,2)(从底边任选两点为正三角形底边)顶角朝下的三角形:b[i]=b[i-1]+c((i+1)/2,2)+c((i+2)/2,2)(因为偶数边长的正三角形和其边长一半的反三角形存在着对应关系,所以将底边所有的点分为两类:奇数和偶数点;再在相应的奇数…

    2022年8月12日
    7
  • STM32—PID控制在直流电机中的应用「建议收藏」

    STM32—PID控制在直流电机中的应用「建议收藏」文章目录一.PID控制算法1.什么是PID2.PID系数的理解Ⅰ.比例(P)部分Ⅱ.积分(I)部分Ⅲ.微分(D)部分3.PID的数字化处理二.位置闭环控制三.速度闭环控制一.PID控制算法1.什么是PIDPID:Proportion-Integral-Differential在过程控制中,我们经常使用的一种算法就是PID算法了,所谓PID控制算法就是对偏差进行比例、积分、微分控制,来使偏差…

    2022年6月5日
    128
  • REPEATER 嵌套

    REPEATER 嵌套http://support.microsoft.com/kb/326338/EN-US/

    2022年7月14日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号