最优化大作业

合集下载

优化设计作业

优化设计作业

作业1. 阐述优化设计数学模型的三要素。

写出一般形式的数学模型。

答:建立最优化问题数学模型的三要素:(1)决策变量和参数。

决策变量是由数学模型的解确定的未知数。

参数表示系统的控制变量,有确定性的也有随机性的。

(2)约束或限制条件。

由于现实系统的客观物质条件限制,模型必须包括把决策变量限制在它们可行值之内的约束条件,而这通常是用约束的数学函数形式来表示的。

(3)目标函数。

这是作为系统决策变量的一个数学函数来衡量系统的效率,即系统追求的目标。

2. 阐述设计可行域和不可行域的基本概念答:约束对设计点在设计空间的活动范围有所限制。

凡满足所有约束条件的设计点,它在设计空间中的可能活动范围,称可行设计区域(可行域)。

不能满足所有约束条件的设计空间便是不可行设计区域(不可行域)。

3、无约束局部最优解的必要条件?答: (1)一元函数(即单变量函数) 极值点存在的必要条件如果函数f (x )的一阶导数f’(x )存在的话,则欲使x *为极值点的必要条件为: f’(x *)=0但使f’(x *)=0的点并不一定部是极值点;使函数f (x )的一阶导数f’(x )=0的点称为函数f (x )的驻点;极值点(对存在导数的函数)必为驻点,但驻点不一定是极值点。

至于驻点是否为极值点可以通过二阶导数f’’(x )=0来判断。

(2)n 元函数在定义域内极值点X *存在的必要条件为即对每一个变量的一阶偏导数值必须为零,或者说梯度为零(n 维零向量)。

▽f (X*)=0是多元函数极值点存在的必要条件,而并非充分条件;满足▽f (X*)=0的点X *称为驻点,至于驻点是否为极值点,尚须通过二阶偏导数矩阵来判断。

3. 阐述约束优化问题最优解的K-T 条件。

答:K-T 条件可阐述为:如果X (k)是一个局部极小点,则该点的目标函数梯度▽f (X (k))可表示成该点诸约束面梯度为▽g u (X (k))、▽h v (X (k))的如下线性组合:()()()()0****21=⎥⎦⎤⎢⎣⎡∂∂∂∂∂∂=∇T n x X f x X f x X f X f式中:q —在X (k)点的不等式约束面数;j —在X (k)点的等式约束面数;λu (u =1,2,…q )、μv (v =1,2,…j )——非负值的乘子,亦称拉格朗日乘子。

最优化方法大作业答案

最优化方法大作业答案

1.用薄钢板制造一体积5m 3,长度不小于4m ,无上盖的货箱,要求钢板耗量最小。

确定货箱的长x 1、宽x 2和高x 3。

试列出问题的数学模型。

解:min 32312122x x x x x x z ++= s.t 5321=x x x 41≥x 0,,321≥x x x2.将下面的线性规划问题表示为标准型并用单纯形法求解max f=x 1+2x 2+x 3s .t .2x 1+x 2-x 3≤2 -2x 1+x 2-5x 3≥-6 4x 1+x 2+x 3≤6 x i ≥0 i=1,2,3 解:先化标准形:Min 321x x x z -+=224321=+-+x x x x 6525321=++-x x x x646321=+++x x x x列成表格:121610011460105122001112-----可见此表已具备1°,2°,3°三个特点,可采用单纯形法。

首先从底行中选元素-1,由2/2,6/2,6/4最小者决定选第一行第一列的元素2,标以记号,迭代一次得121210231040116201002121211--------再从底行中选元素-2/3,和第二列正元素1/2,迭代一次得12123230210231040116201002121211-------再从底行中选元素-3,和第二列正元素2,迭代一次得4233410120280114042001112---再迭代一次得1023021062210231010213000421021013--选取最优解:01=x 42=x 23=x3. 试用DFP 变尺度法求解下列无约束优化问题。

min f (X )=4(x 1-5)2+(x 2-6)2取初始点X=(8,9)T ,梯度精度ε=0.01。

