搜档网
当前位置:搜档网 › 最优化课程设计--共轭梯度法算法分析与实现

最优化课程设计--共轭梯度法算法分析与实现

最优化课程设计--共轭梯度法算法分析与实现
最优化课程设计--共轭梯度法算法分析与实现

最优化课程设计--共轭梯度法算法分析与实现

(设计程序)

题目共轭梯度法算法分析与实现

班级 / 学号 14140101/11 学生姓名黄中武指导教师王吉波王微微

课程设计任务书

课程名称最优化方法课程设计院(系) 理学院专业信息与计算科学

课程设计题目共轭梯度法算法分析与实现课程设计时间: 2014 年 6月 16日至2014 年 6月 27日

课程设计的要求及容:

[要求]

1. 学习态度要认真,要积极参与课程设计,锻炼独立思考能力;

2. 严格遵守上机时间安排;

3. 按照MATLAB编程训练的任务要求来编写程序;

4. 根据任务书来完成课程设计论文;

5. 报告书写格式要求按照航空航天大学“课程设计报告撰写规”;

6. 报告上交时间:课程设计结束时上交报告;

7. 严禁抄袭行为,一旦发现,课程设计成绩为不及格。

一、运用共轭梯度法求解无约束最优化问题

要求:1)了解求解无约束最优化问题的共轭梯度法;

2)绘出程序流程图;

3)编写求解无约束最优化问题的共轭梯度法MATLAB程序;

4)利用编写文件求解某无约束最优化问题;

5)给出程序注释。

指导教师年月日

负责教师年月日

学生签字年月日

航空航天大学

课程设计成绩评定单

课程名称最优化理论与算法课程设计院(系) 理学院专业信息与计算科学课程设计题目共轭梯度法算法分析与实现学号 11 黄中武指导教师评语: 课程设计成绩

指导教师签字

年月日

最优化方法课程设计航空航天大学课程设计用纸目录

目录

一、正文 ............................................................... 1 二、总

结 ............................................................... 8 参考文

献 ............................................................... 9 附

录 (10)

第 I 页

最优化方法课程设计航空航天大学课程设计用纸正文

一、正文

一无约束最优化问题的共轭梯度法

共轭梯度法最初是由Hesteness和Stiefel于1952年为求解线形方程组而提出的。后来,人们把这种方法用于求解无约束最优化问题,使之成为一种重要的最优化方法。

下面,重点介绍Fletcher-Reeves共轭梯度法,简称FR法。

共轭梯度法的基本思想是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。根据共轭梯度方向的基本性质,这种方法具有二次终止性。首先讨论对于二次函数的共轭梯度法,然后再把这种方法推广到极小化一般函数的情形。考虑问题

TTmi fx(),,,0.5xAxbxcn

其中A是对称正定矩阵,c是常数。

具体求解方法如下:

(1)首先,任意给定一个初始点,计算出目变函数在这点的梯度,fx()x

g若=0,则停止计算,否则,令 1

(1)(1)dfxg,,,,,() 1

(1)(2)(2),0沿方向搜索,得到点,计算在处的梯度,若g,则利用dxx2

(1)(2)(2)和构造第二个搜索方向,再沿搜索。 ,gddd2

()k()k()k()k一般地,若已知点和搜索方向,则从出发,沿进行xdxd搜索,得到

(1)()()kkk,xxd,,, k

其中步长满足 ,k

()()kk()()kkfxd(),,,fxd(),,min k

此时可求出的显式表达。令 ,k

()()kk,,,()(),,fxd

,,()求得极小点,令

'(1)()kTk,,,()()0,,,fxd

第 1 页

最优化方法课程设计航空航天大学课程设计用纸正文根据二次函数的梯度表达式,即

(1)()kTk, ()0Axbd,,

T()()kkk Axdbd(+)0,,,,,k

T()()kk (10.3.16) gAdd,,,0,,()kk

由(10.3.16)式得到

Tk()gd()()kTkk (10.3.17) ,,,dAdk

(1)k,计算在处的梯度,若,则停止计算;否则,用fx()g,0x,gk,1k,1

()k(1)k,(1)k,()k和构造下一个搜索方向,并使和关于A共轭。按此设dddd

想,令

(1)()kk,dgd,,,, (10.3.18) kk,1

()kT上式两端左乘,并令 dA

()(1)()()()kTkkTkTk,dAddAgdAd,,,,,0 kk,1

由此得到

()kT()()kTk,,dAg (10.3.19) dAd,kk1

(1)k,(1)k,再从出发,沿方向搜索 xd

综上分析,在第一个搜索方向取负梯度的前提下,重复使用公式(10.3.14),(10.3.17),(10.3.18)和(10.3.19),就能伴随计算点的增加,构造出一组搜索方向。

第 2 页

最优化方法课程设计航空航天大学课程设计用纸正文二程序流程图

开始

输入初始点x0

精度e

继续迭代

满足精度要 N

Y

输出迭代结果

结束

图一共轭梯度法程序流程图

三共轭梯度法的MATLAB程序

function [x,val,k]=frcg(fun,gfun,x0)

maxk=5000;

rho=0.6;sigma=0.4;

k=0;epsilon=1e-7;

n=length(x0);

