实验4 函数的极值

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 z 2 z 2 z A  2 ,B  ,C  2 x xy y

Step4:对于每一个驻点  x0 , y0 ,计算判别式 AC  B 2 。如 果 AC  B2  0 则该驻点是极值点,且当 A  0 时为极小值点 , A  0 时为极大值点;如果 AC  B2  0 ,则该驻点不是极 值点;如果, AC  B2  0 ,则判别法失效,需进一步判断。

可见在区间[0,4]上函数的极小值点是x=1,极小值为-2;极大 值点在右端点x=4,极大值为78.9968。

西安理工大学应用数学系

在命令窗口输入ezplot(fun,[0,4]) grid on,绘制函数图形如图4.1 ,可以看到计算结果的正确性。
2 x 3-3 x 2-1 80 70 60 50 40 30 20 10 0 0 0.5 1 1.5 2 x 2.5 3 3.5 4

R 15 14x

32 y 8xy

2x2 10 y 2

在广告费用不限的情况下,最优的广告策略是什么?在 广告费用有限制的情况下,例如要求总广告费用投入为3万 元,最优的广告策略又是什么? 微积分中我们学习过关于函数求极值的方法,这里结合Matlab 软件,介绍一些求函数极值、最值的方法。

西安理工大学应用数学系

西安理工大学应用数学系

最后,对于点(0,0), (2,4), (2, 4) ,分别判别是否是极值点,编写 M文件myfun4:

clear; N=input('please input points number,N='); for i=1:N fmin=x^4-8*x*y+2*y^2-3 x=input('x='); elseif and(p>0,A<0) y=input('y='); disp('极大值点,极大值是') A=12*x^2; fmax=x^4B=-8; 8*x*y+2*y^2-3 C=4; elseif (p<0) p=A*C-B*B; disp('不是极值点') if p==0 disp('无法判别') end elseif and(p>0,A>0) end disp('极小值点,极小值是')
3 2 1 0 -1 -2 -3 -4 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

图4.2 函数曲线

西安理工大学应用数学系

运行结果为如图4.2所示。从图中可以看出,函数有两个 极大值,分别位于区间[-2,-1.5]和[-0.5,0.5]内,两个极小值分别 位于区间[-1,-0.5]和[1.5,2]内,下面用fminbnd命令计算精确的 极值点。 clear; fun='x^2*sin(x^2-x-2)'; [xmin1,fmin1]=fminbnd(fun,-1,-0.5) [xmin2,fmin2]=fminbnd(fun,1.5,2) 运行结果为xmin1 = -0.7315 fmin1 =-0.3582 xmin2 =1.5950 fmin2 =-2.2080 说明极小值点为(-0.7315,-0.3582)和(1.5950,-2.2080)

西安理工大学应用数学系

示例1 求函数 f ( x)

2x3

3x2 1在区间[0,4]上的极大

值与极小值。
解:编制Matlab程序 : clear; fun='2*x^3-3*x^2-1'; fun2='-(2*x^3-3*x^2-1)'; [xmin,fmin]=fminbnd(fun,0,4) [xmax,fmax]=fminbnd(fun2,0,4) %-fun的极小值即为fun的极大 值 运行结果为 xmin =1.0000 fmin =-2.0000 xmax =4.0000,fmax =-78.9968

西安理工大学应用数学系

如果要在区域D上求最值,有如下步骤: 设函数 z  f ( x, y) 在有界区域D上连续,则 f ( x, y ) 在D上必定 有最大值和最小值。求 f ( x, y ) 在D上的最大值和最小值的一般步 骤为: Step1:计算 f ( x, y ) 在D内所有驻点处的函数值; Step2:计算 f ( x, y )在D的各边界线上的最大值和最小值;

西安理工大学应用数学系

示例4 用fminsearch命令求函数 f ( x, y ) 极小值。

xe

( x2

y2 )



解:我们不妨先画出函数图形及等高线,编写m文件: clear [x,y]=meshgrid(-2:0.1:2,-2:0.1:2); z=x.*exp(-(x.^2+y.^2)); subplot(121) mesh(x,y,z) subplot(122) contour(x,y,z,100) grid on

西安理工大学应用数学系

运行得到xmax =0.7071 -0.0005 zmax =0.4289,说明极 大值点为(0.7071,-0.0005),极大值为0.4289.

示例5 求函数
u 100 5x 2 y z 2 x2 4xy 6 y2 6z 2 3xz 4 yz

在(0.5,0.5,0.5)附近的极小值。

西安理工大学应用数学系

运行程序,执行过程及结果为 please input points number,N=3 x=0 y=0,不是极值点。 x=2 y=4,极小值点,极小值是fmin =-19 x=-2 y=-4,极小值点,极小值是fmin =-19 可见(2,4)和(-2,-4)是函数的极小值点,极小值为-19,而 (0,0)点不是极值点。 我们通过函数图像及等高线图也可以观测出函数的极 值点的大致位置:

Step3:将上述各函数值进行比较,最终确定出在D内的最大 值和最小值。
按照上述计算方法,在Matlab中编制程序,也可以求解二元函 数的极值和最值。

西安理工大学应用数学系
4 2 z  x  8 xy  2 y  3的极值点与极值。 示例6 求函数

解:首先用diff命令求z关于x,y的偏导数 clear ; syms x y; z=x^4-8*x*y+2*y^2-3 ; diff(z,x) diff(z,y) 运行结果为ans = 4*x^3-8*y ans = -8*x+4*y,即 z z 3  4 x  8 y,  8 x  4 y x y

再求解方程 f x ( x, y )  0, f y ( x, y )  0, 得到各驻点的坐标。一般 方程组的符号解用solve命令,当方程组不存在符号解时, solve将给出数值解。Matlab代码为:

西安理工大学应用数学系

[x,y]=solve(‘4*x^3-8*y=0’,‘-8*x+4*y=0’,‘x’,‘y’), 求解结果为x =[ 0],[ 2],[ -2] y =[ 0],[ 4],[ -4] 即有三个驻点,分别为 P(0,0), Q(2,4), R(2, 4)。 下面再求判断式中的二阶偏导数: clear ; syms x y; z=x^4-8*x*y+2*y^2-3 ; A=diff(z,x,2) B=diff(diff(z,x),y) C= diff(z,y,2) 运行结果为A =12*x^2;B =-8;C =4。
西安理工大学应用数学系

实验4 函数的极值

西安理工大学应用数学系

4.1 引例
在工程技术、经济管理、科学研究和日常生活等领域中,有 许多问题涉及到求极值的问题。例如某公司通过电台和报纸两 种方式做某种商品的销售广告,根据统计资料,销售收入 R( 万元)与电台广告费用 x(万元)及报纸广告费用y(万元)之 间的关系为如下的经验公式

4.2 一元函数求极值
求一元函数极小值的Matlab命令为fminbnd,常用格式如下 命令 x=fminbnd(fun,x1,x2) [x,favl]=fminbnd(fun,x1,x2) 功能 返回区间(x1,x2)内函数fun的 极小值点x 返回区间(x1,x2)内函数fun 的极小值点x以及对应的极小 值favl [x,favl, exitflag,output] =fminbnd(fun,x1,x2) 返回带优化信息的结构输出

图4.1 函数曲线

西安理工大学应用数学系

当极值所在区间不太明确的情况下,可先做出函数图形,观 察选取区间。

示例2 求函数 y x2 sin( x2 x 2) 在区间[-2,2]上的极大 值与极小值。
解:首先画出函数在区间[-2,2]上的图形,观察极值点的大 致位置。编制Matlab程序 : x=-2:0.01:2; y=x.^2.*sin(x.^2-x-2); plot(x,y) grid on
Fra Baidu bibliotek
西安理工大学应用数学系

2 1.5 0.5 1 0.5 0 0 -0.5 -0.5 2 0 -2 -2 -1 0 1 2 -1 -1.5 -2 -2 -1 0 1 2

图4.3 曲面及等高线图

西安理工大学应用数学系

运行结果如图4.2所示。从图中我们观察看到在[-2,2]×[2,2]上有一个极小值点大概在(-0.5,0)附近,有一个极大值 点大概在(0.5,0)附近。观察到初值后,调用fminsearch命 令 clc;clear f='x(1)*exp(-(x(1)^2+x(2)^2))'; [x,fv]=fminsearch(f,[-0.5,0]); xmin=x zmin=fv 运行得到xmin =-0.7071 -0.0005 zmin =-0.4289,说明极小 值点为(-0.7071,-0.0005),极小值为-0.4289. 调用命令 f2='-x(1)*exp(-(x(1)^2+x(2)^2))'; [x,fv]=fminsearch(f2,[0.5,0]); xmax=x zmax=-fv

运行结果为 xmax =1.0000 Vmax =16.0000 即当剪去的正方形边长为1米时,水箱的体积最大,最大的体 积为16立方米。

西安理工大学应用数学系

4.3 多元函数的无条件极值
类似于一元函数的极值命令,在 Matlab 中求多元函数极 小值的命令是fminsearch,调用格式有x=fminsearch(fun,x0) ,其中x0为初值,返回函数fun在x0附近的局部最小值点x; [x,fval]=fminsearch(fun,x0) ,返回函数 fun 在 x0 附近的局部 最小值点 x 及对应的极小值 fval 。读者可以用 help 命令查阅 fminsearch的其它调用方式。
解:编制Matlab代码: U='100-5*x(1)2*x(2)+x(3)+2*x(1)^2+4*x(1)*x(2)+6*x(2)^2+6*x(3)^2+3*x(1)* x(3)-4*x(2)*x(3)'; [x,u]= fminsearch(U,[0.5,0.5,0.5]) 运行结果为x =4.9311 -2.1552 -2.0345,u =88.8103。 可见该函数大约在(4.9311,-2.1552,-2.0345)处取得极小值 88.8103.

西安理工大学应用数学系

clear; fun='-(x^2*sin(x^2-x-2))'; [xmax1,fmax1]=fminbnd(fun,-2,-1.5) [xmax2,fmax2]=fminbnd(fun,-0.5,0.5)

运行结果为xmax1 =-1.5326 fmax1 =-2.2364 xmax2 =-2.1651e-006 fmax2 =4.2625e-012

西安理工大学应用数学系

在微积分学中我们学习过二元函数极值的计算方法。根据 极值的必要条件和充分条件,极值计算可以分为以下几个步 骤: Step1:定义多元函数 z  f ( x, y ) ; Step2:求解正规方程 f x ( x, y)  0, f y ( x, y)  0, 得到驻点; Step3:对于每一个驻点  x0 , y0  ,求出二阶偏导数的值;
说明极大值点(-1.5326,2.2364)和(-2.1651e-006,4.2625e012),注意该点接近于(0,0)。

西安理工大学应用数学系

示例3 边长为6米的正方形铁板,在四角剪去相等的正方形制
成无盖的水箱,问如何剪可使水箱的容积最大? 解:设剪去正方形的边长为x,则水箱的体积为,该问题则为 求函数V在区间(0,3)内的最大值。Matlab代码为 clear V='-x*(6-2*x)^2'; [x,fval]=fminbnd(V,0,3); xmax=x Vmax=-fval
相关文档
最新文档