解:取IH=0,初始点()TX 9,8=2221)6()5(4)(-+-=x x x f⎥⎦⎤⎢⎣⎡--=∇122408)(21x x x f⎪⎪⎭⎫⎝⎛=∇624)()0(xfTx f d )6,24()()0()0(--=-∇=)0(0)0()1(dxxα+=T)69,248(00αα--=])669()5248(4min[)(min 2020)0(0)0(--+--⨯=+αααdxf 0)6()63(2)24()2458(8)(00)0(0)0(=-⨯-+-⨯--=+ααααd d xdf13077.0130170≈=α⎪⎪⎭⎫⎝⎛=⎪⎪⎭⎫ ⎝⎛--⨯+⎪⎪⎭⎫ ⎝⎛=21538.886153.462413077.098)1(x⎪⎪⎭⎫⎝⎛-=∇43077.410784.1)()1(xf进行第二次迭代:⎥⎦⎤⎢⎣⎡--=-=78463.013848.31)0()1(xxδ⎥⎦⎤⎢⎣⎡--=∇-∇=56924.110783.25)()(1)0()1(xf xf γ101011011101γγγγγδδδH HH H H TTTT-+=03172.8011=γδT86614.6321101==γγγγH T⎥⎦⎤⎢⎣⎡=61561.046249.246249.285005.911Tδδ⎥⎦⎤⎢⎣⎡==46249.240022.3940022.3940363.630110110TTHH γγγγ所以:⎪⎪⎭⎫⎝⎛--=0038.103149.003149.012695.01H⎪⎪⎭⎫⎝⎛-⨯⎪⎪⎭⎫⎝⎛---=∇-=43076.410784.10038.103149.003149.012695.0)()1(1)1(xf H d⎪⎪⎭⎫⎝⎛-=48248.428018.0令 )1(1)1()2(dx x α+=利用)()1()1(=+ααd dxdf ,求得49423.01=α,所以⎪⎪⎭⎫⎝⎛-+⎪⎪⎭⎫⎝⎛=+=21538.213848.021538.886152.449423.0)1()1()2(dxx⎪⎪⎭⎫ ⎝⎛=65因)()2(=∇xf ,于是停,)2(x 即为最优解。

小学四年级数学最优化问题提高训练(附答案解析)

小学四年级数学最优化问题提高训练(附答案解析)

最优化问题一、知识要点在日常生活和生产中,我们经常会遇到下面的问题:完成一件事情,怎样合理安排才能做到用的时间最少,效果最佳。

这类问题在数学中称为统筹问题。

我们还会遇到“费用最省”、“面积最大”、“损耗最小”等等问题,这些问题往往可以从极端情况去探讨它的最大(小)值,这类问题在数学中称为极值问题。

以上的问题实际上都是“最优化问题”。

二、精讲精练【例题1】用一只平底锅煎饼,每次只能放两个,剪一个饼需要2分钟(规定正反面各需要1分钟)。

问煎3个饼至少需要多少分钟?练习1:1、烤面包时,第一面需要2分钟,第二面只要烤1分钟,即烤一片面包需要3分钟。

小丽用来烤面包的架子,一次只能放两片面包,她每天早上吃3片面包,至少要烤多少分钟?2、用一只平底锅烙大饼,锅里只能同时放两个。

烙熟大饼的一面需要3分钟,现在要烙3个大饼,最少要用几分钟?【例题2】妈妈让小明给客人烧水沏茶。

洗水壶需要1分钟,烧开水需要15分钟,洗茶壶需要1分钟,洗茶杯需要1分钟。

要让客人喝上茶,最少需要多少分钟?练习2:1、小虎早晨要完成这样几件事:烧一壶开水需要10分钟,把开水灌进热水瓶需要2分钟,取奶需要5分钟,整理书包需要4分钟。

他完成这几件事最少需要多少分钟?2、小强给客人沏茶,烧开水需要12分钟,洗茶杯要2分钟,买茶叶要8分钟,放茶叶泡茶要1分钟。

为了让客人早点喝上茶,你认为最合理的安排,多少分钟就可以了?【例题3】五(1)班赵明、孙勇、李佳三位同学同时到达学校卫生室,等候校医治病。

赵明打针需要5分钟,孙勇包纱布需要3分钟,李佳点眼药水需要1分钟。

卫生室只有一位校医,校医如何安排三位同学的治病次序,才能使三位同学留在卫生室的时间总和最短?练习3:1、甲、乙、丙三人分别拿着2个、3个、1个热水瓶同时到达开水供应点打热水。

热水龙头只有一个,怎样安排他们打水的次序,可以使他们打热水所花的总时间最少?2、甲、乙、丙三人到商场批发部洽谈业务,甲、乙、丙三人需要的时间分别是10分钟、16分钟和8分钟。

最优化马昌凤第三章作业

最优化马昌凤第三章作业

最优化方法及其Matlab程序设计习题作业暨实验报告学院:数学与信息科学学院班级:12级信计一班姓名:李明学号:49第三章 最速下降法和牛顿法一、上机问题与求解过程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=;sigma=;%一开始选择时选择的rho和sibma选择的数据不够合理,此处我参照书上的数据编写数据k=0;epsilon=1e-5;while(k<maxk)g=feval(gfun,x0);%计算梯度d=-g;%计算搜索方向if(norm(d)<epsilon),break;endm=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搜索公式,一开始的时候没有记住公式编写出现错误endm=m+1;endx0=x0+rho^mk*d;k=k+1;endx=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[,调用函数程序,得出最小极值点为']6667.0[,极小值为8333500.1,,在界面框中输入的程序如下:.5[x,val,k]=grad('fun','gfun',x0)val =x =k =10从结果可以看出迭代次数为10次,如果选取不同的初值点则迭代次数不一样,但是极小值相同。

小学四年级奥数竞赛班作业第39讲:统筹与最优化

小学四年级奥数竞赛班作业第39讲:统筹与最优化
4. 一人理发时,其他人需等待,为使总的等待时间尽量短,应让理发所需时间少的人先 理.甲先给需 10 分钟的人理发,然后 15 分钟的,最后 24 分钟的;乙先给需 12 分钟的 人理发,然后 20 分钟的,甲给需 10 分钟的人理发时,有 2 人等待,占用三人的时间和 为(10 3 )分;然后,甲给需 15 分钟的人理发,有 1 人等待,占用两人的时间和为(15 2 ) 分;最后,甲给需 24 分钟的人理发,无人等待.甲理发的三个人,共用(103 15 2 24 ) 分 , 乙 理 发 的 两 个 人 , 共 用 ( 12 2 20 ) 分 . 总 的 占 用 时 间 为 (103 15 2 24)(12 2 20)128(分).
5. 有一家五口人要在夜晚过一座独木桥.他们家里的老爷爷行动非常不便,过桥需要 12 分钟;孩子们的父亲贪吃且不爱运动,体重严重超标,过河需要时间也较长,8 分钟; 母亲则一直坚持劳作,动作还算敏捷,过桥要 6 分钟;两个孩子中姐姐需要 3 分钟,弟
1
弟只要 1 分钟.当时正是初一夜晚又是阴天,不要说月亮,连一点星光都没有,真所谓 伸手不见五指.所幸的是他们有一盏油灯,同时可以有两个人借助灯光过桥.但要命的 灯油将尽,这盏灯只能再维持 30 分钟了!他们焦急万分,该怎样过桥呢?
A1 C
B
A2
A5
A6
D
F
E
公路
A3 A4 A7
5
答案: 1. 在不浪费时间的情况下:两张饼可同时煎完,三张饼也可以:首先 A,B 的正面,然后拿
走 A,煎 B 的反面和 C 的正面,然后拿走 B,煎 A,C 的反面. 2009 21003 3,完全可 以不浪费时间煎完,从而所需时间为: 2009 2 2 2009 分钟.

最优化方法与应用大作业(一)最速下降法

最优化方法与应用大作业(一)最速下降法

最优化方法与应用大作业(一)
---最速下降法部分:
1.问题描述:
用梯度下降法求解以下优化问题
min f(x)=(x1+10*x2)^2+5(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4
2.编程感想:
该算法需要计算Hesse矩阵,C语言在向量运算时没有Matlab方便,所以手工完成了理论计算,再输入,破坏了程序的移植性。

同时,实验表明当初始值离理想点较远且精度要求较高时,最速下降法的收敛速率极慢,迭代几乎不可能完成,这对初值的选取提出了一定限制。

3.结果分析:
编译界面(Mac os X,Xcode环境)
输入参数(设定为(0.1,0.2,0.3,0.4)):
结果(此处列出每次迭代结果)。

明显的看到,最速下降法的收敛较慢,最终结果接近理论值(F(0,0,0,0)=0)所以该结果可以满意。

4.算法代码见下页
西安电子科技大学电子工程学院020951
李骏昊02095005。

最优化方法大作业模板

最优化方法大作业模板

命题人:审核人:大作业学期:至学年度第学期课程:最优化方法课程代号:签到序号:使用班级:姓名:学号:题号一二三四五六七八九十总分得分一、(目标1)请从以下6种算法中任选一种,说明算法的来源、定义、基本思想和优缺点,并给出算法步骤(包含算法流程图)和例子(包含程序与运算结果)。

①禁忌搜索算法;②模拟退火算法;③遗传算法;④神经网络算法;⑤粒子群算法;⑥蚁群算法。

二、(目标1)某工厂生产甲、乙两种产品,已知生产这两种产品需要消耗三种材料A 、B 和C ,其中生产过程中材料的单位产品消耗量和总量,以及单位产品的利润如下表所示。

该如何配置安排生产计划,使得工厂所获得的利润最大?材料甲乙资源总量材料A (Kg )3265材料B (Kg )2140材料C (Kg )0375单位利润(元/件)15002500-(1)要保证工厂利润的最大化,写出相应的生产计划数学模型;(2)根据对偶理论,直接写出该线性规划的对偶问题;(3)采用单纯形表法对该该线性规划问题进行求解,写出详细的计算过程;(4)采用Matlab 软件对该线性规划问题进行求解,写出完整的源程序,并给出程序运行结果;(5)讨论当材料B 的资源总量发生变化时,该线性规划问题的最优解会如何变化?课程目标目标1……题号一、二、三、四、五……分值20、25、20、20、15……得分得分三、(目标1)求解下列无约束非线性规划问题(1)采用黄金分割法求解:min 4()24f x x x =++。

初始区间为[-1.0],精度为ε=10-4。

(要求:采用黄金分割法进行Matlab 编程求解,写出源程序,并给出运行结果,列出迭代过程的数据表格)(2)采用阻尼牛顿法求解:222121212min (,)4f x x x x x x =+-。

分别取两个初始点:x A =(1,1)T ,x B =(3,4)T 。

(要求:采用阻尼牛顿法进行Matlab 编程求解,并给出运行结果,列出迭代过程的数据表格)四、(目标1)求解下列约束非线性规划问题:22112212121212min ()23532..00f x x x x x x x x x x x s t x x =-+--+≤⎧⎪-≤⎪⎨≥⎪⎪≥⎩(1)采用罚函数法进行求解,需写出具体计算过程;(2)采用二次规划方法进行求解,需写出具体计算过程,并进行MATLAB 编程,写出源程序和运算结果;五、(目标1)(1)某商店在未来的4个月里,准备利用它的一个仓库来专门经营某种商品,仓库的最大容量为1000单位,而且该商店每月只能出卖仓库现有的货。

西电最优化上机报告(大作业)

西电最优化上机报告(大作业)

上机报告一.最速下降法算法简述:1.在本例中,先将最速下降方向变量赋一个值,使其二范数满足大于ε的迭代条件,进入循环。

2.将函数的一阶导数化简,存在一个矩阵,将其hesse矩阵存在另一个矩阵。

依照公式求出α,进而求出下一任迭代的矩阵初值。

循环内设置一个计数功能的变量,统计迭代次数。

3.求其方向导数的二范数,进行判别,若小于ε,则跳出循环,否则将继续迭代。

4.显示最优解,终止条件,最小函数值。

心得体会:最速下降法的精髓,无疑是求梯度,然后利用梯度和hesse矩阵综合计算,求解下一个当前最优解。

但是,要求函数是严格的凸函数,结合严格凸函数的大致图像,这就给初值的选取提供了一点参考。

例如在本例中,由于含有两个变量的二次方之和,结合大致图像,想当然的,初值的选取应当在原点附近;又因为变量的二次方之和后面,还减去了变量的一次形式和一次混合积,所以初值的选取应该再向第一象限倾斜。

综合以上考量,第一次选取(1,1)作为初值,判别精度方面,取到千分位,暂定为0.001。

运行以后,结果显示迭代了25次,最优解为(3.9995,1.9996),终止条件为5.4592e-04,目标函数为-8.0000。

这个结果已经相当接近笔算结果。

整体的运行也比较流畅,运算速度也比较快。

第二次取值,决定保留判别精度不变,将初值再适当向第一象限倾斜,取(2,2)作为初值,运行后,显示只迭代了11次!最优结果显示(3.9996,1.9997),终止条件为3.6204e-04,最优解-8.0000。

可见,最优结果更接近理想值,终止条件也变小了,最关键的是,迭代次数减少至第一次的一半以下!这说明以上初选取的方向是对的!第三次再进行初值细化,判别精度仍然不变,初值取(3,3)。

结果令人兴奋,只迭代了四次!最优解已经显示为(4.0000,2.0000),终止条件为2.4952e-04,目标函数-8.0000。

第四次,判别精度不变,取初值(4,4)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最优化方法大作业---------用优化算法求解函数最值问题摘要最优化(optimization) 是应用数学的重要研究领域.它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。

最优化问题一般包括最小化问题和最大化问题,而最大化问题可以通过简单的转化使之成最最小化问题。

最小化问题分为两类,即约束最小化和无约束最小化问题。

在此报告中,前两个问题属于无约束最小化问题的求解,报告中分别使用了“牛顿法”和“共轭梯度法”。

后两个问题属于有约束最小化问题的求解,报告中分别用“外点法”和“内点法”求解。

虽然命名不一样,其实质都是构造“惩罚函数”或者“障碍函数”,通过拉格朗日乘子法将有约束问题转化为无约束问题进行求解。

再此报告中,“外点法”和“内点法”分别用了直接求导和调用“牛顿法”来求解无约束优化问题。

在此实验中,用“共轭梯度法”对“牛顿法”所解函数进行求解时出现错误,报告中另取一函数用“共轭梯度法”求解得到正确的结果。

此实验中所有的函数其理论值都是显见的,分析计算结果可知程序正确,所求结果误差处于可接受范围内。

报告中对所用到的四种方法在其使用以前都有理论说明,对“外点法”中惩罚函数和“内点法”中障碍函数的选择也有相应的说明,另外,对此次试验中的收获也在报告的三部分给出。

本报告中所用程序代码一律用MATLAB编写。

【关键字】函数最优化牛顿法共轭梯度法内点法外点法 MATLAB一,问题描述1,分别用共轭梯度发法和牛顿法来求解一下优化问题()()()()()441432243221102510min x x x x x x x x x f -+-+-++=2, 分别用外点法和内点发求解一下优化问题⎩⎨⎧≥-++01.min 212231x x t s x x二、问题求解用牛顿法求解()()()()()441432243221102510min x x x x x x x x x f -+-+-++=1.1.1问题分析:取步长为1而沿着牛顿方向迭代的方法称为牛顿法,在牛顿法中,初始点的取值随意,在以后的每次迭代中,()[]()k k k k x f x f x x ∇∇-=-+121,直到终止条件成立时停止。

1.1.2 问题求解注:本程序编程语言为MATLAB ,终止条件为()162110-≤∇x f ,初始取值为[10 10 10 10]M 文件(求解函数)如下:function s=newton1(f,c,eps) %c 是初值,eps 为允许误差值 if nargin==2 eps=;elseif nargin<1 error('') % return endsyms x1 x2 x3 x4x=[x1 x2 x3 x4].';grad = jacobian(f).';hesse = jacobian(grad);a=grad;b=hesse;i=1;gradk=subs(a,[x1 x2 x3 x4],[c(1) c(2) c(3) c(4)]); hessek=subs(b,[x1 x2 x3 x4],[c(1) c(2) c(3) c(4)]);pk=-1*(hessek\gradk);x=tihuan(c);while norm(gradk)>=epsx=x+pk;gradk=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]); hessek=subs(b,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]); pk=-hessek\gradk;i=i+1;enddisp('the times of iteration is:')disp(i)disp('The grad is:')disp(gradk)disp('and the result is:')x=x.';disp(x)return“tihuan”子函数:function x=tihuan(x)x(1)=x(1);x(2)=x(2);x(3)=x(3);x(4)=x(4);end调用方式如下:syms x1 x2 x3 x4f=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4;c=[10 10 10 10]';%初始值newton1(f,c,eps);1.1.3 计算结果如下:由上述结果可知,当迭代次数达到47次时满足终止条件,此时x 为* [ ],显然,此题的理论解为[0 0 0 0],分析上述结果,与理论解的误差处于可接受范围之内。

求解完成。

用共轭梯度法求解函数()()()()()441432243221102510min x x x x x x x x x f -+-+-++=用共轭梯度法求解上述函数的程序代码如下:1.2.1问题分析: 取()00x f p -∇=,当搜索到1+k x 时,共轭方向()2,...,1,0,11-=+-∇=++n k p x f p k k k k λ,此时,1+k p 与k p A 共轭,用k Ap 右乘上式得()kTk k k k k k Ap p Ap x f Ap p λ+-∇=++11,由1=+k Tk Ap p 得()2,...,1,01-=∇=+n k Ap p Ap x f kT p kTk k λ,若不满足条件,进行下一次迭代。

1.1.2 问题求解注:程序所用语言为MATLAB ,精度为1610-=epssyms x1 x2 x3 x4 t0 t1f=(x1+10*x2)^2+5*(x3-x4)^2+(x2-2*x3)^4+10*(x1-x4)^4;c=[10;10;10;10];grad1 = diff(f,x1);grad2=diff(f,x2);grad3 = diff(f,x3);grad4=diff(f,x4);grad=[grad1;grad2;grad3;grad4];a=grad;i=1;n=40;gradk=subs(a,[x1 x2 x3 x4],[c(1) c(2) c(3) c(4)]);x=tihuan(c);p0=0;while norm(gradk)>=epsp0=-gradk;y=x;x=x+t0*p0;k=0;gradk=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]);w=solve(gradk(1)+gradk(2)+gradk(3)+gradk(4));t0=real(w);t0=eval(t0);t0=t0(1);x=y+t0*p0;gradk=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]);while norm(gradk)>=epsif k+1~=ngradk2=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]); gradk1=subs(a,[x1 x2 x3 x4],[y(1) y(2) y(3) y(4)]); lamda=norm(gradk2).^2/norm(gradk1).^2;p0=-gradk2+lamda*p0;k=k+1;elsek=0;p0=-subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]); endclear y; y=x;x=x+t1*p0;gradk=subs(f,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]);m=solve(gradk);t1=real(m); t1=eval(t1(1));x=x+t1*p0;x=eval(x);clear m;clear t1;syms t1gradk=subs(a,[x1 x2 x3 x4],[x(1) x(2) x(3) x(4)]);enddisp(x.') return; enddisp(x.')此程序为一初步程序,假设初值为[10;10;10;10],则第一次运算得t0=,lamda=,迭代后的x=NaN 。

