1、淮阴师范学院毕业论文(设计)1摘 要 : 数学函数极值和物理优化问题都是比较常见的一类极值问题,在解决这类问题的时候,我们通常想到的只是建立函数模型,按照求导或者求微分法则进行复杂精确的人工演算,最后得出结论.但是随着多媒体技术的发展,MATLAB 也可以应用于求解一类极值问题.本文就 MATLAB 如何在求解一类极值问题中代替人工演算,以及结合图形更直观地反映出数据的分布做了进一步的探讨.关键词: 函数,极值,MATLAB 工具 淮阴师范学院毕业论文(设计)2Abstract:Mathematical function extremum and physics class of optimi
2、zation problems are more common extremum problems, to solve the problem, we usually think of is to establish a function model, in accordance with the derivative or differential rule with complex precise artificial calculus, finally draw the conclusion. But with the development of multimedia technolo
3、gy, MATLAB can also be used for solving a class of extremum problems. In this paper, the MATLAB to replace artificial calculus in solving a class of extremum problems, and combined with the graphic more intuitively reflect the distribution of data to do the further discussion. Keywords: function ext
4、reme MATLAB tools淮阴师范学院毕业论文(设计)3目 录0 引言.1 一类极值问题的概念2 MATLAB 工具简介3 MATLAB 在一类极值问题中的应用3.1 MATLAB 在一元函数极值中的应用3.2 MATLAB 在多元函数极值中的应用3.3 MATLAB 在物理学中相关极值的应用结论参考文献淮阴师范学院毕业论文(设计)40 引言一类极值问题常见于数学和物理的学习过程中,之前我们习惯了采用数学模型求解此类问题.随着现代多媒体技术的发展,计算机程序已经能很好的应用于数学和物理问题的研究,人们已经不满足于数学模型的求解方法,更多的人开始探讨 MATLAB 求解一类极值问题的智能
5、算法.如果 MATLAB 能够广泛应用于求解一类极值问题,将大大缩短演算的时间,加强算法的可视化,也会使得这类问题变得系统化和程序化.本文正是结合 MATLAB来探究一类极值问题的求解过程.1 一类极值问题的概念极值的概念来自数学应用中的最大最小值问题。根据极值定律,定义在一个有界闭区域上的每一个连续函数都必定达到它的最大值和最小值.随着人们研究领域的拓展,物理学中的最优化问题也逐渐引入了数学模型,并使用函数来刻画这类问题,最优问题也就转化为数学中的极值问题.那么,便可以有这样的定义:我们将数学问题中的一元函数极值、多元函数极值及其物理问题中的最优化问题统称为一类极值问题.2 MATLAB 工
6、具简介MATLAB 软件是由美国 MATHWORKS 公司开发的集数值计算、符号处理和图形可视化三大功能于一体的数学软件,目前 MATLAB 已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具,也是最常用的数学实验平台.借助 MATLAB 强大的作图功能,可以很轻松的将求函数极值问题可视化.MATLAB 有大量的库函数, 可以对 MATLAB 进行二次开发,通过它提供的与FortranCC+等语言的接口实现调用.也即用这些编程语言编写的软件程序中调用MATLAB 的各种函数 执行它能够完成的功能 MATLAB 是解释性语言,对命令是边解
7、释边执行的.MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用 MATLAB 来解算问题要比用 C,FORTRAN 等语言完成相同的事情简捷得多,并且淮阴师范学院毕业论文(设计)5MATLAB 也吸收了像 Maple 等软件的优点,使 MATLAB 成为一个强大的数学软件.在新的版本中也加入了对 C,FORTRAN,C+,JAVA 的支持.可以直接调用,用户也可以将自己编写的实用程序导入到 MATLAB 函数库中方便自己以后调用,此外许多的 MATLAB 爱好者都编写了一些经典的程序,用户直接进行下载就可以使用了.3 MATLAB 在一类极值问题中的应用3
8、.1 MATLAB 在一元函数极值中的应用定义:设函数在 在点 的某邻域 内有定义,如果对于去心邻域 内的)(xf0)(0xU)(0xU任一 ,有x(或 ),)(0ff)(0ff那么称是 函数 的一个极大值(或极小值).x函数的极大值与极小值统称为函数的极值,使函数取得极值的点称为极值点.函数的极大值和极小值概念是局部的,如果是 函数 的一个极大值,那只是)(0xf)(f就 附近的一个局部范围来说, 是 的一个最大值;如果就 的整个定义域0x )(0xf(f xf来说, 不见得是最大值.关于极小值也是类似的 .)(f可导函数取得极值的充分必要条件定理 1(必要条件):设函数 在 处可导,且在
9、处取得极值,那么 .)(xf00x0)(xf(第一充分条件):设函数 在 处连续,且在 的某去心邻域 内可导.0 ,(0U(1)若 时, ,而 时, ,则 在),(0x)(f ),(0)xf)(f处取得极大值;0x(2) 若 时, ,而 时, ,则 在),(0)(0xf ),(0x)(0f)(xf处取得极小值;0(3) 若 时, 的符号保持不变,则 在 处没有极值.),(0x)(0f )(f0定理 2 (第二充分条件):设函数 在 处具有二阶导数且 , 那么xf0 )(xf)(0xf(1)当 时,函数 在 处取得极大值;0f )(f0(2)当 时,函数 在 处取得极大值.)(x例 1 求函数
10、在区间 内的极小值与极大值.32913fxx)42,6.(分析 先求一阶导数(段落调整), (标点符号)1862f令 ,0 x求出所有的驻点,淮阴师范学院毕业论文(设计)6,2,10x二阶导数为8f时, ,10x06f即函数在 处取得极大值为 ;02时, ,21f即函数在 处取得极小值为 .1x1MATLAB 程序:(是不是应该有一些说明)syms x 定义自变量x1,minf=fminbnd(2*x3-9*x2+12*x-3,0.6,2.4) 求函数的最小值x2,maxf=fminbnd(-2*x3+9*x2-12*x+3,0.6,2.4) 求函数的极大值maxf=-maxf运行结果:x1
11、=2.0000minf =1.0000x2 =1.0000maxf =-2.0000maxf =2.0000使用 MATLAB 图形还可以直观地反映出极值的分布情况clc;syms x y=2*x3-9*x2+12*x-3 %作出图形%ezplot(y)淮阴师范学院毕业论文(设计)7-6 -4 -2 0 2 4 6-800-600-400-2000200x2 x3-9 x2+12 x-3遇到比较复杂的一元函数,我们可以考虑先计算给定函数的一阶和二阶导数,根据二阶导数的数值正负情况,可确定零点属于极大值还是极小值.例 2 求函数 的极值.143)(2xf解 先求出一阶导函数 , 2 )()xf再
12、求驻点:当 时, .0)(xf0,判断函数的极值如下图所示:X(- ,-2)-2 (-2,0) 0 (0,+ )(xf 0 + 0 单调性 极小 极大 所以函数在 处取得极小值23/8在 处取得极大值 0x4MATLAB 程序:首先建立函数关系:syms sy=(3*x2+4*x+4)/(x2+x+1);然后求函数的驻点:dy=diff(y);xz=solve(dy)xz=淮阴师范学院毕业论文(设计)80 -2知道函数有两个驻点 x1=0,x2=-2,考察函数在驻点处二阶导数的正负情况:d2y=diff(y,2);z1=limit(d2y,x,0)z1=-2z2=limit(d2y,x,-2)
13、z2=2/9于是知在 x1=0 处二阶导数的值为 z1=-2,小于 0,函数有极大值;在 x2=-2 处二阶导数的值为 z2=2/9,大于 0,函数有极小值.如果需要,可顺便求出极值点处的函数值:y1=limit(y,x,0)y1=4y2=limit(y,x,-2)y2=8/3借助 MATLAB 也很容易作出此函数的图形syms xy=(3*x2+4*x+4)/(x2+x+1); 得到如下图形ezplot(y)-6 -4 -2 0 2 4 62.62.833.23.43.63.84x(3 x2+4 x+4)/(x2+x+1)总结: MATLAB 利用简单的程序代码代替复杂的函数算法,不仅简化了
14、计算过程,其自带的绘图功能也使得函数图形变得可视化,从而使得函数极值求解更方便.利用 MATLAB 求解一元函数大致可分为三步:1.用 diff 语句求 的导数;)(xfy淮阴师范学院毕业论文(设计)92.用 solve 语句求 的根,即函数 驻点;0)(xf )(xfy3.用 ezplot 语句作出函数 图像,判断点是否为极值点.对于不可导的点,要)(xfy单独处理.说明:当函数区间内只有一个极小值或极大值点时,函数的极值便转化为求解定义域内函数的最小值或者最大值.3.2 MATLAB 在多元函数极值中的应用在实际问题中,我们往往会遇到多元函数的最小值、最大值问题,与一元函数相类似,多元函数
15、的最小值、最大值与极小值极大值有着密切的联系,在此我们以二元函数为例来探讨一下多元函数的极值问题.求解二阶连续偏导数的函数的极值的步骤可分为如下几步:1.解方程组 )0,(0),(yxfyxf2.对于每一个驻点 ,求出二阶偏导数的值定出 的符号,按充分条件来2BAC判别 是不是极值,是极小还是极大值 .),(0f在实际问题中,有时我们还会遇到函数的自变量附加条件的极值问题,我们把这类问题称为条件极值问题.对于条件极值问题的求解可以转化为无条件极值问题,按照一元或二元极值求解的方法求解.例 3 求函数 在 内的极大值)sin(iyxz 2/0,2/0piypix可以先作图clc;clear;sy
16、ms x y; %定义二元函数z=sin(x)*sin(y)*sin(x+y);ezsurf(x,y,z,0,pi/2,0,pi/2); %画三维图形淮阴师范学院毕业论文(设计)100 0.51 1.500.511.500.20.40.60.8xx = x, y = y, z = sin(x) sin(y) sin(x+y)yz从图像,明显可以看出该函数只有一个极值点.可以先求驻点,再算驻点处的函数值,作比较,即得出函数的极值.求解极值的算法如下:(应该用文字先说明)dzx=diff(z,x) %求驻点dzy=diff(z,y)dzx = cos(x)*sin(y)*sin(x+y)+sin(
17、x)*sin(y)*cos(x+y) dzy=diff(z,y) dzy = sin(x)*cos(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y) xx,yy=solve(cos(x)*sin(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0,.sin(x)*cos(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0,x,y) A=diff(z,x,2); %对于定义域内的驻点求解二阶偏导函数B=diff(diff(z,x),y); C=diff(z,y,2); D=A*C-B2; %判别极大值点D1=subs(subs(D,
18、x,xx(1),y,yy(1) A1=subs(subs(A,x,xx(1),y,yy(1) D2=subs(subs(D,x,xx(2),y,yy(2) A2=subs(subs(A,x,xx(2),y,yy(2) %极大值点和极大值xx(2) yy(2) JDZ=subs(subs(z,x,xx(2),y,yy(2) 程序运行结果ans = 淮阴师范学院毕业论文(设计)11 1/3*pi, 1/3*pi JDZ = 3/8*3(1/2) 注:subs 是赋值函数,用数值替代符号变量例 2 求 的所有极小值22)1()(10),( xyxf type myfunmin2function f=
19、myfunmin2(v)x=v(1);y=v(2);f=100*(y-x.2).2+(1-x).2;sx,sfeval=fminsearch(myfunmin2,1 1)Sx=1Sfeval=0X0=-5,-2,2,5; -5,-2,2,5sx,sfeval=fminsearch(myfunmin2,x0)X0=-5 -2 2 5-5 -2 2 5Sx=1.0000 -0.6897 0.4151 8.08861.0000 -1.9168 4.9643 7.8004Sfeval=2.4112e-010disp(myfunmin2(sx(:,1),myfunmin2(sx(:,2), myfunm
20、in2(sx(:,3), myfunmin2(sx(:,4)1.0e+005*0.0000 0.0058 0.0230 3.32113.3 MATLAB 在物理学中相关极值的应用物理极值是指在物理问题中出现的最优化问题,所以它往往和临界问题相联系.通常我们会将他们转化为数学极值问题首先建立数学模型,转化为相应的数学问题找出自变量和应变量列出方程、求解,得出结论3.3.1 利用 MATLAB 研究抛体极值问题例 4 小明以 的初速度掷一铁球,若铁球一开始离地面 米,球在飞行过程sm/10 48.2淮阴师范学院毕业论文(设计)12中不计空气阻力 ,那么,他如何扔铁球可使铁球的射程达到最远?分析:掷
21、铁球时,铁球在空中做抛物线运动不妨设抛射的角度(即投掷方向与水平方向的夹角)为 .重力加速度为 .则铁球的g射程 可以表示成,s(公式大小))cos82sin(i2200 vghgv根据题意,取 .20 /8.9,4.2,/1smghsmv用 MATLAB 编辑语句如下:clear all;g=9.8;v0=10;h=2.48;p=pi/180;e=0:0.0001:90 %抛射角度(用 e 代替)s=( v02/ ( 2* g) ) * ( sin( 2* e* p) . . . + sqrt ( sin( 2* e: p) . * sin( 2* e* p) . . . + ( 8* g
22、* h/ v02) * cos( e* p) . * cos( e* p) ) ) ; %计算 s 的值plot( e, s) %绘制 - 图形sgrid on; %加网格线0 10 20 30 40 50 60 70 80 90024681012关系曲线图s淮阴师范学院毕业论文(设计)13由图可知,当 的值一定时,抛射角度 越大,抛体的射程 是先增大后减小的,hv/0 s即射程 存在极大值.抛射角度为 时,射程为 .s090利用图形放大功能求抛体射程的极大值及对应的抛射角度,37 37.5 38 38.5 39 39.5 40 40.510.210.2510.310.3510.410.451
23、0.5由抛物线放大图可以看出,(上下文有不少地方类似这里没有标点,补上!)当抛射角度为 时,最远射程为 .当然在实际的抛射过程中,由于受到空气.8m42610阻力的影响,最大射程可能要来得小一点.3.3.2 利用 MATLAB 绘制电场强度分布图例 5 两电量均为 的点电荷相距 ,其连线的垂线上有一点, 与 的连线与q2s qP点电荷间连线的夹角为 ,那么当 为多少时, 点的电场最强.(标点不一致!) P点的电场 可以表示为PE,sinco2K其中, , 的方向是沿着中垂线指向无限远处的, 是常亮,所以 与0/q K的关系和 与 的关系是一致的.E/MATLAB 程序clear all;p=p
24、i/180; %转化弧度e=0:0.00002:90;f=cos(e*p).*cos(e*p).*sin(e*p);plot(e,f)grid on; %加网格线淮阴师范学院毕业论文(设计)14运行后,得到 曲线图KE/0 10 20 30 40 50 60 70 80 9000.050.10.150.20.250.30.350.4由图可知,当 、 的值固定不变时, 的关系是一条曲线.随着 的增大,电场qsE是逐渐增大再逐渐减小的,电场 有极大值.E将极值点放大34.6 34.8 35 35.2 35.4 35.6 35.8 360.38250.3830.38350.3840.38450.38
25、50.3855可以看出,当 时, 0890)/(maxKE淮阴师范学院毕业论文(设计)15结 论本文通过研究 MATLAB 及其在一类极值问题中的应用,系统的归纳出函数极值以及物理极值的程序解题过程,并结合部分典型例题,通过对极值算法的编辑、改进,很巧妙的处理了许多较为复杂的一类极值问题,不仅加快了解题的速度,同时 MATLAB 绘制出来的图形也使极值问题变得可视化,为解决函数以及物理优化问题提供了一个全新的方法.同时本文也将一元函数极值、二元函数极值和物理优化问题统一起来形成一个整体,加强了对极值求解的深入理解.淮阴师范学院毕业论文(设计)16参考文献1刘正君.MATLAB 科学计算宝典M.MATLAB 书籍,2012(5):150-167.2李奇峰.利用 MATLAB 探究中学物理极值问题J.柳州师专学报, 2008,23(1):138-140.3周广发.函数的极值与 MATLAB 应用J.价值工程,2013,(8):251-252.4何渝.求解函数全局极值谷峰法的可视化J.计算机工程与应用,2005,41(13):88-90.5同济大学数学系.高等数学M.北京:高等教育出版社,2007:154-158.