APP下载

Matlab程序设计在黄金分割法教学中的应用

2019-01-03李丰兵李向利

课程教育研究 2019年51期
关键词:软件

李丰兵 李向利

【摘要】黄金分割法是一种简单而实用的一维搜索算法,是最优化方法课程中的一个基本内容。在黄金分割法的理论教学过程中,本文利用Matlab程序设计辅助解答了两个有关黄金分割法收敛特性的教学问题,使得课堂讲解更加直观、更加清楚,同时改变了以往枯燥乏味的课堂气氛,吸引了学生的注意力,提高了教师的教学效率。

【关键词】黄金分割法  Matlab 软件  实验仿真

【中图分类号】G42  【文献标识码】A 【文章编号】2095-3089(2019)51-0252-02

1.引言

黄金分割法[1,2,3]又称为0.618法,是最优化算法中一种基本的一维搜索算法,本质上是一种用来求解單谷函数极值的方法,其算法思想是通过迭代的方式逐步缩小搜索区间,直到极小值点所在的区间长度满足所给定精度要求时算法终止迭代,具体步骤如下:

步1:给定初始搜索区间[a,b],及计算精度eps>0;

步2:计算x1=a+0.382(b-a),x2=a+0.618(b-a);

步3:若x2-x1

步4: 若f(x1)≥f(x2),则令a=x1,转步2;

若f(x1)

尽管黄金分割法的算法步骤比较简单,但在课堂上仅仅依靠理论讲解,很多学生对它的理解还是不够深入,特别是对黄金分割法的各种收敛性能。本文利用Matlab程序设计辅助解答了课堂上碰到的两个教学问题:(1)如何结合实例介绍黄金分割法的迭代过程以及算法的收敛性能。(2)如何理解算法的精度要求与所需的迭代次数存在的关系。

2.实验仿真分析

为辅助解答上述两个问题,考虑以下实例

例:设f(x)=-(sinx)6tan(1-x)e6x,求f(x)

对于第一个问题,本文利用Matlab程序设计分析迭代次数与最优解和最优目标函数值的关系,并由此了解算法的迭代过程以及收敛性能,编写程序如下:

程序中数组OPTXV及OPTYV分别用来存储每次迭代后的最优解和最优目标函数值,t为迭代次数,输入参数值设为a=0,b=1,eps=0.00001,运行程序即可得每次迭代后的最优解和最优目标函数值,如下

OPTXV=0.5, 0.691, 0.80904, 0.88199, 0.92707, 0.89921, 0.91642, 0.90578, 0.91236 0.9083, 0.90578, 0.90734, 0.90638, 0.90578, 0.90615, 0.90592, 0.90606, 0.90598, 0.90603,        0.906, 0.90602, 0.90601。

OPTYV=-0.13324, -1.3514, -3.5605, -4.9879, -4.9832, -5.1292, -5.1066, -5.1431, -5.1299, -5.1414, -5.1431, -5.1425, -5.143, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431。

为了更直观地了解黄金分割法的收敛性能,利用Matlab的绘图函数plot可以画出最优解和最优目标函数值随迭代次数的增大的变化曲线图,如图1所示。从图1中可清楚看出,黄金分割法的收敛速度相对于迭代次数来说,前期收敛较快,后期明显收敛很慢。

对于第二个问题,为了分析精度要求值与迭代次数的关系,分别取精度值eps为:10-10,10-9,10-8,…,10-1,利用Matlab的for循环语句及调用黄金分割法的自定义函数就可以算出每个精度值所需的迭代次数,具体程序如下:

运行程序后可得到不同精度值对应的迭代次数为:T = [46,42,37,32,27,22,18,13,8,3]。为了更直观地分析精度值eps与迭代次数t的关系,先对eps取以10为底的对数,然后再利用Matlab的绘图函数plot画出精度值的对数值与迭代次数的关系图,如图2所示。

由图2可清楚看出,精度值的对数值与迭代次数几乎呈线性关系。

3.结论

本文利用Matlab程序设计,针对某一个实际问题对黄金分割法进行了两个实验仿真,由仿真结果及其图像直观地展示了黄金分割法的算法特性,再结合理论讲解,使得课堂上学生学习变得更加轻松、更加容易、学习效率和学习积极性都得到了提高。同时,教师的教学效果也明显得到了改善,“教”与“学”不再是枯燥乏味的事情。

参考文献:

[1]何坚勇.最优化方法[M].北京:清华大学出版社,2007.

[2]马昌凤.最优化方法及其Matlab程序设计[M].北京:科学出版社,2010.

[3]陈宝林.最优化理论与算法[M].北京:清华大学出版社,2005.

作者简介:

李丰兵(1980.08-),男,苗族,贵州思南人,硕士,中级职称,研究方向为复杂网络及人工智能。

猜你喜欢

软件
基于BERT的提示学习实现软件需求精确分类
禅宗软件
防鼠软件
基于云计算的软件自动化测试方法
软件对对碰
巧用立创EDA软件和Altium Designer软件设计电路
GIS相关软件在风景园林中的应用
软件修正
谈软件的破解与保护