最优化方法实验报告(2)
最优化方法(黄金分割与进退法)实验报告

一维搜索方法的MATLAB 实现姓名: 班级:信息与计算科学学号: 实验时间: 2014/6/21一、实验目的:通过上机利用Matlab 数学软件进行一维搜索,并学会对具体问题进行分析。
并且熟悉Matlab 软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。
二、实验背景: 黄金分割法它是一种基于区间收缩的极小点搜索算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。
1、算法原理黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。
2、算法步骤用黄金分割法求无约束问题min (),f x x R ∈的基本步骤如下:(1)选定初始区间11[,]a b 及精度0ε>,计算试探点:11110.382*()a b a λ=+-11110.618*()a b a μ=+-。
(2)若k k b a ε-<,则停止计算。
否则当()()k k f f λμ>时转步骤(3)。
当()()k k f f λμ≤转步骤(4)。
(3)11111110.382*()k k k k k kk k k k a b b a b a λλμμ+++++++=⎧⎪=⎪⎨=⎪⎪=+-⎩转步骤(5)(4)转步骤(5)(5)令1k k =+,转步骤(2)。
算法的MATLAB 实现function xmin=golden(f,a,b,e)k=0;x1=a+0.382*(b-a);x2=a+0.618*(b-a);while b-a>ef1=subs(f,x1);f2=subs(f,x2);if f1>f2a=x1;x1=x2;f1=f2;x2=a+0.618*(b-a);elseb=x2;x2=x1;f2=f1;x1=a+0.382*(b-a);endk=k+1;endxmin=(a+b)/2;fmin=subs(f,xmin)fprintf('k=\n');disp(k);3、实验结果(总结/方案)黄金分割法求解极值实例。
最优化实验报告

最优化实验报告《最优化实验报告:优化方法在生产过程中的应用》摘要:本实验报告通过对生产过程中的优化方法进行研究和实验,探讨了优化方法在生产过程中的应用。
通过实验结果分析,发现优化方法在生产过程中能够有效提高生产效率和降低成本,对企业的生产经营具有重要的意义。
1. 研究背景随着全球经济的发展和竞争的加剧,企业在生产过程中需要不断提高效率、降低成本,以保持竞争优势。
优化方法作为一种有效的管理工具,在生产过程中的应用备受关注。
因此,本实验旨在研究和探讨优化方法在生产过程中的应用效果。
2. 实验设计本实验选取了某工厂的生产线作为研究对象,通过对生产过程的观察和数据收集,确定了生产过程中存在的问题和瓶颈。
然后,针对这些问题和瓶颈,设计了不同的优化方法,并进行了实验验证。
3. 实验方法在实验中,我们采用了多种优化方法,包括线性规划、遗传算法、模拟退火算法等。
通过对比不同优化方法的效果,找到了最适合该生产过程的优化方法。
4. 实验结果实验结果表明,优化方法在生产过程中能够显著提高生产效率和降低成本。
通过优化方法的应用,生产线的生产能力得到了提升,生产成本也得到了有效控制。
这些结果为企业的生产经营带来了明显的好处。
5. 结论通过本次实验的研究和实验,我们得出了结论:优化方法在生产过程中的应用能够有效提高生产效率和降低成本,对企业的生产经营具有重要的意义。
因此,企业应该重视优化方法的应用,不断探索和创新,以提高自身的竞争力和持续发展能力。
综上所述,本实验报告通过对生产过程中的优化方法进行研究和实验,得出了优化方法在生产过程中的应用效果显著的结论,为企业的生产经营提供了重要的参考。
希望本实验报告能够对相关领域的研究和实践提供一定的借鉴和启发。
最优化方法实验报告