while (k

g=feval(gfun,x0);

第 3 页

最优化方法课程设计航空航天大学课程设计用纸正文itern=k-(n+1)*floor(k/(n+1));

itern=itern+1;

if(itern==1)

d=-g;

else

beta=(g'*g)/(g0'*g0);

d=-g+beta*d0;

gd=g'*d;

if(gd>=0)

d=-g;

end

end

if (norm(g)

break;

end

m=0;

mk=0;

while (m<20)

if

(feval(fun,x0+rho^m*d)

break;

end

m=m+1;

end

x0=x0+rho^mk*d;

val=feval(fun,x0);

g0=g;

d0=d;

k=k+1;

end

第 4 页

最优化方法课程设计航空航天大学课程设计用纸正文 x=x0;

val=feval(fun,x);

function f=fun(x)

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

function g=gfun(x)

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

四利用所编程序求解实际问题

222mifxxxx()100*()(1),,,,例 n121

**Txfx,,(1,1),()0该问题有精确解

利用所编程序求解此问题,在命令窗口输入:

运行结果为:

第 5 页

最优化方法课程设计航空航天大学课程设计用纸正文五程序注释function [x,val,k]=frcg(fun,gfun,x0)

%用FR共轭梯度法求解无约束问题:min f(x) %输入:x0时初始点,fun,gfun 分别是目标函数和梯度 %输出:x,val分别是近似最优点和最优值,k是迭代次数。

maxk=5000;%最大迭代次数

rho=0.6;sigma=0.4;

k=0;epsilon=1e-7;

n=length(x0);

while (k

g=feval(gfun,x0);%计算梯度

itern=k-(n+1)*floor(k/(n+1));

itern=itern+1;%计算搜索方向

if(itern==1)

d=-g;

else

beta=(g'*g)/(g0'*g0);

d=-g+beta*d0;

gd=g'*d;

if(gd>=0)

d=-g;

end

end

if (norm(g)

break;

end

数学实验“线性方程组的最速下降法与共轭梯度法解法”实验报告(内含matlab程序代码)

西京学院数学软件实验任务书

实验五实验报告 一、实验名称:最速下降法与共轭梯度法解线性方程组。 二、实验目的:进一步熟悉理解掌握最速下降法与共轭梯度法解法思路,提高matlab 编程能力。 三、实验要求:已知线性方程矩阵,应用最速下降与共轭梯度法在相关软件编程求解线性方程组的解。 四、实验原理: 1.最速下降法: 从某个初始点)0(X 出发,沿)(X f 在点)0(X 处的负梯度方向 )0()0()0()(AX b X f r -=-?= 求得)(X f 的极小值点)1(X , 即 )(min )0()0(0 r X f λλ+> 然后从)1(X 出发,重复上面的过程得到)2(X 。如此下去,得到序列{)(k X } )(...)()()()1()0(k X f X f X f >>> 可以证明,从任一初始点)0(X 出发, 用最速下降法所得到的序列{)(k X }均收敛于问题使X 最小化)(X f 的解,也就是方程组b AX =的解。其收敛速度取决于 1 1 λλλλ+-n n ,其中1λ ,n λ分别

为A 的最小,最大特征值。最速下降法迭代格式:给定初值)0(X , )(k X 按如下方法决定: ()) ()(1)(k )()()()(k ) ()(X ,,)(k k k k T k k T k k k k r X Ar r r r AX b X f r λλ+=> <><=-=-?=+ 2.共轭梯度法 其基本步骤是在点)(k X 处选取搜索方向)(k d , 使其与前一次的搜索方向)1(-k d 关于A 共轭,即 (1)()(1),0k k k d d Ad --<>= 然后从点)(k X 出发,沿方向)(k d 求得)(X f 的极小值点 )1(+k X , 即 )(min )() ()(0 )1(k d X f X f k k λλ+=>+ 如此下去, 得到序列{)(k X }。不难求得0,)1()(>=<-k k Ad d 的解为 ) () 1()1()()() () 1(,,k k k k k k k d Ad d d AX b X X > <>-<+=--+ 注意到)(k d 的选取不唯一,我们可取

最优化方法实验报告(2)

最优化方法实验报告Numerical Linear Algebra And Its Applications 学生所在学院:理学院 学生所在班级:计算数学10-1 学生姓名:甘纯 指导教师:单锐 教务处 2013年5月

实验三 实验名称: 无约束最优化方法的MATLAB 实现 实验时间: 2013年05月10日 星期三 实验成绩: 一、实验目的: 通过本次实验的学习,进一步熟悉掌握使用MATLAB 软件,并能利用该软件进行无约束最优化方法的计算。 二、实验背景: (一)最速下降法 1、算法原理 最速下降法的搜索方向是目标函数的负梯度方向,最速下降法从目标函数的负梯度方向一直前进,直到到达目标函数的最低点。 2、算法步骤 用最速下降法求无约束问题n R x x f ∈,)(min 的算法步骤如下: 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 )。 (三)共轭梯度法 1、算法原理 共轭梯度法是利用目标函数梯度逐步产生共轭方向作为线搜索方向的方法,每次搜索方向都是在目标函数梯度的共轭方向,搜索步长通过一维极值算法确定。 2、算法步骤 a )给定初始点)0(x ,精度0>ε;

共轭梯度法C语言(西安交大)

#include #include #define N 10 /*定义矩阵阶数*/ void main() { int i,j,m,A[N][N],B[N]; double X[N],akv[N],dka[N],rk[N],dk[N],pk,pkk,ak,bk; for(i=0;i

printf("\n"); printf("input the Maxtr X\n"); /*给X0输入一个初始向量*/ for(i=0;i

最优化课程设计--共轭梯度法算法分析与实现

最优化课程设计--共轭梯度法算法分析与实现(设计程序) 题目共轭梯度法算法分析与实现 班级 / 学号 14140101/2011041401011 学生姓名黄中武指导教师王吉波王微微 课程设计任务书 课程名称最优化方法课程设计院(系) 理学院专业信息与计算科学 课程设计题目共轭梯度法算法分析与实现课程设计时间: 2014 年 6月 16日至 2014 年 6月 27日 课程设计的要求及内容: [要求] 1. 学习态度要认真,要积极参与课程设计,锻炼独立思考能力; 2. 严格遵守上机时间安排; 3. 按照MATLAB编程训练的任务要求来编写程序; 4. 根据任务书来完成课程设计论文; 5. 报告书写格式要求按照沈阳航空航天大学“课程设计报告撰写规范”; 6. 报告上交时间:课程设计结束时上交报告; 7. 严禁抄袭行为,一旦发现,课程设计成绩为不及格。 一、运用共轭梯度法求解无约束最优化问题 要求:1)了解求解无约束最优化问题的共轭梯度法; 2)绘出程序流程图; 3)编写求解无约束最优化问题的共轭梯度法MATLAB程序; 4)利用编写文件求解某无约束最优化问题;

