MATLAB--高斯牛顿法
利用高斯牛顿法求解非线性问题,包含了利用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--高斯牛顿法相关推荐
- 高斯牛顿法 matlab代码实现
高斯牛顿法的解释请参见 http://blog.csdn.net/dsbatigol/article/details/12448627 %% Gauss-Newton method clc; clea ...
- 高斯牛顿算法matlab代码,matlab实现高斯牛顿法、Levenberg–Marquardt方法
高斯牛顿法: function [ x_ans ] = GaussNewton( xi, yi, ri) % input : x = the x vector of 3 points % y = th ...
- SLAM从0到1——状态估计之最小二乘问题解法:最速下降法、牛顿法、高斯牛顿法、LM法...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 学习3D视觉核心技术,扫描查看介绍,3天内无条件退款 圈里有高质量教程资料.可答疑解惑.助你高效解决问 ...
- 高斯牛顿法在具体工程中的应用——C++版
高斯牛顿法在具体工程中的应用--C++版 说明:本文章没有用大量篇幅来讲述高斯牛顿的原理和数学中的应用,而是用具体的代码来说明,具体是怎么应用的. 如果对高斯牛顿法的原理比较感兴趣,可以阅读以下链接中 ...
- 牛顿法、梯度下降法、高斯牛顿法、Levenberg-Marquardt算法
何为梯度? 一般解释: f(x)在x0的梯度:就是f(x)变化最快的方向 举个例子,f()是一座山,站在半山腰, 往x方向走1米,高度上升0.4米,也就是说x方向上的偏导是 0.4 往y方向走1米,高 ...
- 漫步最优化三十四——高斯-牛顿法
你的温柔像羽毛,\textbf{你的温柔像羽毛,} 秘密躺在我怀抱.\textbf{秘密躺在我怀抱.} 你的微笑像拥抱,\textbf{你的微笑像拥抱,} 只有我能看到.\textbf{只有我能看到. ...
- 牛顿法和高斯牛顿法对比
文章目录 一.非线性最小二乘 一.牛顿法 二.高斯牛顿法 三.列文伯格-马夸尔特法(LM) 四.ceres求解优化问题 一.非线性最小二乘 考虑最小二乘函数F(x), 其等于: 通过求F(x)导数为零 ...
- matlab解决阻尼牛顿,matlab阻尼牛顿法例题
<matlab阻尼牛顿法例题>由会员分享,可在线阅读,更多相关<matlab阻尼牛顿法例题(2页珍藏版)>请在人人文库网上搜索. 1.精品文档. Use damped Newt ...
- 高斯牛顿法去畸变(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), 求无 ...
- 最优化八:高斯牛顿法、LM法
梯度法:,负梯度方向 牛顿法:,A为Hession矩阵 高斯牛顿法:,为的解 LM法:,为的解 1 高斯牛顿法(Gauss-Newton) 针对优化问题求解x使得f(x)取得最小值,采用高斯牛顿法,步 ...
最新文章
- 美国国家政策基金会:美国科技秘密武器来自中国和印度
- ThreadPoolExecutor使用详解
- 信息奥赛一本通(1231:最小新整数)
- 数据结构之栈的应用(语法匹配)
- 其实,API 编程并不难!
- 蓝桥杯 BASIC-4 基础练习 数列特征
- .atitit.web 推送实现解决方案集合(3)----dwr3 Reverse Ajax
- Bing翻译接口(V3版本)
- Anylogic学习--------------三维窗口
- 打包工具SetupFactory 9 的使用
- Python3.GrADS的二进制码数据
- Inno Setup打包的exe程序加上【unins.exe】卸载程序
- 怎么把腾讯视频qlv格式转换成mp4视频
- html5 做屏幕保护效果,电脑屏保制作软件如何制作屏保 及如何设置屏幕保护
- linux网络适配器驱动程序怎么安装,网络适配器怎么修复_如何修复网络适配器
- 计算机主机制造过程,电脑宣传片的制作流程
- LOGO创意-IT行业-随记
- Adding Animations之Zooming a View
- JAVA合并pdf,拆分pdf文档
- Android---AndroidX
热门文章
- Java中继承方法的使用,以及使用方法的注意事项,继承方法重写的理解,白话文详解,简单易理解
- 地脚螺钉直径系列_干数控这么久,现在才分清楚螺栓、螺钉、螺柱的区别
- java点名程序界面设计_用Java语言编写一个班级点名的程序
- 运用集合把文字写入读出文件
- 基于FormsAuthentication的用户、角色身份认证
- C#读写日志文本文件
- Kettle处理300万条数据-问题整理
- Oracle队列锁enq:TS,Temporary Segment (also TableSpace)
- LeetCode - Duplicate Emails
- 【ASP.NET Web API教程】1 ASP.NET Web API入门