微信公众号:创享日记
发送:高斯牛顿
获取完整报告(含源程序代码)


一、问题的提出
在日常生活和科学研究中,人们经常会遇到这样一类问题:在某些条件下,寻求某一数量指标的最大或最小值。例如:在资源有限的情况下,制造尺寸最大的箱子;如何根据手中的资金情况确定收益最大的投资方向等等。这类问题用数学语言描述就是函数的最值问题,也称为最优化问题。

优化问题的一个重要应用就是数据拟合问题。数据拟合问题需要消除误差或忽略无关细节,从干扰数据中提取信号或找出趋势,将大量数据降低到可管理的数量或用简单的近似来代替复杂函数。完成这个工作的最普遍和最便于计算的方法之一就是最小二乘法。

最小二乘法是从误差拟合角度对回归模型进行参数估计或系统辨识,并在参数估计、系统辨识以及预测、预报等众多领域中得到极为广泛的应用。当我们用一个模型来描述现实中的一系列数据时,模型的预测结果与实际的测量结果总会存在一定偏差,这一偏差就称为残差。非线性最小二乘的目的就是,调整模型的参数,使得总的残差最小。常用的算法有两类,一类是搜索算法,另一类是迭代算法。本报告中采用迭代算法。

在实际生产生活中,非线性最小二乘问题的求解方法在生物、医药、电子、化学、计算机科学等领域有广泛应用。

二、问题的分析
当处理最优化问题时,若f为关于x的线性函数,通常通过对函数直接求导求得函数的全局最优解;而若f为x的非线性函数,则无法直接对函数求导以及准确求得函数的全局最优解,因此只能通过求目标函数的局部最小值,并且尝试从局部最小值拓展到全局最小值。局部最小值的求解过程中需要涉及到驻点以及目标函数的一、二阶导数,故可将该问题转化为多元函数的极值问题。

非线性最小二乘法的原理如下:
有一个未知量x∈R^n,为估计该未知量,我们进行m次观测。根据观测到的数据(t_i,y_i) (i=1,…,m)来拟合一个已知函数y=f(x,t),其中x为待定系数,且x=(x_1,x_2,…,x_n)(n≤m)。第i次观测的理论模型可用已知函数f_i:R^n→R来描述,而第i次观测的实际值为y_i∈R,i=1,…,m。我们称
r_i (x)=r_i (x,t_i)=y_i-f_i (x,t_i)(1)
为第i次观测的残差。
给定式(1)的数学模型,在工程上,求x的估计量 的一个常用准则是最小二乘准则。该准则认为,使得所有观测的残差的平方和最小的 是最优的。
我们可以将m个残差写成向量形式
r(x)=[r_1 (x),r_2 (x),…,r_m (x)]^T(2)
此时,所有观测的残差的平方和可以写成式(3)

对于非线性最小二乘问题,一般有LM法、信赖域方法、梯度下降法、高斯牛顿法等处理方法。在本文中,主要采用高斯牛顿法研究非线性最小二乘问题。

三、高斯-牛顿算法
3.1算法的原理
高斯-牛顿算法是非线性回归模型中求回归参数进行最小二乘的一种迭代方法,其基本思想是使用泰勒级数展开式近似地代替非线性回归模型,然后通过多次迭代,多次修正回归系数,使回归系数不断逼近非线性回归模型的最佳回归系数,最后使原模型的残差平方和达到最小。其直观思想是先选取一个参数向量的参数值x,若函数f(x,t)在x_0附近有连续二阶偏导数,则在x_0的邻域内可近似地将f(x,t)看作是线性,因而可近似地用线性最小二乘法求解。
假定在第k次迭代后,将残差函数向量r(x)在x^((k))进行一阶泰勒展开,得到r(x)的线性近似

其中,∆x((k))=(x((k))-x)为第k次迭代后的估计误差

是雅可比矩阵(Jacobian matrix)。
于是根据式(3),最小二乘最小化的目标函数可以近似为