现用共轭梯度法求解另一函数 ()222125min x x x f +=对上述程序稍加改动来求解本题的代码如下: 注:程序所用语言为MATLAB ,精度为1610-=epsfunction s=gongegrad2(f,c,eps) %c 是初值,eps 为允许误差值 if nargin==2 %eps=;elseif nargin<1 error('') return end ticsyms x1 x2 t0 t1 grad1 = diff(f,x1); grad2=diff(f,x2); grad=[grad1;grad2]; a=grad; i=1;n=40;gradk=subs(a,[x1 x2],[c(1) c(2)]); x=tihuan(c); p0=0;while norm(gradk)>=eps p0=-gradk; y=x;x=x+t0*p0; k=0;gradk=subs(f,[x1 x2],[x(1) x(2)]); w=solve(gradk); t0=real(w); t0=eval(t0); t0=t0(1); x=y+t0*p0;gradk=subs(a,[x1 x2],[x(1) x(2)]);while norm(gradk)>=epsif k+1~=ngradk2=subs(a,[x1 x2],[x(1) x(2)]);gradk1=subs(a,[x1 x2],[y(1) y(2)]);lamda=norm(gradk2)^2/norm(gradk1)^2;p0=-gradk2+lamda*p0;k=k+1;elsek=0;p0=-subs(a,[x1 x2],[x(1) x(2)]);endclear y; y=x;x=x+t1*p0;gradk=subs(f,[x1 x2],[x(1) x(2)]);m=solve(gradk);t1=real(m); t1=eval(t1(1));x=y+t1*p0;clear m;clear t1;syms t1gradk=subs(a,[x1 x2],[x(1) x(2)]);enddisp(sprintf('the last point we want is [%f %f]',x(1),x(2))); disp(sprintf('the times used to recursion is %f',k));disp(sprintf('the function value is %f',x(1)^2+25*x(2)^2));tocreturn;enddisp(sprintf('the last point we want is [%f %f]',x(1),x(2))); disp(sprintf('the times used to recursion is %f',k));disp(sprintf('the function value is %f',x(1)^2+25*x(2)^2)); toc“tihuan”子函数为:function x=tihuan(x)[v,g]=size(x);for i=1:vx(i)=x(i);end程序调用方式为:clear allclcsyms x1 x2 t0 t1f=x1^2+25*x2^2;c=[2;2];%初值gongegrad2(f,c,eps)程序结果如下:由上述结果知,用共轭梯度法对上述函数求解需要迭代三次得到最优解0,此时x 为[0 0];符合理论分析的结果,求解完成。

相关文档
最新文档