5)给出程序注释。 指导教师年月日 负责教师年月日 学生签字年月日 沈阳航空航天大学 课程设计成绩评定单 课程名称最优化理论与算法课程设计院(系) 理学院专业信息与计算科学课程设计题目共轭梯度法算法分析与实现学号 2011041401011 姓名黄中武指导教师评语: 课程设计成绩 指导教师签字 年月日 最优化方法课程设计沈阳航空航天大学课程设计用纸目录 目录 一、正 文 (1) 二、总结 ............................................................... 8 参考文 献 ............................................................... 9 附录 .. (10) 第 I 页 最优化方法课程设计沈阳航空航天大学课程设计用纸正文 一、正文 一无约束最优化问题的共轭梯度法

实验2 最速下降法和共轭梯度法的程序设计

实验2 最速下降法和共轭梯度法的程序设计 一、实验目的 1、熟悉无约束优化问题的最速下降算法和共轭梯度法。 2、培养matlab 编程与上机调试能力。 二、实验课时:2个课时 三、实验准备 1、预习无约束优化问题的最速下降算法和共轭梯度法。 2、熟悉matlab 软件的基本操作及程序编写。 四、实验内容 课堂实验演示 根据最速下降法编写程序,求函数 21222121342)(min x x x x x x x f -++-= 的极小值,其中初始点为()01,1T x = 算法步骤如下: Step1::给出初始点0x ,和精度1;0k ε<<=; Step2:计算()k f x ?,如果()k f x ε?≤,则停止迭代,输出结果;否则转step3; Step3:令下降方向()k k d f x =-?,计算步长因子k λ使得0()min ()k k k k k f x d f x d λλλ≥+=+,令1,1k k k k x x d k k λ+=+=+,转step2。 其程序如下: function [x,iter,val,dval] = Steepest_Descent_Method(x,eps) k = 1; dy = grad_obj(x); x_mat(:,1) = x;%存储每一次迭代得到的点x while norm(dy)>eps d = -dy; % 搜索方向 lambda = line_search(x,d);%步长 x = x + d*lambda; k = k + 1; x_mat(:,k) = x; dy = grad_obj(x); end iter = k - 1; val = obj(x);%目标函数在极值点处的函数值

作业4-FR共轭梯度法

最优化方法第四次作业 题目:利用FR-共轭梯度法求解无约束优化问题222 12122min ()44412x R f x x x x x x ∈=+--。初始点(0)(0.5,1).T x =- () ()T k k T k k k k k k k g g g g k d g k g d 111110.0,;0,-----=???≥+-=-=ββ 一、程序 function [x,val,k]=frcg(fun,gfun,x0) %功能:用FR 共轭梯度法求解无约束问题min f (x ) %输入:x0是初始点,fun,gfun 分别是求目标函数和梯度 %输出:x,val 分别是近似最优点和最优值,k 是迭代次数 maxk=5000; rho=0.6; sigma=0.4; k=0; epsilon=1e-4; n=length(x0); while (k=0.0) d=-g; end end if (norm(d)

while (m<20) %用Armijo 搜索求步长 if (feval(fun,x0+rho^m*d)> x0=[-0.5,1]'; >> [x,val,k]=frcg('fun','gfun',x0) x = 1.0000 2.0000 val = -12.0000 k = 10 即22212122min ()44412x R f x x x x x x ∈=+--的极小值点x=[1;2];minf(x)= -12。

数值分析实验报告1——Hilbert矩阵的求解

数值分析课程实验报告 题目:病态线性方程组的求解 理论分析表明,数值求解病态线性方程组很困难。考虑求解如下的线性方程组的求解 Hx = b ,期中H 是Hilbert 矩阵,()ij n n H h ?=,1 1 ij h i j =+-,i ,j = 1,2,…,n 1. 估计矩阵的2条件数和阶数的关系 2. 对不同的n ,取(1,1,,1)n x =∈ ,分别用Gauss 消去,Jacobi 迭代,Gauss-seidel 迭代,SOR 迭代和共轭梯度法求解,比较结果。 3. 结合计算结果,试讨论病态线性方程组的求解。 解答过程 1.估计矩阵的2-条件数和阶数的关系 矩阵的2-条件数定义为:1 222 ()Cond A A A -=?,将Hilbert 矩阵带入有: 1222 ()Cond H H H -=? 调用自编的Hilbert_Cond 函数对其进行计算,取阶数n= 50,可得从1阶到50阶的2-条件数,以五位有效数字输出,其中前10项见表1。 表1.前十阶Hilbert 矩阵的2-条件数 从表1可以看出,随着阶数每递增1,Hilbert 矩阵的2-条件数都至少增加一个数量级,但难以观察出明显的相依规律。故考虑将这些数据点绘制在以n 为横轴、Cond (H )2为纵轴的对数坐标系中(编程用Hilbert_Cond 函数同时完成了这个功能),生成结果如图1。

图1.不同阶数下Hilbert矩阵的2-条件数分布 由图可见,当维数较小时,在y-对数坐标系中Cond(H)2与n有良好的线性关系;但n超过10后,线性趋势开始波动,n超过14后更是几乎一直趋于平稳。事实上,从n = 12开始,系统便已经开始提出警告:“Warning: Matrix is close to singular or badly scaled.Results may be inaccurate.”。也就是说,当n较大时,H矩阵已经接近奇异,计算结果可能是不准确的。通过查阅相关资料,我找到了造成这种现象的原因:在matlab中,用inv函数求条件数过大的矩阵的逆矩阵将是不可靠的。而调用系统自带的专门对Hilbert矩阵求逆的invhilb(n)函数则不存在这个问题,生成结果如图2。 图2. 修正后的不同阶数下Hilbert矩阵的2-条件数分布

肌组织实验报告

竭诚为您提供优质文档/双击可除 肌组织实验报告 篇一:表面肌实验报告 武汉理工大学 现代数字信号处理在前沿学科中的应用实验报告 基于semg时域特征的动作识别 学院:信息工程学院 学号:姓名: 班级:电子154 实验基于semg时域特征特的动作识别 一、实验目的 1.了解肌电信号常用的时域分析方法; 2.利用mATLAb对肌电信号进行去噪、特征提取及动作识别; 二、实验设备 1.wi-Fi表面肌电信号采集卡; 2.32位windowsxp台式机(matlab7.0软件); 3.802.11b/g无线网卡;

三、实验内容 (1)学习信号的基本去噪方法,并用mATLAb实现; (2)学习肌电信号常用的时域特征并利用matlab来进行波形长度(wL)符号改变数(ssc)、过零点(Zc)、威尔 逊赋值(wAmp)等特征的提取; (3)学习神经网络信号处理方法,掌握bp神经网络的用法,将其用于肌电信号的动作识别。 学习以上三个部分,最终完成一整套肌电信号去噪、特征提取(选取一种特征)、基于特征的动作识别的mATLAb程序。 四、实验原理 (1)小波去噪 小波去噪方法是一种建立在小波变换基础上的新兴算法,基本思想是根据噪声在不同频带上的小波分解系数具有不同强度分布的特点,将各频带上的噪声对应的小系数去除,保留原始信号的小波分解系数,然后对处理后系数进行小波重构,得到纯净信号。 小波去噪的基本原理图如下 (2)特征提取 时域分析是将肌电信号看成均值为零,而方差随着信号强度的变化而变化的随机信号。时域特征的计算复杂度低,提取比较方便。

最常用的方法有:方差,过零点数(Zerocrossing,Zc),willison幅值(willisonAmplitude,wAmp),绝对值平均值(meanAbsoluteValue,mAV)和波形长度(wavelength,wL)等。在实际应用中,为了让特征可以包含更多的信息,往往选择用不同的时域特征组合形成联合特征向量。我们主要介绍一下几种方法: 过零率(Zc):为波形通过零线的次数,从一定程度上反映了信号的频率特性。为了降低零点引入的噪声,往往会引入一个阈值δ。计算方式如下: sgn(?xk?xk?1),(xk?xk?1??)(1)willison幅值:是由willison提出一种对表面肌电信号的幅值变化数量进行计 算的方法,经过后人的研究,对willison幅值的阈值有了明确的范围限定,目前认为50~100?V是最合适的阈值范围。其数学表示公式如公式(3-3)。 wAmp??fxi?xi?1 t?1n(2) ?1f(x)???0其中:ifx?阈值otherwise 波形长度(wL):它是对某一分析窗中的波形长度的统计,波长可以体现该样本的持续时间、幅值、频率的特征。 1n?1 wL??x(i?1)?x(i)ni?1(3)符号改变斜率(ssc):为信号的的频率性能提供了一些附加信息,对于3个连续的采样

共轭梯度法程序

一、共轭梯度法 共轭梯度法(Conjugate Gradient)是共轭方向法的一种,因为在该方向法中每一个共轭向量都是依靠赖于迭代点处的负梯度而构造出来的,所以称为共轭梯度法。由于此法最先由Fletcher和Reeves (1964)提出了解非线性最优化问题的,因而又称为FR 共轭梯度法。由于共轭梯度法不需要矩阵存储,且有较快的收敛速度和二次终止性等优点,现在共轭梯度法已经广泛地应用于实际问题中。共轭梯度法是一个典型的共轭方向法,它的每一个搜索方向是互相共轭的,而这些搜索方向d仅仅是负梯度方向与上一次迭代的搜索方向的组合,因此,存储量少,计算方便,效果好。 二、共轭梯度法的原理 设有目标函数 f(X)=1/2X T HX+b T X+c 式1 式中,H作为f(X)的二阶导数矩阵,b为常数矢量,b=[b1,b2,b3,...b n]T 在第k次迭代计算中,从点X(k)出发,沿负梯度方向作一维搜索,得 S(K)=-?f(X(k))式2 X(k+1)=X(k)+ɑ(k)S(k) 式3 在式中,ɑ(k)为最优步长。 设与S(k)共轭的下一个方向S(k+1)由点S(k)和点X(k+1)负梯度的线性组

合构,即 S (k+1)=-?f (X (k+1))+β(k)S (k) 式4 根据共轭的条件有 [S (k)]T ?2f (X (k))S (k+1)=0 式5 把式2和式4带入式5,得 -[?f(X (k))]T ?2f (X (k))[-?f (X (k+1))+β(k)S (k) ]=0 式6 对于式1,则在点X (k)和点X (k+1)的梯度可写为 ?f(X (k))=HX (k)+b 式7 ?f (X (k+1))=HX (k+1)+b 式8 把上面两式相减并将式3代入得 ɑ(k)H S (k)=?f (X (k+1))-?f(X (k)) 式9 将式4和式9两边分别相乘,并代入式5得 -[?f (X (k+1))+β(k)?f(X (k))]T [?f (X (k+1))-?f(X (k)]=0 式10 将式10展开,并注意到相邻两点梯度间的正交关系,整理后得 β (k ) =2 2 ||))((||||))1((||k X f k X f ?+? 式11 把式11代入式4和式3,得 S (k+1)=-?f (X (k))+β (k ) S (k ) X (k+1)=X (k )+ɑ(k )S (k ) 由上可见,只要利用相邻两点的梯度就可以构造一个共轭方向。以这种方式产生共轭方向并进行迭代运算的方法,即共轭梯度法。

共轭梯度实验报告

竭诚为您提供优质文档/双击可除 共轭梯度实验报告 篇一:共轭梯度法实验报告 数值代数实验报告 一、实验名称:用共轭梯度法解线性方程组。 二、实验目的:进一步熟悉理解掌握共轭梯度法解法思路,提高matlab编程能力。三、实验要求:已知线性方程 矩阵,应用共轭梯度法在相关软件编程求解线性方程组的解。 四、实验原理: 1.共轭梯度法: 考虑线性方程组 Ax?b 的求解问题,其中A是给定的n阶对称正定矩阵,b是 给定的n维向量,x是待求解的n维向量.为此,定义二次泛 函 ?(x)?xTAx?2bTx. 定理1设A对称正定,求方程组Ax?b的解,等价于求二次泛函?(x)的极小值点.定理1表明,求解线性方程组问题

就转化为求二次泛函?(x)的极小值点问题.求解二次函数极 小值问题,通常好像盲人下山那样,先给定一个初始向量x0,确定一个下山方向p0,沿着经过点x0而方向为p0的直线 x?x0??p0找一个点 x1?x0??0p0, 使得对所有实数?有 ??x0??0p0????x0??p0?, 即在这条直线上x1使?(x)达到极小.然后从x1出发, 再确定一个下山的方向p1,沿着直 线x?x1??p1再跨出一步,即找到?1使得??x?在 x2?x1??1p1达到极小: ??x1??1p1????x1??p1?. 重复此步骤,得到一串 ?0,?1,?2, x?xk??pk上确定步长?k使 和p0,p1,p2, , 称pk为搜索方向,?k为步长.一般情况下,先在xk点 找下山方向pk,再在直线 ??xk??kpk????xk??pk?, 最后求出xk?1?xk??kpk.然而对不同的搜索方向和步长,得到各种不同的算法.

共轭梯度法

最速下降法and 共轭梯度法 分类:matlab 2011-04-17 17:02 961人阅读评论(2) 收藏举报算法出版优化 注明:程序中调用的函数jintuifa.m golddiv.m我在之前的笔记中已贴出 最速下降法 %最速下降法求解f = 1/2*x1*x1+9/2*x2*x2的最小值,起始点为x0=[9 1] %算法根据最优化方法(天津大学出版社)97页算法3.2.1编写 %v1.0 author: liuxi BIT %format long syms x1 x2 alpha; f = 1/2*x1*x1+9/2*x2*x2;%要最小化的函数 df=jacobian(f,[x1 x2]);%函数f的偏导 epsilon=1e-6;%0.000001k=0; x0=[9 1];%起始点 xk=x0; gk=subs(df,[x1 x2],xk);%起始点的梯度 gk=double(gk); while(norm(gk)>epsilon)%迭代终止条件||gk||<=epsilon pk=-gk;%负梯度方向 f_alpha=subs(f,[x1 x2],xk+alpha*pk);%关于alpha的函数 [left right] = jintuifa(f_alpha,alpha);%进退法求下单峰区间 [best_alpha best_f_alpha]=golddiv(f_alpha,alpha,left,right);%黄金分割法求最优步长xk=xk+best_alpha*pk; k=k+1; gk=subs(df,[x1 x2],xk); gk=double(gk); end best_x=xk;%最优点 best_fx=subs(f,[x1 x2],best_x);%最优值 共轭梯度法

最优化方法课程实验报告

项目一 一维搜索算法(一) [实验目的] 编写加步探索法、对分法、Newton 法的程序。 [实验准备] 1.掌握一维收搜索中搜索区间的加步探索法的思想及迭代步骤; 2.掌握对分法的思想及迭代步骤; 3.掌握Newton 法的思想及迭代步骤。 [实验内容及步骤] 编程解决以下问题: 1.用加步探索法确定一维最优化问题 1 2)(min 30 +-=≥t t t t ? 的搜索区间,要求选取2,1,000===αh t . 加步探索法算法的计算步骤: (1)选取初始点 ]) 0[)(0[max 00t t t ,或,∈?∞+∈,计算 )(00t ??=.给出初始步长0 >h , 加步系数1α>,令0=k 。 (2) 比较目标函数值.令k k k h t t +=+1,计算 )(11++=k k t ??,若k k ??<+1,转(3),否则转(4)。 (3) 加大探索步长.令 k k h h α=+1,同时,令,k t t =,1+=k k t t 1k k =+,转(2)。 (4) 反向探索.若0=k ,转换探索方向,令,k k h h -=1+=k t t ,转(2)。否则,停止迭代,令 11min{}max{}k k a t t b t t ++==,,,。 加步探索法算法的计算框图

程序清单 加步探索法算法程序见附录1 实验结果 运行结果为: 2.用对分法求解 )2()(min +=t t t ?, 已知初始单谷区间]5,3[],[-=b a ,要求按精度3.0=ε,001.0=ε分别计算. 对分法迭代的计算步骤: (1)确定初始搜索区间],[b a ,要求'()0'()0a b ??<>,。 (2) 计算],[b a 的中点)(2 1 b a c +=. (3) 若0)(<'c ?,则c a = ,转(4);若0)(='c ?,则c t =* ,转(5);若0)(>'c ?,则c b = ,转(4). (4) 若ε<-||b a ,则)(2 1* b a t +=,转(5);否则转(2). (5) 打印* t ,结束 对分法的计算框图

最优化课程设计--共轭梯度法算法分析与实现

最优化课程设计--共轭梯度法算法分析与实现 (设计程序) 题目共轭梯度法算法分析与实现 班级 / 学号 14140101/11 学生姓名黄中武指导教师王吉波王微微 课程设计任务书 课程名称最优化方法课程设计院(系) 理学院专业信息与计算科学 课程设计题目共轭梯度法算法分析与实现课程设计时间: 2014 年 6月 16日至2014 年 6月 27日 课程设计的要求及容: [要求] 1. 学习态度要认真,要积极参与课程设计,锻炼独立思考能力; 2. 严格遵守上机时间安排; 3. 按照MATLAB编程训练的任务要求来编写程序; 4. 根据任务书来完成课程设计论文; 5. 报告书写格式要求按照航空航天大学“课程设计报告撰写规”; 6. 报告上交时间:课程设计结束时上交报告; 7. 严禁抄袭行为,一旦发现,课程设计成绩为不及格。 一、运用共轭梯度法求解无约束最优化问题 要求:1)了解求解无约束最优化问题的共轭梯度法; 2)绘出程序流程图; 3)编写求解无约束最优化问题的共轭梯度法MATLAB程序; 4)利用编写文件求解某无约束最优化问题; 5)给出程序注释。

