*
数学建模实 验
王汝军
河西学院数学与统计学院
wangrujun711@163.com
*
实验十一 导弹追踪问题
王汝军
河西学院数学与统计学院
wangrujun711@163.com
实验目的
1.进一步巩固、加强微分方程模型的建模、求解能力。
2.初步研究微分方程解的稳定性和数值解法。
3.学习掌握用MATLAB软件求解常微分方程数值解的相关命令。
*
实验内容
设位于坐标原点的甲舰向位于x 轴上点 A(1,0)处的乙舰发射导弹,导弹始终对准乙舰。如果乙舰以最大的速度v0 沿平行于y 轴的直线行驶,导弹的速度是5 v0,求导弹运行的曲线。当乙舰行驶多远时,导弹将它击中?
*
实验准备
*
实验准备1
2.求一维极小的二点二次插值方法
设 是点 处的一个搜索方向,要在该方向上寻优问题,转化为求一维函数 的求极值问题。
最常用的一维搜索方法是插值法,即用某些点的函数值(或导数值)构造插值函数,用插值函数的极小点来近似函数 的极小点。
这里介绍一种有效的插值方法,称为二点二次插值方法,即用二点处的函数值和一个点处的导数值构造二次函数,反复用二次函数的极小点来逼近函数 的极小点。
*
实验准备1
*
实验准备1
3.最速下降法
前面介绍了一维搜索的二点二次插值方法,下面讨论如何选择搜索方向的问题,我们先来看看两个概念。
定义1 称n维向量 为函数 在 处的梯度,记为
定义2 设d是任意的单位向量,若极限
存在,则称该极限为函数 在 处沿方向d的一阶方向导数,简称为方向导数,记为 ,
*
实验准备1
最速下降法的基本思想:选取一点 作为初始点,计算该点的梯度 ,求该点处的最速下降方向,即令 ,再沿 方向前进,寻找该方向上的极小点,得到点 ,再计算 ,令 ,沿 方向前进,得到点 ,如此下去……具体算法如下
*
实验准备1
*
实验准备1
在算法中, 为精度要求,即当梯度接近于0时,我们就认为达到极小点,终止计算。这样做的目的是避免算法产生死循环,算法中的一维搜索可用算法1来求解。
最速下降法是一种最基本的算法,它在最优化方法中占有重要地位。其优点是工作量小,存储变量较少,初始点要求不高;
缺点是收敛慢,效率不高,有时达不到最优解。
下面介绍一种简单而直观的方法——Newton法。
*
实验准备1
*
实验准备1
*
实验准备2
*
x = fmin( ' fun ' , x1 , x2 ) 求一元函数y = f( x )在[ x1 , x2 ]内的极小值
x = fmin( ' fun ' , x1 , x2 , options ) 同上,参数options的定义由表1给出
[ x , options ] = fmin( ... ) 同上,同时返回参数options的值
fmin函数采用黄金分割法和抛物线插值法,fun可直接用函数表达式表示,也可以是用M文件定义的函数名。
实验准备2
*
x = fmins( ' fun ' , x0 , options ) 求多元函数以x0为迭代初值的局部极小值,参数options的定义由表1给出
[ x , options ] = fmins( ... ) 同上,同时返回参数options的值
fmins函数采用Nelder–Meade单纯形搜索法,fun可直接用函数表达式表示,也可以是用M文件定义的函数名。
x = fminu( ' fun ' , x0 ) 求多元函数以x0为迭代初值的局部极小值
x = fminu( ' fun ' , x0 , options ) 同上,参数options的定义由表1给出
[ x , options ] = fminu( ' fun ' , x0 , ... ) 同上,同时返回参数options的值
fminu函数为无约束优化提供了三种算法,由options(6)控制,为步长一维搜索提供了二种算法,由options(7)控制。这里,fminu必须先用M–文件定义函数fun。
实验准备2
*
fminbnd替代fmin求解一元函数极值,使用格式、搜索算法与之相同,[ x , Fval ] = fminbnd( ' fun ' , x0 ,... )同时返回解x处的函数值,而不是参数options的返回值
fminsearch替代fmins求解多元函数(1)极值,使用格式、搜索算法与之相同
fminunc替代fminu求解多元函数(1)极值,使用格式、搜索算法与之相同
有关上述命令的详细信息和使用方式可在帮助文件中了解,或在命令框里输入help “命令名”查阅。在MATLAB5.3以上的各种最新版本中fmin、fmins和fminu命令仍然有用,但在MATLAB的未来版本将可能删除这些命令。
实验准备2
(3)命令中参数options的有关定义
在大多数MATLAB优化命令函数中有一个控制参数options,它是一个有18个分量的向量,包含了在优化程序中要用到的参数,以便在计算最优值时控制精度要求、输出形式、搜索算法、迭代次数、步长等等是。在对优化命令函数的第一次调用时,向量options会自动使用缺省值;当然在调用前,可以对options的某些分量进行赋值,以达到控制要求。
*
实验准备2
*
实验准备2
*
命令使用
1.MATLAB优化工具箱中解无约束问题的命令和参数options的基本用法
*
*
*
问题分析及模型建立
*
问题求解
*
问题求解
x =
35.8482
54.7380
fval =
-1.0015e+004
甲种品牌产量为35.8482,乙种品牌产量为54.7380,最大利润和为1.0015e+004。
用fminu可得到同样结果,同时根据参数options可观察到函数采用拟牛顿的DFP
并迭代计算了20次。
*
思考与练习
*