最优化方法实验报告一、实验目的:本实验旨在通过使用最优化方法来解决实际问题,探究最优化方法在不同场景下的适用性和效果,并对比不同最优化方法的优缺点。
二、实验原理:三、实验过程:1.准备工作确定要解决的问题,并确定问题的数学模型。
例如,可以选择一个具有约束条件的优化问题,如线性规划问题。
2.实验步骤(1)选择最优化方法根据实际问题的特点选择适合的最优化方法。
例如,如果问题具有多个局部最优解,可以选择遗传算法来避免陷入局部最优。
(2)实现算法根据选择的最优化方法,编写相应的算法实现代码。
可以使用编程语言如Python来实现算法。
(3)进行实验使用实际数据或人工生成的数据来测试算法的效果。
根据实验结果评估算法的性能,并对比不同算法的效果。
3.结果分析通过对比不同算法的效果,分析各种方法的优缺点,评估其适用性和可靠性。
四、实验结果与讨论:在本次实验中,我们选择了一个线性规划问题作为例子,使用了遗传算法和优化算法来求解。
具体问题为:有两种产品A和B,产品A的利润为5元,产品B的利润为10元。
每天可以生产的产品总数为50。
产品A的生产量不超过30,产品B的生产量不超过20。
求解在满足以上约束条件下,如何安排生产计划使得总利润最大。
我们首先使用了优化算法来求解。
通过编写代码,使用优化算法来最大化总利润。
结果发现,在满足约束条件的情况下,总利润最大为350元。
然后,我们使用了遗传算法来求解。
遗传算法是一种模仿生物进化过程的算法,通过选择、交叉和变异等操作来优化解。
在实验中,我们设置了一组初始解作为遗传算法的种群,并通过不断迭代优化解。
结果发现,在相同的迭代次数下,遗传算法得到的结果比优化算法更优,总利润最大为400元。
通过对比两种算法的结果,我们发现遗传算法相对于优化算法在该问题上具有更好的性能。
遗传算法通过不断迭代寻找更好的解,能够更好地避免陷入局部最优。
五、实验结论:本实验通过使用最优化方法来解决一个实际问题,对比了优化算法和遗传算法的效果。
最优化方法实验报告(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的共轭梯度算法一、实验目的及要求(1)熟悉使用共轭梯度法求解无约束非线性规划问题的原理;(2)在掌握原理的基础上熟练运用此方法解决问题(3)学会利用计算机语言编写程序来辅助解决数学问题;(4)解决问题的同时分析问题,力求达到理论与实践的统一;(5)编写规范的实验报告.实验内容二、实验原理1.基本思想:把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。
根据共轭方向的基本性质,这种方法具有二次终止性。
在各种优化算法中,共轭梯度法是非常重要的一种。
其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。
2.程序流图:三、实验代码通过查阅相关资料,编写一个基于Matlab的共轭梯度算法,具体代码如下:function f=grad_2d(x0,t)%用共轭梯度法求已知函数f(x1,x2)=x1^2+2*x2^2-4*x1-2*x1*x2的极值点%已知初始点坐标:x0%已知收敛精度:t%求得已知函数的极值:fx=x0;syms xi yi a; %定义自变量,步长为符号变量f=xi^2+2*yi^2-4*yi-2*xi*yi; %创建符号表达式ffx=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; %搜索次数初始为0while 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,yi},x);fyi=subs(fyi,{xi,yi},x);fii=[fxi,fyi]; %下一点梯度向量d=(fxi^2+fyi^2)/(fx^2+fy^2);s1=-fii+d*s; %下一点搜索的方向向量count=count+1; %搜索次数加1fx=fxi;fy=fyi; %搜索后终点坐标变为下一次搜索的始点坐标endx,f=subs(f,{xi,yi},x),count %输出极值点,极小值以及搜索次数end四、实验结果在命令窗口输入:f=grad_2d([1,1],0.0000001)输出结果如下:x =4.0000 2.0000f =-8.0000count = 75f =-8.0000当在命令窗口输入如下命令时:f=grad_2d([2,1],0.0000001)x =4.0000 2.0000f =-8.0000count =22f =-8.0000当在命令窗口输入如下命令时:f=grad_2d([2,1],0.001)x = 3.9996 1.9999f =-8.0000count =12f =-8.0000由以上结果可知:(1.)初始点不同搜索次数不同(2.)无论初始点为多少,精度相同时最终结果极值点都是(4.0000,2.0000)(3.)当初始点相同时,若精度不一样搜索次数和最终结果会有差异但大致相同。
最优化学习方法总结(2篇)