利用经典的线性最小二乘问题的结论,可得上式的极值点(即第(k+1)次迭代后的最优解)为


接下来再对经典的线性最小二乘问题做一个简要的介绍。线性最小二乘是一种求解线性系统参数的方法,即参数估计的方法。它的特点是需要已知参数与观察量之间的线性函数关系并且存在多余观测。
线型函数关系是指对于一个参数估计问题,我们往往不能直接获得想要的参数值,需要通过间接观测的方式去反向求解。为此,我们总是建立我们想要求解的参数X与我们易于观测量Y之间的函数关系
F(X)=Y (8)
通过已知的Y和已知的函数关系F(X),反推出X的值。
当我们已知的这个函数关系是线性的时候,我们可以化简为
AX=Y (9)
其中A是参数X与观测Y之间的线性函数关系(线性运算(乘和加)可以由矩阵A表示)。因此,若已知观测Y和线性关系A,则可求解代求参数X。
多余观测是指除了能唯一确定某个几何或物理模型的必要观测之外的其余观测值。当存在多余观测时,无法简单对矩阵A求逆,为更加准确地求出参数X,可以借助最小二乘来求解此类问题。
解决线性最小二乘问题三种常见直接算法:正规方程、QR分解和SVD分解。一般来说,正规方程是最快的,特别是当A的条件数较小时,正规方程几乎和其他方法一样精确。SVD分解最慢,但最可靠。

3.2算法的实现
本文采用MATLAB实现高斯-牛顿算法。
依靠《随机过程》课堂中老师对MATLAB的讲解,同时借助《信号与系统》课程的实验部分学习及网上MATLAB相关教程对MATLAB算法有一定的了解。主要学习了解了本实验中会涉及的MATLAB知识,如:矩阵相关运算,系统预定义的变量eps,图形绘制功能等。
在计算机中实现高斯-牛顿算法时,我们需要给定以下输入:
①残差向量函数r ②雅可比矩阵函数J ③允许的最大迭代次数K
④能够接受的误差阈值ϵ ⑤未知参数初始值x(0)
具体算法基本步骤如下:

应用实例
实例:设一噪声模型形如y=e(ax2+bx+c)+l,其中l为噪声,a、b、c为待解算系数。
具体代码见附录(详见报告)。
其中给定a=1,b=2,c=3;最大迭代次数K为1000;
残差函数向量为

雅可比矩阵函数为

代码运行后结果如下:

噪声模型拟合曲线如下图:

​参考文献及附录程序代码详见报告!