指导教师年月日 负责教师年月日 学生签字年月日 航空航天大学 课程设计成绩评定单 课程名称最优化理论与算法课程设计院(系) 理学院专业信息与计算科学课程设计题目共轭梯度法算法分析与实现学号 11 黄中武指导教师评语: 课程设计成绩 指导教师签字 年月日 最优化方法课程设计航空航天大学课程设计用纸目录 目录 一、正文 ............................................................... 1 二、总 结 ............................................................... 8 参考文 献 ............................................................... 9 附 录 (10) 第 I 页 最优化方法课程设计航空航天大学课程设计用纸正文 一、正文 一无约束最优化问题的共轭梯度法 共轭梯度法最初是由Hesteness和Stiefel于1952年为求解线形方程组而提出的。后来,人们把这种方法用于求解无约束最优化问题,使之成为一种重要的最优化方法。 下面,重点介绍Fletcher-Reeves共轭梯度法,简称FR法。

最优化牛顿法最速下降法共轭梯度法matlab代码

牛顿法 迭代公式:(1)2()1()[()]()k k k k x x f x f x +-=-?? Matlab 代码: function [x1,k] =newton(x1,eps) hs=inline('(x-1)^4+y^2'); 写入函数 ezcontour(hs,[-10 10 -10 10]); 建立坐标系 hold on; 显示图像 syms x y 定义变量 f=(x-1)^4+y^2; 定义函数 grad1=jacobian(f,[x,y]); 求f 的一阶梯度 grad2=jacobian(grad1,[x,y]); 求f 的二阶梯度 k=0; 迭代初始值 while 1 循环 grad1z=subs(subs(grad1,x,x1(1)),y,x1(2)); 给f 一阶梯度赋初值 grad2z=subs(subs(grad2,x,x1(1)),y,x1(2)); 给f 二阶梯度赋初值 x2=x1-inv(grad2z)*(grad1z)'; 核心迭代公式 if norm(x1-x2)

