最速下降法及MATLAB程序
最优化 马昌凤 第三章作业

最优化方法及其Matlab程序设计习题作业暨实验报告学院:数学与信息科学学院班级:12级信计一班姓名:李明学号:1201214049第三章 最速下降法和牛顿法一、上机问题与求解过程1、用最速下降法求212221216423),(x x x x x x f --+=的极小值。
解:仿照书上编写最速下降法程序如下:function [x,val,k]=grad(fun,gfun,x0) %功能:用最速下降法求解无约束化问题:min f(x) %输入:x0是初始点,fun,gfun 分别是目标函数和梯度 %输出:x,val 分别是近似嘴有点和最优值,k 是迭代次数 maxk=5000;rho=0.5;sigma=0.4;%一开始选择时选择的rho 和sibma 选择的数据不够合理,此处我参照书上的数据编写数据 k=0;epsilon=1e-5; while (k<maxk)g=feval(gfun,x0); %计算梯度 d=-g;%计算搜索方向if (norm(d)<epsilon),break ;end m=0;mk=0; while (m<20)%Armijo 搜索if (feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break ;%直接利用Armijo 搜索公式,一开始的时候没有记住公式编写出现错误 end m=m+1; endx0=x0+rho^mk*d; k=k+1; end x=x0;val=feval(fun,x0) %求得每一个的函数值然后仿照书上建立两个目标函数和梯度的M 文件:function f=fun(x)f=3*x(1)^2+2*x(2)^2-4*x(1)-6*x(2); function g=gfun(x) g=[6*x(1)-4,4*x(2)-6]';选取初始点为']0,0[,调用函数程序,得出最小极值点为']500.1,6667.0[,极小值为8333.5-,在界面框中输入的程序如下:[x,val,k]=grad('fun','gfun',x0) val = -5.8333 x =0.6667 1.5000 val =-5.8333 k = 10从结果可以看出迭代次数为10次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。
最速下降法

最速下降法姓名:沈东东 班级:研1404 学号:1415033005一、最速下降法的原理目标函数:(1)n f R R n →>在决策变量的当前点()k n x R ∈处的一阶Taylor 展开式为()()()()()()()k k k T f x f x g x δδοδ+=++式中,()()k n g x R ∈为f 在点()k x 处的梯度向量。
当扰动量n R δ∈充分小时,有()()()()()()k k k T f x f x g x δδ+≈+设新的迭代点为(1)()k k x x δ+=+,于是得到(1)()()()()()k k k T f x f x g x δ+-≈为了使(1)k x +处的目标函数值比()k x 处有所下降,需要满足()()0k T g x δ<此外,梯度向量()()k g x 和扰动量δ的内积可以表示为()()()()cos k T k g x g x δδθ=式中,θ为两向量之间的夹角。
若要使目标函数值的下降量尽可能大,可知δ的方向应该为梯度方向的负方向,即cos 1θ=-。
函数f 在点()k x 处的负梯度方向称为该点的最速下降方向。
在每次迭代时都取最速下降方向作为搜索方向的方法就称为最速下降法。
二、最速下降法的特点1.若()k x 不是极小点,则f 在点()k x 处的最速下降方向总是下降方向。
2.如果每次迭代时都用精确搜索方法得到最佳步长作为搜索步长,则寻优过程中相邻的最速下降方向是正交的。
3最速下降法产生的迭代点序列在一定条件下是线性收敛的,其收敛性质与极小点*x 处的Hesse 矩阵有关。
三、最速下降法的计算步骤最速下降法的计算步骤如下:步骤1:已知待求问题的目标函数()f x ,选择初始点(0)x ,并设定精度要求tol ,令:0k =。
步骤2:计算()f x 在点()k x 处的梯度向量()()k g x ,得到最速下降方向()()()k k d g x =-。
常用无约束最优化方法(一)

项目三 常用无约束最优化方法(一)[实验目的]编写最速下降法、Newton 法(修正Newton 法)的程序。
[实验学时]2学时[实验准备]1.掌握最速下降法的思想及迭代步骤。
2.掌握Newton 法的思想及迭代步骤;3.掌握修正Newton 法的思想及迭代步骤。
[实验内容及步骤]编程解决以下问题:【选作一个】1.用最速下降法求22120min ()25[22]0.01T f X x x X ε=+==,,,.2.用Newton 法求22121212min ()60104f X x x x x x x =--++-,初始点0[00]0.01T X ε==,,.最速下降法Matlab 程序:clc;clear;syms x1 x2;X=[x1,x2];fx=X(1)^2+X(2)^2-4*X(1)-6*X(2)+17;fxd1=[diff(fx,x1) diff(fx,x2)];x=[2 3];g=0;e=0.0005;a=1;fan=subs(fxd1,[x1 x2],[x(1) x(2)]);g=0;for i=1:length(fan)g=g+fan(i)^2;endg=sqrt(g);step=0;while g>estep=step+1;dk=-fan;%点x(k)处的搜索步长ak=((2*x(1)-4)*dk(1)+(2*x(2)-6)*dk(2))/(dk(1)*dk(2)-2*dk(1)^2-2*dk(2)^2);xu=x+ak*dk;x=xu;%输出结果optim_fx=subs(fx,[x1 x2],[x(1) x(2)]);fprintf(' x=[ %d %d ] optim_fx=%d\n',x(1),x(2),optim_fx);%计算目标函数点x(k+1)处一阶导数值fan=subs(fxd1,[x1 x2],[x(1) x(2)]);g=0;for i=1:length(fan)g=g+fan(i)^2;endg=sqrt(g);end%输出结果optim_fx=subs(fx,[x1 x2],[x(1) x(2)]);fprintf('\n最速下降法\n结果:\n x=[ %d %d ] optim_fx=%d\n',x(1),x(2),optim_fx); c++程序#include<stdio.h>#include<iostream.h>#include<iomanip.h>#include<math.h>float goldena(float x[2],float p[2]){float a;a=-1*(x[0]*p[0]+4*x[1]*p[1])/(p[0]*p[0]+4*p[1]*p[1]);return a;}void main(){float a=0,x[2],p[2],g[2]={0,0},e=0.001,t;int i=0;x[0]=1.0;x[1]=1.0;p[0]=2*x[0];p[1]=8*x[1];g[0]=-p[0];g[1]=-p[1];printf("\n\n");while(sqrt(g[0]*g[0]+g[1]*g[1])>e&&i<=100){i=i+1;a=goldena(x,g);x[0]=x[0]+a*g[0];x[1]=x[1]+a*g[1];p[0]=2*x[0];p[1]=8*x[1];g[0]=-p[0];g[1]=-p[1];t=float(sqrt(g[0]*g[0]+g[1]*g[1]));printf("第%d次t=%f x1=%f\tx2=%f\ta=%f\n",i,sqrt(g[0]*g[0]+g[1]*g[1]),x[0],x[1],a);}printf("\n最优解为:x1=%f,x2=%f\n最优值为y=%f\n",x[0],x[1],x[0]*x[0]+4*x[1]*x[1]); }。
matlab数学实验

《管理数学实验》实验报告班级姓名实验1:MATLAB的数值运算【实验目的】(1)掌握MATLAB变量的使用(2)掌握MATLAB数组的创建,(3)掌握MA TLAB数组和矩阵的运算。
(4)熟悉MATLAB多项式的运用【实验原理】矩阵运算和数组运算在MA TLAB中属于两种不同类型的运算,数组的运算是从数组元素出发,针对每个元素进行运算,矩阵的运算是从矩阵的整体出发,依照线性代数的运算规则进行。
【实验步骤】(1)使用冒号生成法和定数线性采样法生成一维数组。
(2)使用MA TLAB提供的库函数reshape,将一维数组转换为二维和三维数组。
(3)使用逐个元素输入法生成给定变量,并对变量进行指定的算术运算、关系运算、逻辑运算。
(4)使用MA TLAB绘制指定函数的曲线图,将所有输入的指令保存为M文件。
【实验内容】(1)在[0,2*pi]上产生50个等距采样数据的一维数组,用两种不同的指令实现。
0:(2*pi-0)/(50-1):2*pi 或linspace(0,2*pi,50)(2)将一维数组A=1:18,转换为2×9数组和2×3×3数组。
reshape(A,2,9)ans =Columns 1 through 71 3 5 7 9 11 132 4 6 8 10 12 14Columns 8 through 915 1716 18reshape(A,2,3,3)ans(:,:,1) =1 3 52 4 6ans(:,:,2) =7 9 118 10 12 ans(:,:,3) =13 15 17 14 16 18(3)A=[0 2 3 4 ;1 3 5 0],B=[1 0 5 3;1 5 0 5],计算数组A 、B 乘积,计算A&B,A|B,~A,A= =B,A>B 。
A.*Bans=0 0 15 121 15 0 0 A&Bans =0 0 1 11 1 0 0 A|Bans =1 1 1 11 1 1 1~Aans =1 0 0 00 0 0 1A==Bans =0 0 0 01 0 0 0A>=Bans =0 1 0 11 0 1 0(4)绘制y= 0.53t e -t*t*sin(t),t=[0,pi]并标注峰值和峰值时间,添加标题y= 0.53t e -t*t*sint ,将所有输入的指令保存为M 文件。
无约束优化算法--最速下降法

无约束优化算法无约束优化算法问题,是指优化问题的可行集为nR ,无约束的标准形式为: min ():n f x f R R →1. 最优性条件(1) 极小值点的一阶必要条件设():n f x R R →为连续可微函数,如果*x 为局部极小值点,则*x 为驻点,即梯度*()0f x ∇=。
(2) 极小值的二阶必要条件设():n f x R R →为二阶连续可微函数,如果*x 为局部极小值点,则*x 为驻点,即梯度*()0f x ∇=,二阶hesse 2*()f x ∇半正定。
(3) 极小值点的二阶充分条件设():n f x R R →为二阶连续可微函数,如果梯度*()0f x ∇=,二阶h e s s e 2*()f x ∇正定,则*x 为f 的局部极小值点,*n x R ∈。
以上三个定理为搜索最优点以及判断一个点是否为最优点的基本依据。
经典的优化算法的停止条件为*()0f x ∇=,例如在程序中*8()110f x -∇≤⨯ ,即在导数范数小于某特定误差限时停止。
误差限较大,则算法迭代次数减少,计算时间缩短,但解得质量降低;误差限较小,则算法迭代次数增加,计算时间增加,但解的质量提高;误差限一般为8110-⨯,可以根据实际情况设定合适的误差限。
当然,还有极小值点的二阶必要条件与极小值点的二阶充分条件,对2*()f x ∇的判断,由于目标函数比较复杂,二阶导数矩阵的计算量极大,所以一般算法都在迭代过程中对2()()k f x∇进行修正,得到2(1)()k f x +∇,在修正的过程中始终保持2*()f x ∇的正定性,以此方法解决极小值点的二阶条件问题。
2. 最速下降法2.1 算法原理最速下降法是早期的优化算法,其理论根据函数的一阶泰勒展开: 由()()()()Tf x d f x f x d d ααοα+=+∇+ 得到()()()()T f x d f x f x d d ααοα+-=∇+根据下降要求()()0f x d f x α+-≤ 故()()0Tf x d d αοα∇+≤实际中要求()0T f x d α∇≤根据上式选取合适的d ,得()0T f x d α∇≤。
最优化方法实验报告(2)

最优化方法实验报告Numerical Linear Algebra And ItsApplications学生所在学院:理学院学生所在班级:计算数学10-1学生姓名:甘纯指导教师:单锐教务处2013年5月实验三实验名称:无约束最优化方法的MATLAB实现实验时间: 2013年05月10日星期三实验成绩:一、实验目的:通过本次实验的学习,进一步熟悉掌握使用MATLAB软件,并能利用该软件进行无约束最优化方法的计算。
二、实验背景:(一)最速下降法1、算法原理最速下降法的搜索方向是目标函数的负梯度方向,最速下降法从目标函数的负梯度方向一直前进,直到到达目标函数的最低点。
2、算法步骤用最速下降法求无约束问题n R()min的算法步骤如下:xxf,a )给定初始点)0(x ,精度0>ε,并令k=0;b )计算搜索方向)()()(k k x f v -∇=,其中)()(k x f ∇表示函数)(x f 在点)(k x 处的梯度;c )若ε≤)(k v ,则停止计算;否则,从)(k x 出发,沿)(k v 进行一维搜索,即求k λ,使得)(min )()()(0)()(k k k k v x f v x f λλλ+=+≥; d )令1,)()()1(+=+=+k k v x x k k k k λ,转b )。
(二)牛顿法1、算法原理牛顿法是基于多元函数的泰勒展开而来的,它将)()]([-)(1)(2k k x f x f ∇∇-作为搜索方向,因此它的迭代公式可直接写出来:)()]([)(1)(2)()(k k k k x f x f x x ∇∇-=-2、算法步骤用牛顿法求无约束问题n R x x f ∈),(min 的算法步骤如下:a )给定初始点)0(x ,精度0>ε,并令k=0;b )若ε≤∇)()(k x f ,停止,极小点为)(k x ,否则转c );c )计算)()]([,)]([)(1)(2)(1)(2k k k k x f x f p x f ∇∇-=∇--令;d )令1,)()()1(+=+=+k k p x x k k k ,转b )。
最速下降法求范围内极值 matlab
最速下降法是一种常用的优化算法,可以用于求解多元函数的极小值。
在Matlab中,我们可以通过编写程序来实现最速下降法求取函数在给定范围内的极小值。
本文将围绕最速下降法在Matlab中的实现展开讨论,包括算法原理、程序编写、实例演示等内容。
一、最速下降法的原理及步骤最速下降法是一种基于梯度下降的优化算法,其原理是通过沿着函数梯度的负方向不断迭代,来逼近函数的极小值点。
其基本步骤如下:1. 初始化:选择初始点x0,设定迭代终止条件。
2. 梯度计算:计算当前点的梯度值∇f(xk)。
3. 方向选择:选择负梯度方向p_k=-∇f(xk)。
4. 步长确定:求解使得f(xk+α_pk)最小化的步长αk。
5. 迭代更新:更新迭代点xk+1=xk+αkp_k,并检查迭代终止条件。
二、最速下降法在Matlab中的实现在Matlab中,我们可以通过编写程序来实现最速下降法。
以下是一个简单的最速下降法求解函数极小值的Matlab程序示例:```matlabfunction [x, fval, exitflag, output] = steepestdescent(fun, x0, options)fun为目标函数句柄,x0为初始点,options为优化选项[x, fval, exitflag, output] = fminunc(fun, x0, options);end```以上代码中,我们使用了Matlab内置的优化函数fminunc来实现最速下降法。
其中fun为目标函数句柄,x0为初始点,options为优化选项,x为最优解,fval为最优值,exitflag为退出标志,output为优化输出。
三、实例演示下面我们以一个简单的二元函数为例,演示最速下降法在Matlab中的实现过程。
假设我们要求解的目标函数为f(x, y) = x^2 + y^2,且x, y∈[0, 2]。
我们可以通过编写如下Matlab程序来实现最速下降法的求解:```matlabfun = (x) x^2 + y^2; 定义目标函数x0 = [1, 1]; 设置初始点options = optimoptions('fminunc', 'Algorithm', 'quasi-newton'); 设置优化选项[x, fval, exitflag, output] = steepestdescent(fun, x0, options); 调用最速下降法disp(['最优解为:', num2str(x)]);disp(['最优值为:', num2str(fval)]);```通过以上程序,我们可以得到最优解为x=[0, 0],最优值为fval=0,这即为目标函数在给定范围内的极小值点及极小值。
目标函数的几种极值求解方法
目标函数的几种极值求解方法题目:()()2221122min -+-x x,取初始点()()Tx 3,11=,分别用最速下降法,牛顿法,共轭梯度法编程实现。
一维搜索法:迭代下降算法大都具有一个共同点,这确实是得到点()k x 后需要按某种规则确定一个方向()k d ,再从()k x 动身,沿方向()k d 在直线(或射线)上求目标函数的极小点,从而得到()k x 的后继点()1+k x ,重复以上做法,直至求得问题的解,那个地点所谓求目标函数在直线上的极小点,称为一维搜索。
一维搜索的方法专门多,归纳起来大体能够分为两类,一类是试探法:采纳这类方法,需要按某种方式找试探点,通过一系列的试探点来确定极小点。
另一类是函数靠近法或插值法:这类方法是用某种较简单的曲线靠近本来的函数曲线,通过求靠近函数的极小点来估量目标函数的极小点。
本文采纳的是第一类试探法中的黄金分割法。
原理书上有详细叙述,在那个地点介绍一下实现过程:⑴ 置初始区间[11,b a ]及精度要求L>0,运算试探点1λ和1μ,运算函数值()1λf 和()1μf ,运算公式是:()1111382.0a b a -+=λ,()1111618.0a b a -+=μ。
令k=1。
⑵ 若L a b k k <-则停止运算。
否则,当()K f λ>()k f μ时,转步骤⑶;当()K f λ≤()k f μ时,转步骤⑷ 。
⑶ 置k k a λ=+1,k k b b =+1,k k μλ=+1,()1111618.0++++-+=k k k k a b a μ,运算函数值()1+k f μ,转⑸。
⑷ 置k k a a =+1,k k b μ=+1,k k μμ=+1,()1111382.0++++-+=k k k k a b a λ,运算函数值()1+k f λ,转⑸。
⑸ 置k=k+1返回步骤 ⑵。
1. 最速下降法实现原理描述:在求目标函数极小值问题时,总期望从一点动身,选择一个目标函数值下降最快的方向,以利于尽快达到极小点,正是基于如此一种愿望提出的最速下降法,同时通过一系列理论推导研究可知,负梯度方向为最速下降方向。
最速下降法matlab代码
最速下降法matlab代码最速下降法(Steepest Descent Method)是一种用于数值优化问题的迭代算法。
下面是一个简单的最速下降法的MATLAB 代码示例:1.定义目标函数function f = objective(x)f = x(1)^2 + 4*x(2)^2 - 4*x(1) - 8*x(2); % 示例目标函数,可根据实际问题进行修改end2.定义目标函数的梯度function g = gradient(x)g = [2*x(1) - 4; 8*x(2) - 8]; % 示例目标函数的梯度,可根据实际问题进行修改end3.最速下降法function steepestDescent()x = [0; 0]; % 初始点epsilon = 1e-6; % 收敛准则,可根据实际问题调整maxIterations = 1000; % 最大迭代次数,可根据实际问题调整for k = 1:maxIterationsg = gradient(x); % 计算梯度if norm(g) < epsilon % 判断梯度范数是否小于收敛准则break;endalpha = 0.01; % 步长,可根据实际问题调整x = x - alpha * g; % 更新参数enddisp('Optimization Results:');disp('---------------------');disp(['Iterations: ', num2str(k)]);disp(['Minimum point: (', num2str(x(1)), ', ', num2str(x(2)), ')']);disp(['Objective function value: ', num2str(objective(x))]);end4.调用最速下降法函数steepestDescent();上述代码包含了以下几个关键部分:objective 函数:定义了目标函数,根据实际问题进行修改。
完整word版最速下降法求解线性代数方程组
最速下降法求解线性代数方程组要求:对于给定的系数矩阵、右端项和初值,可以求解线性代数方程组一、最速下降法数学理论PP?tX?Xf(X)的负梯中,在基本迭代公式每次迭代搜索方向取为目标函数kk1kkk?t)X??f(P?取为最优步长,由此确定的算法称为最速度方向,即,而每次迭代的步长kkk下降法。
X)Xminf(kk。
现在次,获得了第,假定我们已经迭代了为了求解问题个迭代点k X出发,可选择的下降方法很多,一个非常自然的想法是沿最速下降方向(即负梯度方从k X邻近的范围内是这样。
因此,去搜索方向为 )进行搜索应该是有利的,至少在向k P???f(X).kk P k?1进行一维搜索,由此得到第为了使目标函数在搜索方向上获得最多的下降,沿k个跌带点,即X?X?t?f(X),kk1k?k t按下式确定其中步长因子k f(X?t?f(X))?minf(X?t?f(X)),kkkkkk X?ls(X,??f(X)). ( 1)k1k?k X X,XX,, ,,?k0,12是初始点,由计算就可以得到一个点列,显然,令其中0210{X}f)X(X)(f 的满足一定的条件时,由式()所产生的点列必收敛于者任意选定。
当1k极小点。
二、最速下降法的基本思想和迭代步骤???,)(Xf(X)g. ,终止限已知目标函数及其梯度和321Xf?f(X),g?g(X)k?0.,计算;置(1)选定初始点00000X?ls(X,?g)f?f(X),g?g(X). (2)作直线搜索:;计算k?1kk1?k1k?kk?1?1(X,f(X))k?k?1,置,结束;用终止准则检验是否满足:若满足,则打印最优解否则,1k?1?k转(2)(3)最速下降法算法流程图如图所示.X结束三、最速下降法的matlab实现function [x,n]=twostep(A,b,x0,eps,varargin) %两步迭代法求线性方程组Ax=b的解if nargin==3eps= 1.0e-6;M = 200;elseif nargin<3errorreturnelseif nargin ==5M = varargin{1};endD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵B1=(D-L)\U;B2=(D-U)\L;f1=(D-L)\b;f2=(D-U)\b;x12=B1*x0+f1;x =B2*x12+f2;n=1; %迭代次数while norm(x-x0)>=epsx0 =x;x12=B1*x0+f1;x =B2*x12+f2;n=n+1;if(n>=M)'); 迭代次数太多,可能不收敛! disp('Warning: return;endend的解最速下降法求线性方程组Ax=bfunction [x,n]= fastdown(A,b,x0,eps) %if(nargin == 3)eps = 1.0e-6;endx=x0;n=0;tol=1;以下过程 % while(tol>eps)可参考算法流程 r = b-A*x0;d = dot(r,r)/dot(A*r,r);x = x0+d*r;tol = norm(x-x0);x0 = x;n = n + 1;end四、最速下降法的算例实现A=[5 2 0;6 4 1;1 2 5];b=[10 18 -14]';eps=1.0e-6;x =-0.87507.1875-5.5000 k =60。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
99
99
令 () 16 ( 1 4 ) 16 ( 4 8 ) 0
9 99
99 9
得
1
5 12
从而得
x2
x1
1 p1
(2, 27
2 )T 27
p 2 f (x2 ) 4 (2,1)T 27
p 2 4 5 0.1 27
故进行第三次迭代运算:
从x2=(2/27,2/27)T出发进行一维搜索,即构造
最速下降法
最速下降法,也称为梯度下降法,是由法国著名数学家Cauchy在 1847年提出的。
最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽 然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进 和修正而得到的。
最速下降法是用负梯度方向为搜索方向,算法非常简单,并且通常 对凸解析函数也有良好的收敛性。
改进后的算法
Step1: x0 Rn 精度ε>0,自然数N>=2,k=0
Step2: 计算 pk f (xk )
Step3: 如果 f (xk ) ,则转Step5;否则进行一维搜索
f
(xk
k
pk
)
min
0
f
(xk
p k
)
,令
x k1 x k k p k , k k 1
若k>=N,且k/3-[k/3]=0.则转Step4,否则转Step2.
() f (x 2 p 2 ) 2( 2 8 )2 ( 2 4 )2
27 27
27 27
令 () 32 ( 2 8 ) 8 ( 2 4 ) 0
27 27 27
27 27 27
得
2
5 18
从而得x3Fra bibliotekx22 p2
( 2 , 8 )T 243 243
p3 f (x3 ) ( 8 , 16 )T 243 243
Step4: 计算 s k xk xk2 ,进行一维搜索
f
(xk
k sk
)
min
0
f
(xk
s k
)
令 x k1 x k k s k , k k 1 ,转Step2
Step5: 停止,输出 x* xk
小结
1、优点: 计算简单,需记忆的容量小;对初始点要求低,稳定性高;远
离极小点时收敛快,常作为其它方法的第一步。
d () df (xk pk )
d
d
f1 (x1k
p1k ) p1k
f
2
(
x2k
p2k ) p2k
...
f
n
(
xnk
pnk ) pnk
f (xk pk )T pk
k是一元函数f(xk+ λ pk)的极值点,
d () d
| k
df
(xk
d
pk )
| k
0
▽f(xk +λ kpk)Tpk=0,即(pk+1)Tpk=0。也就是说,有目标函数在一维搜索产生 的新点xk+1= xk+ λ kpk处的梯度与产生该点时所用的搜索方向是正交的。
令 得 从而得
() 16(1 4) 4(1 2) 0
0
5 18
x1
x0
0
p0
( 1 , 4)T 99
p1 f (x1 ) ( 4 , 8)T 99
p1 4 5 0.1 9
故进行第二次迭代运算:
从x1=(-1/9,4/9)T出发进行一维搜索,即构造
() f (x1 p1 ) 2( 1 4 )2 ( 4 8 )2
最速下降法的基本思想
从任意一点xk出发,沿该点负梯度方向pk=-▽f(xk)进行一维搜索,
设f(xk+ λ kpk)=min f(xk+ λ pk) (λ >0),令xk+1= xk+ λ kpk为f(x)新的近似最优 解。
再从新点xk+1出发,沿该点的负梯度方向pk+1=-▽f(xk+1)进行一维搜
例. 用最速下降法求函数f (x1, x2)=2x12+x22 的极小点,取x0=[1,1]T , ε=0.1。 解 由题意得
f (x) (4x1 ,2x2 )T
p0 f (x0 ) (4,2)T
由于
p0 20 0.1
故进行第一次迭代 从x0=(1,1)T出发进行一维搜索,即构造
() f (x0 p0 ) 2(1 4)2 (1 2)2
索,进一步求出新的近似最优解xk+2。 如此迭代,直到某点的梯度为零向量或梯度的范数小于事先给定
的精度为止。
给定x0,ε>0,k=0
算法
计算pk=-▽f(xk)
|| ▽ f(xk)||< ε N
f(xk+ λ kpk)=min f(xk+ λ pk) (λ >0)
Y 停止,打印xk
xk+1= xk+ λ kpk,k=k+1
p 3 4 5 0.0368 0.1 243
停止迭代 故最优解为
x x3 ( 2 , 8 )T 243 243
最速下降法的搜索路径呈直角锯齿形
设xk=(xk1 , xk2 …..xkn),pk=(pk1 , pk2 …..pkn),则 令θ(λ )= f(xk+ λ pk) = f(xk1 + λ pk1, xk2 + λ pk2 ,…., xkn + λ pkn)
2、缺点: 收敛速度较慢。尤其当目标函数等值面是很扁的椭圆、椭球或
类似图形时,收敛更慢。