最优化学习方法总结1.手脑并用原则(1)要明确化学学习是认识过程,艰苦的脑力劳动,别人是代替不了的。
(2)对教师来说,一方面要使学生能主动地学习,就要不断地使他们明确学习目的,提高学习兴趣,增强学习动机。
引导学生认识到从事化学研究既有宏观的物质及其变化的现象、事实,又有微观粒子的组成、结构和运动变化,还要学习各种基本技能。
认识到学习时动手、动眼、动口又动脑的重要。
自觉地全神贯注读、做、想练结合。
并注意指导学生改进动脑又动手的方法,提高学生观察、思维、想象等能力。
另一方面,要从心理学、生理学和信息论等方面,提高对主动学习的认识。
如信息论认为,学习是信息通过各种感观进入大脑,进行编码、转换、储存、组合、反馈等一系列过程。
就信息输入来说,有强有弱,当学习者高度主动自觉时,大脑皮层处于兴奋状态,就能主动调节感受器官,接受各种输入信息。
如果学习不主动,信息没有很好输入,后面的信息处理就要发生很多问题。
因此,要通过例子,使学生认识被动地学,只看老师做,听老师讲,而不开动脑筋想是学不好的。
实验不动手做,也掌握不了基本技能的。
学习中遇到问题,通过思考解决不了时,就主动请老师、同学帮助解决,做到勤学好问。
2.系统化和结构化原则系统化和结构化原则,就是要求学生将所学的知识在头脑中形成一定的体系,成为他们的知识总体中的有机组成部分,而不是孤立的、不相联系的。
因为只有系统化、结构化的知识,才易于转化成为能力,便于应用和学会学习的科学方法。
它是感性认识上升为理性认识的飞跃之后,在理解的基础上,主观能动努力下逐步形成的。
这是知识的进一步理解和加深,也是实验中运用知识前的必要过程。
因此,在教和学中,要把概念的形成与知识系统化有机联系起来,加强各部分化学基础知识内部之间,以及化学与物理、数学、生物之间的逻辑联系。
注意从宏观到微观,以物质结构等理论的指导,揭露物质及其变化的内在本质。
并在平时就要十分重视和做好从已知到未知,新旧联系的系统化工作。
最优化方法实验

《最优化方法》实验报告实验序号:01 实验项目名称:线性规划及MATLAB应用《最优化方法》实验报告实验序号:02 实验项目名称:0.618黄金分割法的应用结果分析:根据以上结果可知,在区间[0,3]上,函数g(x)=x^3-2*x+1的最小值点在x=0.9271处,此时最小值为0。
第二题:P50 例题3.1程序:function [t,f]=golden3(a,b) %黄金分割函数的m文件t2=a+0.382*(b-a);f2=2*(t2)^2-(t2)-1;t1=a+0.618*(b-a); %按照黄金分割点赋值,更准确可直接算f1=2*(t1)^2-(t1)-1;while abs(t1-t2)>0.16; %判定是否满足精度if f1<f2a=t2;t2=t1;f2=f1;t1=a+0.618*(b-a);f1=2*(t1)^2-(t1)-1;elseb=t1;t1=t2;f1=f2;t2=a+0.382*(b-a);f2=2*(t2)^2-(t2)-1;endendt=(t1+t2)/2; %满足条件取区间中间值输出第四题:P64 T3程序:function [t,d]=newtow2(t0)t0=2.5;t=t0-(4*(t0)^3-12*(t0)^2-12*(t0)-16)/(12*(t0)^2-24*(t0)-12);k=1;T(1)=t;while abs(t-t0)>0.000005t0=t;t=t0-(4*(t0)^3-12*(t0)^2-12*(t0)-16)/(12*(t0)^2-24*(t0)-12); k=k+1;T(k)=t;endt1=t0;d=(t1)^4-4*(t1)^3-6*(t1)^2-16*(t1)+4;kTend运行结果:当x(0)=2.5当x(0)=3四.实验小结:1.通过这次实验,加深了对0.618法的理解。
2.在学习0.618法的过程中,又巩固了倒数、求解函数值等相关知识。
最优化方法课程实验报告