科学计算与仿真-高斯牛顿法的非线性最小二乘问题简单介绍与应用相关推荐

  1. 非线性最小二乘问题的高斯-牛顿算法

    @非线性最小二乘问题的高斯-牛顿算法 非线性最小二乘与高斯-牛顿算法 开始做这个东西还是因为学校里的一次课程设计任务,找遍了全网好像也没有特别好用的,于是就自己写了一个.仅供参考. 首先,介绍下非线性 ...

  2. SLAM从0到1——状态估计之最小二乘问题解法:最速下降法、牛顿法、高斯牛顿法、LM法...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 学习3D视觉核心技术,扫描查看介绍,3天内无条件退款 圈里有高质量教程资料.可答疑解惑.助你高效解决问 ...

  3. 曲线拟合(高斯牛顿法,Ceres,g2o)

    实践:曲线拟合问题 我们先通过高斯牛顿法来求解最小二乘问题,然后介绍使用优化库(Ceres/g2o)来求解此问题. 例题: 考虑一条满足如下方程的曲线: y = exp(ax2x^2x2+ bx + ...

  4. 牛顿法,高斯-牛顿法

    牛顿法(Newton's method) 假如已知函数 f(x)f(x)f(x),想要求 f(x)=0f(x)=0f(x)=0 的解(或者叫根). 牛顿法(Newton's method)大致的思想是 ...

  5. Python科学计算:用NumPy快速处理数据

    你好,我是悦创. 我来分享一下数据分析中 Numpy 库的使用,本文内容较多,不可能每段代码的输出过程.输出结果分析这显然工作量不是一点点.但我都结合了大量的代码块,希望小伙伴动手运行代码并分析所得到 ...

  6. 漫步最优化三十四——高斯-牛顿法

    你的温柔像羽毛,\textbf{你的温柔像羽毛,} 秘密躺在我怀抱.\textbf{秘密躺在我怀抱.} 你的微笑像拥抱,\textbf{你的微笑像拥抱,} 只有我能看到.\textbf{只有我能看到. ...

  7. 非线性最小二乘通俗易懂解释

    转https://www.cnblogs.com/leexiaoming/p/7257198.html备份用 1. 非线性最小二乘介绍 1.1. 最小二乘问题回顾: 在上一篇博客中我们知道最小二乘问题 ...

  8. 透彻理解SLAM中的非线性最小二乘问题

    下面是我从yuque复制过来的,格式有些问题,需要的可以直接看我笔记原文: https://www.yuque.com/docs/share/61fb4428-e631-4b96-b531-b3b09 ...

  9. 算法解析:非线性最小二乘问题

    本篇博客期望通过下降法和信任区域法引出高斯牛顿和LM两种常用的非线性优化方法.博客中主要内容为: 非线性最小二乘介绍: 下降法相关理论(Desent Method); 信任区域理论(Trust Reg ...

  10. MindSpore Science科学计算行业套件——MindSpore Elec电磁仿真套件

    当前多种算力正在激发跨领域的应用融合,AI已经成为研究科学计算的新范式.因此我们将MindSpore拓展到科学计算领域.通过多尺度混合计算和高阶混合微分两大关键创新,将MindSpore原有的AI计算 ...

最新文章

  1. node.js之path模块的使用
  2. Java设计模式 - 单例模式详解(下)
  3. 《神经网络:回到未来》(Neural Nets Back to the Future)-ICML 2016
  4. HiveQL: 数据操作
  5. 一文教你如何在生产环境中在Kubernetes上部署Jaeger
  6. UVA-10817- Headmaster's Headache(状压DP)
  7. win11系统txt文件怎么加密 windows11txt文件加密的解决方法
  8. 63. windows php 加载不了 curl
  9. 使用js实现预览上传的图片
  10. python有趣小程序春节祝福-Python自动回复微信好新年祝福
  11. 百度世界大会全新打开方式!VR会场“希壤”上线
  12. HTML5 canvas 中的 fillstyle fillrect strokeStyle strokeRect fill stroke rect 的简单理解
  13. 淘宝电商用户行为数据分析及可视化—基于MySQL/Tableau/PPT(含分析报告及代码)
  14. 亚马逊6页纸开会方法!
  15. python、pandas、Excel、Powerbi中对日期的处理方法
  16. 电大计算机应用基础期末考试题,电大计算机应用基础模拟题答案.docx
  17. 教你几个提升网站快速排名的好方法
  18. 环信IM快速集成集成,实现客服功能(单聊)
  19. 华为笔试题 linux c,华为C/C++笔试题 2
  20. 修复无限网卡驱动报错:windows仍在设置此设备的类配置(代码56)

热门文章

  1. 老妈叫下广场舞视频,想用python转换下视频格式flv转换为mp4
  2. root 红米note5_小米 红米NOTE5_刷机助手root-Android手机一键ROOT工具 - 线刷宝官网...
  3. 阿铭Linux_网站维护学习笔记20190304
  4. 【MMD动作+镜头】Bo Peep Bo Peep
  5. Emmagee性能测试小工具
  6. Java判断文件编码
  7. Android 特效直播实现原理解析
  8. 蚂蚁金服测试开发工程师面试
  9. wifi信号强度测试软件 mac,Wifi Signal Strength for Mac(无线WiFi信号强度统计软件)
  10. 冲压工艺中常见的问题,值得收藏