高斯牛顿法:

function [ x_ans ] = GaussNewton( xi, yi, ri)
% input : x = the x vector of 3 points
% y = the y vector of 3 points
% r = the radius vector of 3 circles
% output : x_ans = the best answer
% set up r equations
r1 = @(x, y) sqrt((x-xi(1))^2+(y-yi(1))^2) - ri(1);
r2 = @(x, y) sqrt((x-xi(2))^2+(y-yi(2))^2) - ri(2);
r3 = @(x, y) sqrt((x-xi(3))^2+(y-yi(3))^2) - ri(3);
% set up Dr matrix
Dr = @(x) [(x(1) - xi(1))/(sqrt((x(1) - xi(1))^2+(x(2)-yi(1))^2)), (x(2) - yi(1))/(sqrt((x(1) - xi(1))^2+(x(2)-yi(1))^2));
(x(1) - xi(2))/(sqrt((x(1) - xi(2))^2+(x(2)-yi(2))^2)), (x(2) - yi(2))/(sqrt((x(1) - xi(2))^2+(x(2)-yi(2))^2));
(x(1) - xi(3))/(sqrt((x(1) - xi(3))^2+(x(2)-yi(3))^2)), (x(2) - yi(3))/(sqrt((x(1) - xi(3))^2+(x(2)-yi(3))^2))];
% set up r matrix
r = @(x) [r1(x(1), x(2)); r2(x(1), x(2)); r3(x(1), x(2))];
x0 = [0, 0]; % initial guess
while 1
A = Dr(x0);
v0 = (A' * A) \ (- A' * r(x0));
x1 = x0 + v0';
if norm(x1-x0)<1e-6 % break squest
break;
end
x0 = x1;
end
x_ans = x1;
end

Levenberg–Marquardt方法:

function [ x_ans ] = LeveMarq( ti, yi, x_guess, lmd)
% input : t = the x vector of 5 points
% y = the y vector of 5 points
% x_guess = the guess vector of x_ans
% output : x_ans = the best answer
% set up r matrix
r = @(x) [x(1) * exp(-x(2)*(ti(1) - x(3))^2) - yi(1);
x(1) * exp(-x(2)*(ti(2) - x(3))^2) - yi(2);
x(1) * exp(-x(2)*(ti(3) - x(3))^2) - yi(3);
x(1) * exp(-x(2)*(ti(4) - x(3))^2) - yi(4);
x(1) * exp(-x(2)*(ti(5) - x(3))^2) - yi(5)];
% set up Dr matrix
Dr = @(x) [exp(-x(2)*(ti(1)-x(3))^2), -x(1)*(ti(1)-x(3))^2*exp(-x(2)*(ti(1)-x(3))^2), 2*x(1)*x(2)*(ti(1)-x(3))*exp(-x(2)*(ti(1)-x(3))^2);
exp(-x(2)*(ti(2)-x(3))^2), -x(1)*(ti(2)-x(3))^2*exp(-x(2)*(ti(2)-x(3))^2), 2*x(1)*x(2)*(ti(2)-x(3))*exp(-x(2)*(ti(2)-x(3))^2);
exp(-x(2)*(ti(3)-x(3))^2), -x(1)*(ti(3)-x(3))^2*exp(-x(2)*(ti(3)-x(3))^2), 2*x(1)*x(2)*(ti(3)-x(3))*exp(-x(2)*(ti(3)-x(3))^2);
exp(-x(2)*(ti(4)-x(3))^2), -x(1)*(ti(4)-x(3))^2*exp(-x(2)*(ti(4)-x(3))^2), 2*x(1)*x(2)*(ti(4)-x(3))*exp(-x(2)*(ti(4)-x(3))^2);
exp(-x(2)*(ti(5)-x(3))^2), -x(1)*(ti(5)-x(3))^2*exp(-x(2)*(ti(5)-x(3))^2), 2*x(1)*x(2)*(ti(5)-x(3))*exp(-x(2)*(ti(5)-x(3))^2)]; x0 = x_guess; % initial guess
while 1
A = Dr(x0);
M_A = A' * A + lmd .* diag(diag(A' * A));
M_b = - A' * r(x0);
v0 = M_A \ M_b;
x1 = x0 + v0';
if norm(x1-x0)<1e-6 % break squest
break;
end
x0 = x1;
end
x_ans = x1;
end