项目一 一维搜索算法(一)[实验目的]编写加步探索法、对分法、Newton 法的程序。
[实验准备]1.掌握一维收搜索中搜索区间的加步探索法的思想及迭代步骤; 2.掌握对分法的思想及迭代步骤;3.掌握Newton 法的思想及迭代步骤。
[实验内容及步骤]编程解决以下问题:1.用加步探索法确定一维最优化问题的搜索区间,要求选取.加步探索法算法的计算步骤: (1)选取初始点,计算.给出初始步长,加步系数,令。
(2) 比较目标函数值.令k k k h t t +=+1,计算 )(11++=k k t ϕϕ,若k k ϕϕ<+1,转(3),否则转(4)。
(3) 加大探索步长.令,同时,令,转(2)。
(4) 反向探索.若,转换探索方向,令,转(2)。
否则,停止迭代,令。
加步探索法算法的计算框图12)(min 30+-=≥t t t t ϕ2,1,000===αh t ])0[)(0[max 00t t t ,或,∈⊂∞+∈)(00t ϕϕ=00>h 1α>0=k k k h h α=+1,k t t =,1+=k k t t 1k k =+0=k ,k k h h -=1+=k t t 11min{}max{}k k a t t b t t ++==,,,程序清单加步探索法算法程序见附录1实验结果运行结果为:2.用对分法求解,已知初始单谷区间,要求按精度,分别计算.对分法迭代的计算步骤:(1)确定初始搜索区间],[b a ,要求。
(2) 计算],[b a 的中点)(21b ac +=. (3) 若0)(<'c ϕ,则c a = ,转(4);若0)(='c ϕ,则c t =*,转(5);若0)(>'c ϕ,则c b = ,转(4).(4) 若ε<-||b a ,则)(21*b a t +=,转(5);否则转(2).(5) 打印*t ,结束对分法的计算框图)2()(min +=t t t ϕ]5,3[],[-=b a 3.0=ε001.0=ε'()0'()0a b ϕϕ<>,程序清单对分法程序见附录2实验结果运行结果为:3.用Newton 法求解,已知初始单谷区间,要求精度.Newton 法的计算步骤(1) 确定初始搜索区间],[b a ,要求 (2) 选定0t(3) 计算(4) 若 ε≥-||0t t ,则t t =0,转(3);否则转(5).(5) 打印 ,结束.Newton 法的计算框图12)(min 3+-=t t t ϕ]1,0[],[=b a 01.0=ε'()0'()0a b ϕϕ<>,000'()/"()t t t t ϕϕ=-()t t ϕ,程序清单Newton 法程序见附录3实验结果运行结果为:项目二 一维搜索算法(二)[实验目的]编写黄金分割法、抛物线插值法的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最优化方法实验报告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>ε;b )若ε≤∇)()0(x f ,停止,极小点为)0(x ,否则转c ); c )0()0()0(=-∇=k x f p ),且置取;d )用一维搜索方法求k t ,使得)(min )()()(0)()(k k t k k k tp x f p t x f +=+≥ 令)()()1(k k k k p t x x +=+,转e );e )若ε≤∇+)()1(k xf ,停止,极小值为)1(+k x ,否则转f ); f )若,,1)()0(n x x n k ==+令转c ),否则转g );g )令2)(2)1()1()1(()()(k k k k k x f x f x f p ∇∇=+-∇=+++λ,三、实验内容:1.最速下降法的MATLAB 实现2.牛顿法的MATLAB 实现3.共轭梯度法的MATLAB 实现四、实验过程:1.最速下降法的函数: function [x,minf] = minFD(f,x0,var,eps) %最速下降法主函数if nargin == 3eps = 1.0e-6;endsyms l;tol = 1;gradf = - jacobian(f,var);while tol>epsv = Funval(gradf,var,x0);tol = norm(v);y = x0 + l*v;yf = Funval(f,var,y);[a,b] = minJT(yf,0,0.1);%进退法求区间xm = minHJ(yf,a,b);%黄金分割法x1 = x0 + xm*v;x0 = x1;endx = x1;minf = Funval(f,var,x);%进退法函数function [minx,maxx] = minJT(f,x0,h0,eps) if nargin == 3eps = 1.0e-6;endx1 = x0;k = 0;h = h0;while 1x4 = x1 + h;k = k+1;f4 = subs(f, findsym(f),x4);f1 = subs(f, findsym(f),x1);if f4 < f1x2 = x1;x1 = x4;f2 = f1;f1 = f4;h = 2*h;elseif k==1h = -h;x2 = x4;f2 = f4;elsex3 = x2;x2 = x1;x1 = x4;break;endendendminx = min(x1,x3);maxx = x1+x3 - minx;%黄金分割法函数function [x,minf] = minHJ(f,a,b,eps) if nargin == 3eps = 1.0e-6;endl = a + 0.382*(b-a);u = a + 0.618*(b-a);k=1;tol = b-a;while tol>eps && k<100000fl = subs(f , findsym(f), l);fu = subs(f , findsym(f), u);if fl > fua = l;l = u;u = a + 0.618*(b - a);elseb = u;u = l;l = a + 0.382*(b-a);endk = k+1;tol = abs(b - a);endif k == 100000disp('找不到最小值!');x = NaN;minf = NaN;return;endx = (a+b)/2;minf = subs(f, findsym(f),x);2.牛顿法的函数:function [x,minf] = minNT(f,x0,var,eps) if nargin == 3eps = 1.0e-6;endtol = 1;x0 = transpose(x0);gradf = jacobian(f,var);jacf = jacobian(gradf,var);while tol>epsv = Funval(gradf,var,x0);tol = norm(v);pv = Funval(jacf,var,x0);p = -inv(pv)*transpose(v);p = double(p);x1 = x0 + p;x0 = x1;endx = x1;minf = Funval(f,var,x);3.共轭梯度法的函数:function [x,minf] = minGETD(f,x0,var,eps) if nargin == 3eps = 1.0e-6;endx0 = transpose(x0);n = length(var);syms l;gradf = jacobian(f,var);v0 = Funval(gradf,var,x0);p = -transpose(v0);k = 0;while 1v = Funval(gradf,var,x0);tol = norm(v);if tol<=epsx = x0;break;endy = x0 + l*p;yf = Funval(f,var,y);[a,b] = minJT(yf,0,0.1);%进退法求区间xm = minHJ(yf,a,b);%黄金分割法x1 = x0 + xm*p;vk = Funval(gradf,var,x1);tol = norm(vk);if tol<=epsx = x1;break;endif k+1==nx0 = x1;continue;elselamda = dot(vk,vk)/dot(v,v);p = -transpose(vk) + lamda*p;k = k+1;x0 = x1;endendminf = Funval(f,var,x);%进退法函数function [minx,maxx] = minJT(f,x0,h0,eps) if nargin == 3eps = 1.0e-6;endx1 = x0;k = 0;h = h0;while 1x4 = x1 + h;k = k+1;f4 = subs(f, findsym(f),x4);f1 = subs(f, findsym(f),x1);if f4 < f1x2 = x1;x1 = x4;f2 = f1;f1 = f4;h = 2*h;elseif k==1h = -h;x2 = x4;f2 = f4;elsex3 = x2;x2 = x1;x1 = x4;break;endendendminx = min(x1,x3);maxx = x1+x3 - minx;%黄金分割法函数function [x,minf] = minHJ(f,a,b,eps) if nargin == 3eps = 1.0e-6;endl = a + 0.382*(b-a);u = a + 0.618*(b-a);k=1;tol = b-a;while tol>eps && k<100000fl = subs(f , findsym(f), l);fu = subs(f , findsym(f), u);if fl > fua = l;l = u;u = a + 0.618*(b - a);elseb = u;u = l;l = a + 0.382*(b-a);endk = k+1;tol = abs(b - a);endif k == 100000disp('找不到最小值!');x = NaN;minf = NaN;return;endx = (a+b)/2;minf = subs(f, findsym(f),x);五、实验结果(总结/方案) 1、最速下降法:用最速下降法求函数1)2()4(),(22+++-=s t s t f 的极小值,初始点取)3,1(0-=x 。
在command window 中输入:>>syms t s;f=(t-4)^2+(s+2)^2+1;[t,mf]=minFD(f,[1 -3],[t s])输出结果:x= 4.0000 -2.0000 mf= 12、牛顿法:用牛顿法求函数1)2()4(),(22+++-=s t s t f 的极小值,其中初始点取为)0,0(0=x 。