matlab用最速下降法(梯度法)计算Rosenbrock函数,求程序代码

matlab用最速下降法(梯度法)计算Rosenbrock函数,求程序代码,第1张

Rosenbrock函数

实穗锋纤现代码:

clc,clear all

format long g

x0=[00]

fun=@func

gfun=@gfunc

[x,val,k]=grad(fun,gfun,x0)   %最速下降法(梯度法)

目标函数

function f=func(x)

f=100*(x(1)^2-x(2))^2+(1-x(1))^2

end

梯度函数

function g=gfunc(x)

g=[400*x(1)*(x(1)^2-x(2))-x(2)+2*(x(1)-1)-200*(x(1)^2-x(2))]

end

运行结果

如有问题,可以私信于我。

用遗传算法ga()求Rosenbrock函数的结猜仿果,与基埋用上述方法的结果相接近。

设地球物理数据和模型参数之间满足以下非线性关系:

d=f(m) (8.1)

其中:f表示非线性算子d、m都是列向量。

建立如下目标函数:

φ(m)=[d-f(m)]2=min (8.2)

目标函数在模型mi处的梯度为

地球物理反演教程

梯度法的模型修改量是目标函数的负梯度:

mi+1=mi+Δmi=mi-λgi(8.4)

其中:λ为步长因子穗孝,是一个数,用来控制修改量的大小g、m都为列向量。

下面推导λ的计樱族稿算公式。

将式(8.2)目标函数φ(m)按泰勒公式展开,并略去高次项得

地球物理反演教程

将式(8.4)中的Δmi=-λgi带入式(8.5)得

地球物理反演教程

设经过修改模型后,目标函数φ(mi+1)为零,有

地球物理反演教程

由上式可推出步长因子λ的计算公式:

地球物理反演教程

给定初始模型mi后,首先计算出梯度gi,然后按式(8.8)计算步长因子,最后按式(8.4)修改模型。如果:

φ(mi+1)<φ(mi) (8.9)

则说明修正量合适,采用新模型继续迭代。否则减小λ后再计算,一般λ减小一半。

梯度法的计算过程如下:

(1)给定初始模型m0

(2)进行正演计算

(3)判断是否满足精度要求,是则反演结束,否则进行第(4)步

(4)按照式(8.4)修改模型,转第(2)步。

一般反演精度采用实测数据和理论数据的相对均方差来量度。

因为目标函数的梯度就是φ值下降最快的方向,所以梯度法又称为“最速下降法”。下面用一个简单的例子来说明梯度法的原理。设有如下一维目标函数:

φ(x)=f(x) (8.10)

从图8.1可见,x0为目标函数的极小值点。g1为x1处的梯度,g2为x2处的梯度。如果初始模型为x1,模型修改量应该为正值才能使目标函数向最小值前进。从图上可知g1为负值,负梯度为正,满足修改方向。同理如果初始模型为x2,模型修改量应该为负值。从图上可知g2为正值,负梯度为负脊孝值,满足修改量为负值的要求。

图8.1 一维目标函数示意图

从这个例子容易看出即使初始模型远远偏离极小值点,只要按照负梯度方向修改模型参数,总能使目标函数达到极小值点。但是上图的极小值点只有一个,容易达到全局极小,如果目标函数具有多个极小值点,那么初始模型的选择就很关键了,选的不好容易陷入局部极小。此外在极小值点附近梯度法反演收敛的速度将会很慢。因此一般在反演的开始采用梯度法,在反演的后期采用其他收敛速度快的反演方法,如前面所介绍的最小二乘法(或称为高斯-牛顿法)。

图8.2 最小二乘法和梯度法修正方向示意图

最小二乘法和梯度法在极小值点附近的模型修正方向如图8.2所示[10]。这个图形将形象的说明为何梯度法在极小值点附近收敛速度慢。

图8.2是二维的简单情况,目标函数是个椭圆面。在初始模型m0处梯度法的修正方向是最速下降方向,也就是和等值线的切线垂直的方向,可见它的方向偏离椭圆的中心极小值点。而最小二乘法(高斯-牛顿法)是解椭圆函数最优化问题的精确方法[6],它的修正方向将会指向椭圆的中心极小值点。因此在接近极小值点附近最小二乘法的收敛速度要快于梯度法。

为了克服最速下降法收敛慢的缺点,1964年Fletcher和Reeves提出了无约束极小化的共轭梯度法,它是直接从Hestenes和Stiefel(1952)解线性方程组的共轭梯度法发展而来。共轭梯度法使最速下降方向具有共轭性,提高了算法的有效性和可靠性[6]。

梯度法的关键是计算目标函数的梯度,最终还是会归结为计算观测数据对模型参数的偏导数。在一维反演时可以用有限差分法进行偏导数的计算,在高维反演时可以采用其他快速计算偏导数的方法,如第9章将要介绍的利用互换定理计算二维直流电测深偏导数矩阵。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12382704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存