参考资料
《精通MATLAB最优化计算(第二版)》
编程工具
Matlab 2019a
目录
石中居士:最优化计算与Matlab实现——目录zhuanlan.zhihu.com非线性最小二乘优化问题
非线性最小二乘优化也叫无约束极小平方和函数问题,它是如下无约束极小问题:
,其中
。
例如
,则
,其中
。如果
为
的线性函数,即
,其中
为矩阵,
为向量,此时问题变为线性最小二乘问题。对于线性最小二乘问题,处理起来非常简单,其实质是
变量的二次规划问题,MATLAB中对应有lsqnonlin函数求解线性最小二乘问题。
G-N法(Gauss-Newton法)
G-N法源于无约束优化的牛顿算法,因为非线性最小二乘优化问题中的目标函数形式比较特殊,可以得到其雅可比矩阵的具体形式,将其代入牛顿法的迭代公式中,就可得到G-N法。
- 原理
根据非线性最小二乘目标函数的表达式,有
令
,根据无约束优化的牛顿算法,代入目标函数的梯度,则有
。
其中
。由于
涉及
的计算,计算量比较大,将其忽略得到求解非线性最小二乘的G-N法:
- 算法步骤
用G-N法求解非线性最小二乘优化问题
的算法过程如下:
【1】给定初始点
,及精度
,置
;
【2】计算
;
【3】计算
;
【4】计算
;
【5】解方程
;
【6】置
;
【7】检验终止原则,否则令
,转【2】。
- Matlab代码与试算
用G-N法求下面的优化问题:
,其中初始点取 。
test.m
syms
Gauss_Newton_Method.m
function
命令行窗口
x_optimization =5.6753e-07f_optimization =2.0000
图像
如图所示,函数
有两个最小点
,由于初始点为
,所以G-N法只求出了与1最近的
。
G-N算法是一个局部收敛方法,它对初始点的依赖性很大,只有当初始点接近极小点时才有可能收敛。