您好,欢迎来到刀刀网。
搜索
您的当前位置:首页最优化上机作业1

最优化上机作业1

来源:刀刀网
中国矿业大学(北京)实验报告 课程名称: 最优化计算方法 指导教师: 付云姗 班级: 信软2013 姓名: 孙裕道 学号: 1311710119 实验项目名称:

一维优化方法练习

实验目的及要求:

1. 编写程序实现进退法,利用进退法求解极值区间实例; 2. 编写程序实现0.618法,利用0.618法求解极值实例; 3. 编写程序实现牛顿法,来求解一维函数的局部极小值点。

实验原理:

在Matlab环境下,按照要求编写函数和程序,求解实例,直至取得正确的运行结果。 算法1:进退法

S1 给出x0R,h0>0, 令h:=h0,1,x1:x0,k:=0;

S2 令x4=x1+h, 置k:=k+1;

S3 若f(x4)S4 令x2=x1,x1=x4,f(x2)=f(x1),f(x1)=f(x4),令 h=2h,转S2; S5 若k=1,则转S6,否则转S7;

S6 令h=-h,x2=x4,f(x2)=f(x4),转S2;

S7 令x3=x2,x2=x1,x1=x4,停止计算极小值点包含于[x1,x3]或[x3,x1].

算法2:0.618法

S1 选定区间[a1,b1]及精度0,计算试探点

a10.382*(b1a1) a10.618*(b1a1) 令 k=1;

S2 若b1a1,则停止计算。

否则,当f()f()时转S3;当f()f()时转S4; S3 令a1:,:,:a10.618*(b1a1), 转 S5; S4令b1:,:,:a10.382*(b1a1), 转 S5; S5 令k:=k+1,转S2.

第 1 页,共 7 页

中国矿业大学(北京)实验报告 算法3:牛顿法

S1 给出x0R精度0,令k:=0; S2 若

f(xk)xk1xk, 停止,极小值点为xk;

f(xk)f(xk);

S3 令

S4 令k:=k+1, 转S2.

实验内容(方法和步骤):

题目1 编写程序实现进退法。

利用Matlab编写函数 [xmin,xmax]=Brackeing(f,x0,h0).区间[xmin,xmax]包含函数f的一个局部极值点。

Brackeing.m文件

function [xmin,xmax] = Brackeing(f, x0, h0) h = h0; x1 = x0; k = 0; while 1 k = k + 1; x4 = x1 + h; if f(x4)x2 = x1; x1 = x4; h = 2*h; continue; elseif k==1

h = -h; x2 = x4;

第 2 页,共 7 页

中国矿业大学(北京)实验报告 continue; else

x3 = x2; x2 = x1; x1 = x4; break; end end if x1xmin =x3; xmax = x1; end

题目2

利用进退法求解极值区间实例。取初始点x0=0,步长h0=0.1,用进退法求函数

f(t)(t21)2(t1)23的极值区间。

f.m文件 function y =f(t)

y = (t^2 - 1)^2 + (t - 1)^2 +2; end

shiyan1_2.m文件 clear

第 3 页,共 7 页

中国矿业大学(北京)实验报告 x0 = 0; h0 = 0.1; f1 = @f;

[xmin, xmax] = Brackeing(f1, x0, h0)

题目3 编写程序实现0.618法。

利用Matlab编写函数 [x,miny]=MinHJ(f,a,b,eps).调用函数得到的x为函数f在区间[a,b]上的局部极小值点。

MinHJ.m文件

function [x, miny] = MinHJ(f, a, b, eps) h = b-a;

a0 = a + 0.382 * h; b0 = a + 0.618 * h; while ha0 = a + 0.382 * h; else

a = a0; h = b-a; a0 = b0;

b0 = a + 0.618 * h; end

第 4 页,共 7 页

中国矿业大学(北京)实验报告 end x = a0; miny = h;

题目4 利用0.618法求解极值实例。

222f(t)(t1)(t1)3,t[10,10]. 利用0.618法求下面函数的极小值;

Shiyan1_4.m文件 clear

a = -10; b = 10; eps = 0.1; f1 = @f;

[x, miny] = MinHJ(f1, a, b, eps)

题目5 编写程序实现牛顿法。

利用Matlab编写函数 [x,minf]=Newton(f,x0,eps).其中f为目标函数,x0为初始点,eps为算法终止的精度。用牛顿法求解无约束优化问题minf(x)。

function [x, minf] = Newton(f, x0, eps) k = 0; x= x0; g = diff(f); h = diff(g);

gx = subs(g, findsym(g), x); while abs(gx)>eps

hx = subs(h, findsym(h), x); x = x - gx/hx; k = k + 1;

第 5 页,共 7 页

中国矿业大学(北京)实验报告 gx = subs(g, findsym(g), x); end

x = vpa(x, 12);

minf = subs(f, findsym(f), x); minf = vpa(minf, 12); end

题目6

2f(t)tlnt5的任一极小值点。 取初始点x0=2,用牛顿法求函数

shiyan1_62.m文件

clear syms t;

f = t^2 - log(t) - 5; x0 = 2;eps = 1.0e-6;

[x, minf] = Newton(f, x0, eps)

实验结果与分析:

shiyan1_2.m运行结果:

Shiyan1_4.m运行结果:

第 6 页,共 7 页

中国矿业大学(北京)实验报告

shiyan1_62.m运行结果:

由于题目要求写函数[x,minf]=Newton(f,x0,eps).其中f为目标函数,Newton函数内部后续还要对f求微分,有点麻烦。经查阅,自变量为符号的函数可以作为参数传递给其他函数,并且不影响微分运算,但是如果用到f的函数值,必须再搭配subs函数,将f在某点的值计算出来复制给一个表示数字的变量。

成绩:

批阅教师签名: 年 月 日

第 7 页,共 7 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务