end end end 优点:在极小点附近收敛快 缺点:但是要计算目标函数的hesse 矩阵 最速下降法 1. :选取初始点xo ,给定误差 2. 计算一阶梯度。若一阶梯度小于误差,停止迭代,输出 3. 取()()()k k p f x =? 4. 10 t ()(), 1.min k k k k k k k k k k t f x t p f x tp x x t p k k +≥+=+=+=+进行一维搜索,求,使得令转第二步 例题: 求min (x-2)^4+(x-2*y)^2.初始值(0,3)误差为0.1 (1)编写一个目标函数,存为f.m function z = f( x,y ) z=(x-2.0)^4+(x-2.0*y)^2; end (2)分别关于x 和y 求出一阶梯度,分别存为fx.m 和fy.m function z = fx( x,y ) z=2.0*x-4.0*y+4.0*(x-2.0)^3; end 和 function z = fy( x,y )

表面肌实验报告

武汉理工大学 现代数字信号处理在前沿学科中的应用实验报告基于sEMG时域特征的动作识别 学院:信息工程学院 学号: 1049731503279 姓名:吴志勇 班级:电子154

实验基于sEMG时域特征特的动作识别 一、实验目的 1.了解肌电信号常用的时域分析方法; 2.利用MATLAB对肌电信号进行去噪、特征提取及动作识别; 二、实验设备 1.Wi-Fi表面肌电信号采集卡; 2.32位Windows XP台式机(Matlab 7.0软件); 3.802.11b/g无线网卡; 三、实验内容 (1)学习信号的基本去噪方法,并用MATLAB实现; (2)学习肌电信号常用的时域特征并利用Matlab来进行波形长度(WL)符号改变数(SSC)、过零点(ZC)、威尔逊赋值(WAMP)等特征的提取; (3)学习神经网络信号处理方法,掌握BP神经网络的用法,将其用于肌电信号的动作识别。 学习以上三个部分,最终完成一整套肌电信号去噪、特征提取(选取一种特征)、基于特征的动作识别的MATLAB程序。 四、实验原理 (1)小波去噪 小波去噪方法是一种建立在小波变换基础上的新兴算法,基本思想是根据噪声在不同频带上的小波分解系数具有不同强度分布的特点,将各频带上的噪声对应的小系数去除,保留原始信号的小波分解系数,然后对处理后系数进行小波重构,得到纯净信号。 小波去噪的基本原理图如下 (2)特征提取