matlab实现高斯牛顿法、Levenberg–Marquardt方法的更多相关文章

  1. 【math】梯度下降法(梯度下降法,牛顿法,高斯牛顿法,Levenberg-Marquardt算法)

    原文:http://blog.csdn.net/dsbatigol/article/details/12448627 何为梯度? 一般解释: f(x)在x0的梯度:就是f(x)变化最快的方向 举个例子 ...

  2. MATLAB中多行注释的三种方法

    MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...

  3. 梯度下降法、牛顿法、高斯牛顿法、LM最优化算法

    1.梯度下降法 2.牛顿法 3.高斯牛顿法 4.LM算法

  4. MATLAB(1)——基本调试方法(Debug)

    作者:桂. 时间:2017-02-28  07:06:30 链接:http://www.cnblogs.com/xingshansi/articles/6477185.html 声明:转载请注明出处, ...

  5. MATLAB读取写入文本数据最佳方法 | Best Method for Loading & Saving Text Data Using MATLAB

    MATLAB读取文件有很多方法.然而笔者在过去进行数据处理中,由于函数太多,相互混杂,与C#,Python等语言相比,反而认为读取文本数据比较麻烦.C#和Python等高级语言中,对于大部分的文本数据 ...

  6. matlab实现共轭梯度法、多元牛顿法、broyden方法

    共轭梯度法: function [ x, r, k ] = CorGrant( x0, A, b ) x = x0; r = b - A * x0; d = r; X = ones(length(x) ...

  7. matlab练习程序(高斯牛顿法最优化)

    计算步骤如下: 图片来自<视觉slam十四讲>6.2.2节. 下面使用书中的练习y=exp(a*x^2+b*x+c)+w这个模型验证一下,其中w为噪声,a.b.c为待解算系数. 代码如下: ...

  8. logistic growth model . 求解方法 (高斯牛顿法)

    https://www.stat.tamu.edu/~jnewton/604/chap4.pdf http://www.metla.fi/silvafennica/full/sf33/sf334327 ...

  9. 使用MATLAB对图像处理的几种方法(上)

    实验一图像的滤波处理 一.实验目的 使用MATLAB处理图像,掌握均值滤波器和加权均值滤波器的使用,对比两种滤波器对图像处理结果及系统自带函数和自定义函数性能的比较,体会不同大小的掩模对图像细节的影响 ...

随机推荐

  1. css reset及部分layout样式

    /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html { font-family: sans ...

  2. 深入浅出ExtJS 第六章 布局

       6.1 布局的用途 6.1 布局的用途 //决定把什么东西放到什么位置; var vieport = new Ext.Viewport({ layout:'border', //使用Border ...

  3. 【转载】在 Visual Studio 2012 中创建 ASP.Net Web Service

    在 Visual Studio 2012 中创建 ASP.Net Web Service,步骤非常简单.如下: 第一步:创建一个“ASP.Net Empty Web Application”项目 创建 ...

  4. php学习笔记5--php中的可变变量,可变函数及匿名函数

    可变变量指的是:将一个变量的值再次当做一个变量名从而得到另外一个变量的值.如:$name = 'dqrcsc';$myname = 'name'; //$myname的值碰巧是另一个变量的变量名ech ...

  5. HDU4268 Alice and Bob(贪心+multiset)

    Problem Description Alice and Bob's game never ends. Today, they introduce a new game. In this game, ...

  6. CSS之密码强度检测

    输入密码后单击空白处即可检测. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  7. asp.net C#生成和解析二维码代码

    类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: using ThoughtWorks.QRCode.Codec;using Thought ...

  8. Stack Overflow 2016最新架构探秘

    这篇文章主要揭秘 Stack Overflow 截止到 2016 年的技术架构. 首先给出一个直观的数据,让大家有个初步的印象. 相比于 2013 年 11 月,Stack Overflow 在 20 ...

  9. 7 款令人赞叹的 HTML5 动画应用

    1.HTML5 3D图片阴影翻转动画 这是一款很酷的HTML5 3D动画特效,这款3D特效可以为你的图片增加阴影的效果,而且可以让图片在鼠标滑过的时候出现3D翻转的动画效果. 在线演示 源码下载 2. ...

  10. CodeForces 628D Magic Numbers (数位dp)

    题意:找到[a, b]符合下列要求的数的个数. 1.该数字能被m整除 2.该数字奇数位全不为d,偶数位全为d 分析: 1.dp[当前的位数][截止到当前位所形成的数对m取余的结果][当前数位上的数字是 ...