利用高斯牛顿法求解非线性问题,包含了利用LDLT分解法求解Ax=b的方程:

clear all;
clc
%%演示牛顿高斯法--非线性优化%真实值
ar = 1.0;
br = 2.0;
cr = 1.0;
x = 1:2:100;
x = x./100;
nosie = 0.9*randn(1,size(x,2));%产生高斯噪音
y_real = exp(ar*x.^2+br*x+cr)+nosie;%估计初始值
ae = 2.0;
be = 4.0;
ce = 3.0;
itr = 20;%迭代次数
num_itr = 0;%初始迭代次数
esp = 0.01;
%构造函数f(a,b,c)
syms x_ a b c;
arg = [a;b;c];
f(a,b,c,x_) = exp(a*x_.^2+b*x_+c);
Jacobi = jacobian(f,arg);
%高斯牛顿法
last_cost = 0;
for i=1:itrH = 0;b = 0;cost = 0;J = [0 0 0];for j = 1:size(x,2)error = y_real(j)-f(ae,be,ce,x(j));%雅可比矩阵J(1) = -x(j)^2*exp(ae*x(j)^2 + be*x(j) + ce);J(2) =  -x(j)*exp(ae*x(j)^2 + be*x(j) + ce);J(3) = -exp(ae*x(j)^2 + be*x(j) + ce);%用MATLAB库函数求出的Jacobian%J_ = -Jacobi(ae,be,ce,x(j));%因为y_real(j)-f(ae,be,ce,x(j)),所以要添个负号%for k=1:3%   J(k) = J_(k);%endH = H + J'*J;b = b+ -J'*error;cost = cost + error^2;end%结束条件if abs((cost-last_cost)/cost)<espbreakendnum_itr = i;last_cost = cost;fprintf('%d,%f\n',i,cost);%ldlt分解求解dx[L,D] = ldl(H);bH = sum(b,2);dx = L'\(D\(L\bH));%矩阵直接求逆求解dx%dx = H^-1*b;ae = vpa(ae+dx(1),2);%放低精度,加快运算速度be = vpa(be+dx(2),2);ce = vpa(ce+dx(3),2);
end
plot(x,f(ae,be,ce,x));
hold on;
grid on;
scatter(x,y_real,100,'black','.');
fprintf('迭代次数为:%d\n',num_itr);

运行结果:

MATLAB--高斯牛顿法相关推荐

  1. 高斯牛顿法 matlab代码实现

    高斯牛顿法的解释请参见 http://blog.csdn.net/dsbatigol/article/details/12448627 %% Gauss-Newton method clc; clea ...

  2. 高斯牛顿算法matlab代码,matlab实现高斯牛顿法、Levenberg–Marquardt方法

    高斯牛顿法: function [ x_ans ] = GaussNewton( xi, yi, ri) % input : x = the x vector of 3 points % y = th ...

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

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

  4. 高斯牛顿法在具体工程中的应用——C++版

    高斯牛顿法在具体工程中的应用--C++版 说明:本文章没有用大量篇幅来讲述高斯牛顿的原理和数学中的应用,而是用具体的代码来说明,具体是怎么应用的. 如果对高斯牛顿法的原理比较感兴趣,可以阅读以下链接中 ...

  5. 牛顿法、梯度下降法、高斯牛顿法、Levenberg-Marquardt算法

    何为梯度? 一般解释: f(x)在x0的梯度:就是f(x)变化最快的方向 举个例子,f()是一座山,站在半山腰, 往x方向走1米,高度上升0.4米,也就是说x方向上的偏导是 0.4 往y方向走1米,高 ...

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

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

  7. 牛顿法和高斯牛顿法对比

    文章目录 一.非线性最小二乘 一.牛顿法 二.高斯牛顿法 三.列文伯格-马夸尔特法(LM) 四.ceres求解优化问题 一.非线性最小二乘 考虑最小二乘函数F(x), 其等于: 通过求F(x)导数为零 ...

  8. matlab解决阻尼牛顿,matlab阻尼牛顿法例题

    <matlab阻尼牛顿法例题>由会员分享,可在线阅读,更多相关<matlab阻尼牛顿法例题(2页珍藏版)>请在人人文库网上搜索. 1.精品文档. Use damped Newt ...

  9. 高斯牛顿法去畸变(C++实现)

    1. 背景 在实际三维重建时,通常会遇到如下问题: 已知有畸变的点坐标x′,y′x',y'x′,y′,已知畸变模型f(x,y),g(x,y)f(x,y),g(x,y)f(x,y),g(x,y), 求无 ...

  10. 最优化八:高斯牛顿法、LM法

    梯度法:,负梯度方向 牛顿法:,A为Hession矩阵 高斯牛顿法:,为的解 LM法:,为的解 1 高斯牛顿法(Gauss-Newton) 针对优化问题求解x使得f(x)取得最小值,采用高斯牛顿法,步 ...

最新文章

  1. 美国国家政策基金会:美国科技秘密武器来自中国和印度
  2. ThreadPoolExecutor使用详解
  3. 信息奥赛一本通(1231:最小新整数)
  4. 数据结构之栈的应用(语法匹配)
  5. 其实,API 编程并不难!
  6. 蓝桥杯 BASIC-4 基础练习 数列特征
  7. .atitit.web 推送实现解决方案集合(3)----dwr3 Reverse Ajax
  8. Bing翻译接口(V3版本)
  9. Anylogic学习--------------三维窗口
  10. 打包工具SetupFactory 9 的使用
  11. Python3.GrADS的二进制码数据
  12. Inno Setup打包的exe程序加上【unins.exe】卸载程序
  13. 怎么把腾讯视频qlv格式转换成mp4视频
  14. html5 做屏幕保护效果,电脑屏保制作软件如何制作屏保 及如何设置屏幕保护
  15. linux网络适配器驱动程序怎么安装,网络适配器怎么修复_如何修复网络适配器
  16. 计算机主机制造过程,电脑宣传片的制作流程
  17. LOGO创意-IT行业-随记
  18. Adding Animations之Zooming a View
  19. JAVA合并pdf,拆分pdf文档
  20. Android---AndroidX

热门文章

  1. Java中继承方法的使用,以及使用方法的注意事项,继承方法重写的理解,白话文详解,简单易理解
  2. 地脚螺钉直径系列_干数控这么久,现在才分清楚螺栓、螺钉、螺柱的区别
  3. java点名程序界面设计_用Java语言编写一个班级点名的程序
  4. 运用集合把文字写入读出文件
  5. 基于FormsAuthentication的用户、角色身份认证
  6. C#读写日志文本文件
  7. Kettle处理300万条数据-问题整理
  8. Oracle队列锁enq:TS,Temporary Segment (also TableSpace)
  9. LeetCode - Duplicate Emails
  10. 【ASP.NET Web API教程】1 ASP.NET Web API入门