时域分析是将肌电信号看成均值为零,而方差随着信号强度的变化而变化的随机信号。时域特征的计算复杂度低,提取比较方便。 最常用的方法有:方差,过零点数(Zero Crossing, ZC ),Willison 幅值(Willison Amplitude, WAMP ),绝对值平均值 (Mean Absolute Value, MAV )和波形长度(Wave length ,WL )等。在实际应用中,为了让特征可以包含更多的信息,往往选择用不同的时域特征组合形成联合特征向量。我们主要介绍一下几种方法: 过零率(ZC ):为波形通过零线的次数,从一定程度上反映了信号的频率特性。为了降低零点引入的噪声,往往会引入一个阈值δ。计算方式如下: )(),sgn(11δ≥-+-++k k k k x x x x (1) Willison 幅值:是由Willison 提出一种对表面肌电信号的幅值变化数量进行计算的方法,经过后人的研究,对Willison 幅值的阈值有了明确的范围限定,目前认为V μ100~50 是最合适的阈值范围。其数学表示公式如公式(3-3)。 ∑=+-=N t i i x x f WAMP 1 1 (2) 其中: ?? ?>=otherwise x if x f 阈值 01 )( 波形长度(WL ):它是对某一分析窗中的波形长度的统计,波长可以体现该样本的持续时间、幅值、频率的特征。 ∑-=-+= 1 1 ) ()1(1N i i x i x N WL (3) 符号改变斜率(SSC ):为信号的的频率性能提供了一些附加信息,对于3个连续的采样点,给定阈值ω,通过下面的公式计算波峰波谷的个数。 ()()()N i x x x x i i i i ,,1,11Λ=≥-?-+-ω (4) (3) 神经网络 BP 神经网络又称误差反向传播(Back Propagation ),它是一种多层的前向型神经网络。在BP 网络中,信号是前向传播的,而误差是反向传播的。所谓的反向传播是指误差的调整过程是从最后的输出层依次向之前各层逐渐进行的。标准的BP 网络采用梯度下降算法,与Widrow-Hoff 学习规则相似,网络权值沿着性能函数的梯度反向调整。 前向型神经网络通常具有一个或多个由sigmoid 神经元构成的隐层,以及一个由线性神经元构成的输出层。多个具有非线性传递函数的神经元层使得网络可以学习输入和输出之间的非线性关系,而线性输出层使得网络可以产生[-1,+1]之外的输出值。

共轭梯度法c++程序

最优化课程设计 题目:共轭梯度法 姓名:田鑫 指导老师:智红英 学号: 201118030216 班级:信息与计算科学111802班

共轭梯度法(Conjugate Gradient) 是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。 设我们要求解下列线性系统 其中n-×-n矩阵A是对称的(也即,A T = A),正定的(也即,x T Ax > 0对于所有非0向量x属于R n),并且是实系数的。 将系统的唯一解记作x*。 最后算法 经过一些简化,可以得到下列求解Ax = b的算法,其中A是实对称正定矩阵。x := 0 k := 0 r := b repeat until r k is "sufficiently small": k := k + 1 if k = 1 p := r0 1 else

end if x := x k-1 + αk p k k r := r k-1 - αk A p k k end repeat 结果为x k 共轭梯度法程序源代码 #include #include #define N 10 #define eps pow(10,-6) double f(double x[],double p[],double t) { double s; s=pow(x[0]+t*p[0],2)+25*pow(x[1]+t*p[1],2); return s; } /*以下是进退法搜索区间源程序*/ void sb(double *a,double *b,double x[],double p[]) { double t0,t1,t,h,alpha,f0,f1; int k=0; t0=2.5; /*初始值*/ h=1; /*初始步长*/ alpha=2; /*加步系数*/ f0=f(x,p,t0); t1=t0+h; f1=f(x,p,t1); while(1) {

共轭梯度法求极小值

应用共轭梯度法求解方程组121242 x x x x +=??-=?的根。初始值(0)(0,0)T x = 分析:将方程组Ax b =转化为优化问题中的极值问题然后应用共轭梯度法进行求解。 令()R x Ax b =-,只需求得x ,使得()R x 取得最小值。则有: min ()R x ?2min ()R x min T R R ? ()() ()() ()()()()2T T T T T T T T T T T T T T T T T T T T T T T T T T R R Ax b Ax b X A b Ax b X A AX X A b b Ax b b X A AX X A b b Ax b b X A A X b AX b Ax b b X A A X b AX b b =--=--=--+=--+=--+=-+这是一个数 与1()2 T T f x x Gx b x c =++比较 则有:2,()22T T T G A A g x A A A b ==- 回到题目问题中,则对应有124124012,,04444x G g b x --??????=== ? ? ?--?????? 也就是应用共轭梯度法求点使221212()2212420f x x x x x =+--+取得最小值。 程序清单: #include #include double a,b,s[2]; /*全局变量*/ double E=1e-6; double F(double x1,double x2) { double y; y=2*x1*x1+2*x2*x2-12*x1-4*x2+20; return (y); } void qujian(double x1,double x2) /*用前进后退法求a 的探索区间*/ { double a0=0,h=1,a1,a2,f1,f2,X1,X2,X3,X4; a1=a0;a2=a0+h; X1=x1+a1*s[0]; X2=x2+a1*s[1]; f1=F(X1,X2); X3=x1+a2*s[0]; X4=x2+a2*s[1]; f2=F(X3,X4); if (f1>f2) {

最优化理论与应用实验报告

最优化理论与应用实验报告 季晓南 实验目的: 实践所学的最优化方法。 工程描述: 本工程使用编写,主要包括以下几个文件: : 实现最优化方法的基本步骤 : 实现非精确一维搜索 : 实现基本函数操作 : 工程的基本配置 : 主要函数的声明 具体请参考每个函数的注释。 ● 代码可读性高,模块化强,采用了一致的代码规范,尽管这在一定程度上牺牲了效率, 但本着实验的目的,作者坚持这样做了。 ● 用户可以通过改变中的( )和( )来改变输入函数。 ● 对于不同的标准,如非精确一维搜索和,校正以及共轭梯度法中的和公式,用户都可以 通过改变中的宏定义实现。 ● 每次实验的结果和参数都会自动保存,这样有助于分析数据。 数据分析: 给定二次函数 ()x 22121f()=x +3x 2 (一)一维搜索 1. 非精确一维搜索参数对迭代次数的影响 由准则: T k k k k k f(x +s f(x +g s ρ≤)) ()1 (1)T k k k k k f(x +s f(x +g s ρ≥-)) ()2 可知:越大的ρ对应着越精确的搜索区间,取0.3ρ=使用再开始的共轭梯度法求解,得到迭代次数为,取0.4ρ=得到迭代次数为次,见同文件夹下的数据文件。 2. 准则与准则的比较 由准则 T T k+1k k k g d g d σ≥ ()' 2

σ=,打开宏,可以发现使用再开始共轭梯度法时,两次迭代就得到解。 在中修改0.5 见同文件夹下的数据文件。 3.非精确一维搜索参数对一维搜索速度的影响 对二次函数,参数的选择对一维搜索的参数选择是不敏感的。 (二)不同方法的比较 .最速下降法 最速下降法的效率是最低的,因为测试函数的等值线是一个椭球,搜索方向形成锯齿状曲线,故收敛速度慢。 2.共轭梯度法 若选择合适的参数,使用共轭梯度法,具有二次收敛性。在准则下,分别采用和公式生成共轭方向,发现要比的效果好。 3.拟牛顿方法 因拟牛顿法也是共轭方向法,故选择合适的参数,拟牛顿法也有二次收敛性。在准则下,分别采用和校正,发现要比要好。

相关主题