用matlab实现共轭梯度法求解实例.doc

用MATLAB 实现共轭梯度法求解实例 康福 201103710031 1.无约束优化方法 1.1 无约束优化方法的必要性 一般机械优化设计问题,都是在一定的限制条件下追求某一指标为最小,它 们都属于约束优化问题。但是为什么要研究无约束优化问题?(1)有些实际问题,其数学模型本身就是一个无约束优化问题。(2)通过熟悉它的解法可以为研究约束优化问题打下良好的基础。(3)约束优化问题的求解可以通过一系列无约束优化方法来达到。所以无约束 优化问题的解法是优化设计方法的基本组成部分,也是优化方法的基础。 (4)对于多维无约束问题来说,古典极值理论中令一阶导数为零,但要求二阶 可微,且要判断海赛矩阵为正定才能求得极小点,这种方法有理论意义, 但无实用价值。和一维问题一样,若多元函数F(X)不可微,亦无法求解。 但古典极值理论是无约束优化方法发展的基础。 1.2共轭梯度法 目前已研究出很多种无约束优化方法,它们的主要不同点在于构造搜索方向 上的差别。 (1)间接法——要使用导数,如梯度法、 (阻尼)牛顿法、变尺度法、共轭梯度 法等。 (2)直接法——不使用导数信息,如坐标轮换法、鲍威尔法单纯形法等。 用直接法寻找极小点时,不必求函数的导数,只要计算目标函数值。这类方 法较适用于解决变量个数较少的(n ≤20)问题,一般情况下比间接法效率低。 间接法除要计算目标函数值外,还要计算目标函数的梯度,有的还要计算其海赛 矩阵。 搜索方向的构成问题乃是无约束优化方法的关键。 共轭梯度法是沿着共轭方向进行搜索,属于共轭方向法中的一种,该方法中 每一个共轭向量都是依赖于迭代点处的负梯度而构造出来。共轭梯度法作为一种 实用的迭代法,它主要有下面的优点: (1)算法中,系数矩阵A的作用仅仅是用来由已知向量P产生向量W=AP,这不仅 可充分利用A的稀疏性,而且对某些提供矩阵A较为困难而由已知向量P产 生向量W=AP又十分方便的应用问题是很有益的。 (2)不需要预先估计任何参数就可以计算,这一点不像SOR等; (3)每次迭代所需的计算,主要是向量之间的运算,便于并行化。 共轭梯度法原理的知识较多,请详见《机械优化设计》第四章的第四、五节。 图1为共轭梯度法的程度框图 1 ( 0,1,2, ) k k k k s k       x x图1为共轭梯度法的程度框图 2.设计题目及要求 2.1设计题目 用共轭梯度法求二次函数 2 2 1 2 1 2 1 1 2 ( , ) 2 4 2 f x x x x x x x    的极小点及极小值。 2.2设计要求 (1)使用matlab编写程序,熟练撑握matlab编程方法。(2)学习并撑握共轭梯度法的原理、方法及应用,并了解不同无约束优化方法的 区别、优缺点及特殊要求。 (3)编写程序,计算出二次函数的极小点及极小值,并适当选取不同的初始点及 迭代精度精度,分析比较结果。 三.计算步骤 3.1计算求解 解:已知初始点[1,1] T迭代精度 0.001   1)第一次沿负梯度方向搜寻 计算初始点处的梯度: 为一维搜索最佳步长,应满足 得:2)第二次迭代代入目标函数 由 得 从而有: 因 收敛。 0 1 2 0 2 1 2 2 4 4 ( ) 4 2 2 x x f x x                    x x 0 1 0 0 0 0 0 1 4 1 4 1 2 1 2                               x x d 1 0 0 2 ( ) min ( ) min(40 20 3) f f           x x d 0 0.25   1 2 0.5        x 1 1 ( ) 2 f           x 2 1 2 0 0 ( ) 5 0.25 20 ( ) f f       x x 1 1 0 0 2 ( ) 1.5 f             d x d 2 1 1 2 2 2 2 0.5 1.5 0.5 1.5                              x x d 2 2 ( ) (2 2 ) 2(0.5 1.5 ) 2(2 2 )(0.5 1.5 ) 4(2 2 ) ( ) f x                  ( ) 0     1   2 2 2 4 0 , ( ) 8, ( ) 2 0 f f                  x x x 2 ( ) 0 f     x3.2运行与程序 运行:打开matlab,确定conjugate_grad_2d.m文件夹为当前目录。在命令窗中输入:f=conjugate_grad_2d([1,1],0.001)选择不同的初始点坐标[0,0],[0,1],[1,0],和迭代精度0.01,0.0001,进 行运行时,需要多次调用conjugate_grad_2d函数。 程序及说明: function f=conjugate_grad_2d(x0,t) %用共轭梯度法求已知函数f(x1,x2)=x1^2+2*x2^2-4*x1-2*x1*x2的极值点 %已知初始点坐标:x0 %已知收敛精度:t %求得已知函数的极值:f x=x0; syms xi yi a; %定义自变量,步长为符号变量 f=xi^2+2*yi^2-4*xi-2*xi*yi; %创建符号表达式f fx=diff(f,xi); %求表达式f对xi的一阶求导 fy=diff(f,yi); %求表达式f对yi的一阶求导 fx=subs(fx,{xi,yi},x0); %代入初始点坐标计算对xi的一阶求导实值 fy=subs(fy,{xi,yi},x0); %代入初始点坐标计算对yi的一阶求导实值 fi=[fx,fy]; %初始点梯度向量 count=0; %搜索次数初始为0 while double(sqrt(fx^2+fy^2))>t %搜索精度不满足已知条件s=-fi; %第一次搜索的方向为负梯度方向if count<=0s=-fi;elses=s1;endx=x+a*s; %进行一次搜索后的点坐标f=subs(f,{xi,yi},x); %构造一元搜索的一元函数φ(a)f1=diff(f); %对函数φ(a)进行求导f1=solve(f1); %得到最佳步长aif f1~=0ai=double(f1); %强制转换数据类型为双精度数值elsebreak %若a=0,则直接跳出循环,此点即为极值点endx=subs(x,a,ai); %得到一次搜索后的点坐标值f=xi^2+2*yi^2-4*xi-2*xi*yi;fxi=diff(f,xi);fyi=diff(f,yi);fxi=subs(fxi,{xi,

共轭梯度法matlab实验报告,用matlab实现共轭梯度法求解实例.doc相关推荐

  1. matlab实验报告七,matlab实验报告七

    matlab实验报告七 成绩 辽宁工程技术大学上机实验报告 实验名称 实验七 matlab在概率统计中的应用 院系 理学院 专业 信息与计算科学 班级 信科11-1班 姓名 姜超 学号 1111010 ...

  2. 电力系统matlab实验报告,基于matlab语言计算电力系统暂态稳定仿真程序实验报告.docx...

    基于matlab语言计算电力系统暂态稳定仿真程序实验报告 BeijingJiaotongUniversity 电力系统分析 暂态稳定分析实验 学院:电气工程学院 班级:xxxxxxxx 学号:xxxx ...

  3. matlab实验报告七,matlab实验报告(实验).doc

    学生实验报告 开课学院及实验室:机电学院 2012年11月16日 学院机电学院年级.专业.班姓名学号实验课程名称MATLAB程序设计成绩实验项目名称实验1:数据类型及其运算(2)指导老师实验目的 了解 ...

  4. 数值分析用MATLAB实验报告,数值分析matlab实验报告

    数值分析实验,matlab 实验3.1最小二乘拟合 一.实验内容 编制以函数 xk k 0为基的多项式最小二乘拟合程序,并用于对下表中数据作3次 n 取权数 i n akx k 1,求拟合曲线 k 0 ...

  5. matlab实验报告四,matlab实验报告4

    实验四M文件的编写 一.实验环境 计算机MA TLAB软件 二.实验目的 1.学习MA TLAB中的关系运算和逻辑运算,掌握它们的表达形式和用法. 2.掌握MA TLAB中的选择结构和循环结构. 3. ...

  6. 多元线性回归分析matlab实验报告,利用MATLAB进行多元线性回归.ppt

    <利用MATLAB进行多元线性回归.ppt>由会员分享,可在线阅读,更多相关<利用MATLAB进行多元线性回归.ppt(15页珍藏版)>请在人人文库网上搜索. 1.2.线性回归 ...

  7. matlab实验报告2,MATLAB实验报告 (2)

    K0=5时系统的阶跃响应曲线 由运行结果可知,K0=2时系统临界稳定:随着K0的增加,系统将趋于不稳定. K0=1,T=0.1和T=0.01下的阶跃响应曲线 K0=2,T=0.1和T=0.01下的阶跃 ...

  8. matlab实验报告的总结,一些数字信号处理实例(学校实验报告总结)

    (1) B=[x x x]; A=[x x x]; %输入系统的系数矩阵 [X,w]=freqz(B,A);%求取系统频率响应 subplot(2,1,1),plot(w/pi,abs(X)); %幅 ...

  9. matlab dsp实验报告,matlab实验报告14.pdf

    matlab实验报告14 Matlab实验报告 院系名称 :信息科学与工程学院 专业班级 :通信工程 1303 指导老师 :陈科文 ,支国明 ,张金焕 ,周扬 学生姓名 : 学号 : 目录 实验一 熟 ...

最新文章

  1. R语言使用rpart包构建决策树模型、使用prune函数进行树的剪枝、交叉验证预防过拟合、plotcp可视化复杂度、rpart.plot包可视化决策树、使用table函数计算混淆矩阵评估分类模型性能
  2. O365(世纪互联)SharePoint 之站点个性化
  3. javase基础回顾(三) 动态代理
  4. php三表关联,详解Yii2 hasOne(), hasMany()实现三表关联的两种方法
  5. 生成1~n的全排列,按字典序输出
  6. C语言的标识符由什么组成
  7. Thymeleaf 简介、教程
  8. 3.1_ 6_ 基本分页存储管理的基本概念
  9. 计算机等级考试中的c语言程序
  10. delphi 检测网络是否连通_WebRTC:连接建立过程的网络穿透
  11. python条件语句练习题_[python](1)---条件语句练习题
  12. html直链如何修改成js,javascript – 使用route params直接链接到URL会破坏AngularJS App...
  13. (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(1)
  14. 田径运动会管理系统之Java
  15. 整数分区(求将整数拆分成任意个数正整数的方法个数)codewars 爆炸求和
  16. 阿里巴巴Java开发手册(2018-2021泰山版整理)
  17. 转动惯量和电机的选型
  18. 20位顶级设计师的桌面环境
  19. C# 客户端使用Excel批量导入数据
  20. bzoj2037 Sue的小球(区间dp,考虑到对未来的贡献)

热门文章

  1. zeal使用教程_Zeal 食用指南
  2. 做一个衣柜广告的HTML,衣柜广告语、宣传语
  3. Java语言的十大特性
  4. Caffe2的安装详述
  5. APS-C画幅三强宾得K3、佳能70D、尼康D7100关键参数对比_我是亲民_新浪博客
  6. SOLID 软件设计原则
  7. 《新知客》趣题专栏 2010.07
  8. python怎样创建变量_Python变量的创建
  9. 维特比(Viterbi)算法
  10. 公司年会脱口秀《家》