《实验四多元函数的极值课件.ppt》由会员分享,可在线阅读,更多相关《实验四多元函数的极值课件.ppt(35页珍藏版)》请在三一办公上搜索。
1、实验4 多元函数的极值,实验目的,了解多元函数偏导数的求法 了解多元函数极值的求法 了解多元函数条件极值的求法 了解多元函数插值的方法 学习、掌握MATLAB软件有关的命令,实验内容,1、求函数 的极值点和极值。,2、求函数 在条件下 的极值。,3、已知曲面上一些点(2,2,80),(3,2,82),(4,2,84)(0,3,79),(2,3,61),(3,3,65),(0,4,84),(1,4,84),(4,4,86),将这些点用二元函数插值的方法画出完整的曲面。,4、求图像的极值点,并通过这些极值点对图像进行插值。,实验准备,1、计算多元函数的极值 对于多元函数的极值问题,根据多元函数极值
2、的必要条件和充分条件,可分为以下几个步骤:,(2)求解正规方程 得到驻点;,(1)定义多元函数 ;,2. 计算二元函数在区域D内的最大值和最小值,设函数z=f(x,y)在有界区域D上连续,则f(x,y)在D上必定有最大值和最小值。求f(x,y)在D上的最大 值和最小值的一般步骤为:计算f(x,y)在D内所有驻点处的函数值;b) 计算f(x,y)在D的各个边界线上的最大值和最小值;,c) 将上述各函数值进行比较,最终确定出在D内的最大值和最小值。,求函数偏导数的MATLAB命令,MATLAB中主要用diff求函数的偏导数。,diff(f,x,n) 求函数f关于自变量x的n阶导数。,实验方法与步骤
3、,练习1、求函数 的极值点和极值。,练习1、求函数 的极值点和极值。,clear;syms x y zx zy;z=x4-8*x*y+2*y2-3;zx=diff(z,x);zy=diff(z,y);,首先用diff命令求z关于x, y的偏导数,Ex4_1,结果为zx =4*x3-8*y,zy =-8*x+4*y,其次,求解正规方程,得到驻点的坐标,一般方程组的符号解用solve命令,当方程组不存在符号解时,solve将给出数值解。,求解正规方程的matlab代码为:,clear;x1,y1=solve(4*x3-8*y=0,-8*x+4*y=0,x,y);,Ex4_2,得到三个驻点,分别为
4、(-2,-4), (0,0), (2,4),下面再求判别式中的二阶偏导数:,clear;syms x y;z=x4-8*x*y+2*y2-3;A=diff(z,x,2)B=diff(diff(z,x),y)C=diff(z,y,2),运行结果为:A=12*x2B =-8C =4,Ex4_3,最后,对于点(-2,-4),(0,0)和(2,4)分别判别是否是极值点,Ex4_4,clear;N=input(please input points number,N=);for i=1:Nx=input(x=);y=input(y=);A=12*x2;B=-8;C=4;p=A*C-B*B;,if p=0
5、 disp(无法判别) elseif and(p0,A0) disp(极小值点,极小值是) fmin=x4-8*x*y+2*y2-3 elseif and(p0,A0) disp(极大值点,极大值是) fmax=x4-8*x*y+2*y2-3 elseif (p0) disp(不是极值点) end end,由判别法可知 (-2,-4)和 (2,4)都是函数的极小值点,而点 (0,0)不是极值点。,练习2、求函数 在条件 下的极大值。,构造Lagrange函数,求Lagrange函数的极值。先求 关于 的一阶偏导数,相应的matlab代码为,Ex4_5,clear;syms x y k;L=x*
6、y+k*(x+y-1);Lx=diff(L,x)Ly=diff(L,y)Lk=diff(L,k),运行得到,Lx =y+kLy =x+k Lk =x+y-1,解正规方程,,clear;x1,y1,k1=solve(y+k=0,x+k=0,x+y-1=0,x, y, k);,所以,极大值点为(1/2,1/2),极大值点为1/4,练习3 抛物面 被平面 截成了一个椭圆,求这个椭圆到原点的最长距离与最短距离。,在条件 及 下的最大值和最小值。构造Lagrange函数,求Lagrange函数的极值。先求 关于 的一阶偏导数,相应的matlab代码为,这个问题实际上就是求函数,Ex4_6,clear;s
7、yms x y z u v;l=x2+y2+z2+u*(x2+y2-z)+v*(x+y+z-1);diff(l,x)diff(l,y)diff(l,z)diff(l,u)diff(l,v),再解正规方程,得,Ex4_7,即得Lagrange函数的驻点,所求的条件极值点必在其中得到。由于所求问题存在最大值与最小值(因为函数f在有界闭集上连续,从而存在最大值与最小值),故由可得椭圆到原点的最长距离为 ,最短距离为 。,得,练习4 已知曲面上一些点(2,2,80),(3,2,82),(4,2,84)(0,3,79),(2,3,61),(3,3,65),(0,4,84),(1,4,84),(4,4,8
8、6),将这些点用二元函数插值的方法画出完整的曲面。,首先看这些原始数据的柄图,数据是残缺不全的,需要用插值的方法画出完整的曲面,clear;x=2,3,4,0,2,3,0,1,4;y=2,2,2,3,3,3,4,4,4;z=80,82,84,79,61,65,84,84,86;stem3(x,y,z); %画柄图命令title(Raw data);xlabel(x),ylabel(y),zlabel(z),Ex4_8,画柄图的MATLAB命令,插值的MATLAB命令,interp1(x,y,xi,method) 或interp1(x,y,xi)是一维插值函数,其中x,y是已存在的数据,xi是要
9、插入其中的数据点。method是:nearnest(最近点插值)、 linear(线性插值)、cubic(三次分段插值)、 spline(三次样条插值),缺省是linear。,interp2(x,y,z,xi,yi,method) 或interp1(x,y,z,xi,yi)是二维插值函数,其中x,y是已有二维数据,z是由x,y决定的数值,xi,yi是已知的一对数值,通过插值来找到相应的zi值。参数method有:nearest、 bilinear、bicubic、 spline。,griddata(x,y,z,xi,yi,method) 或griddata(x,y,z,xi,yi)也是二维插值
10、函数,与interp2相似,不同之处在于:Interp2严格要求x,y单调;而griddate可以处理不规则数据,对上面数据用插值的方法画出完整的曲面,相应的matlab程序代码如下:,xi=0:0.2:3;yi=2:0.2:4; %选定x,y的范围X,Y=meshgrid(xi,yi); %产生网格向量X,YZ=griddata(x,y,z,X,Y,cubic);%cubic采用三角形三次插值mesh(X,Y,Z);title(Griddata);xlabel(x),ylabel(y),zlabel(z),Ex4_9,练习5 求图像的极值点,并通过这些极值点对图像进行插值。,B=imregi
11、onalmax(A),求A的所有局部极大值点, B是二值图像B=imregionalmin(A),求A的所有局部极小值点,B是二值图像,问题:为什么要求图像的极值点?,Ex4_12,clear all;I=imread(horseriding.bmp);I=double(I);row,col=size(I);t1=clock;%*Imax=imregionalmax(I);Imin=imregionalmin(I);Imax=double(Imax);Imin=double(Imin);,Nmax,xmax,ymax,zmax=extremanum(I,Imax);Nmin,xmin,ymin
12、,zmin=extremanum(I,Imin);%*xr=1:row;yr=1:col;x1,y1=meshgrid(xr,yr);u=griddata(xmax,ymax,zmax,x1,y1,cubic);v=griddata(xmin,ymin,zmin,x1,y1,cubic);,%-display- figure(1); subplot(221);imshow(uint8(I);axis off subplot(222);imshow(uint8(u);axis off subplot(223);imshow(uint8(v);axis off %* t=etime(clock,t
13、1),function Num,x,y,z=extremanum(I,Ima)width=size(Ima,2);height=size(Ima,1);k=1;for h=1:height for w=1:width if Ima(h,w)=1 x(k)=h; y(k)=w; z(k)=I(h,w); k=k+1; end endendNum=k-1;,动画效果,动画生成的步骤创建帧矩阵 moviein对动画中的每一帧生成图形,并把它们放到帧矩阵中 getframe从帧矩阵中回放动画,moviein、 getframe、movie指令x=-8:0.5:8; XX,YY=meshgrid(x);
14、r=sqrt(XX.2+YY.2)+eps;Z=sin(r)./r;surf(Z); %画出祯theAxes=axis; %保存坐标值,使得所有帧都在同一坐标系中,fmat=moviein(20); %创建动画矩阵,保存20祯for j=1:20; %循环创建动画数据surf(sin(2*pi*j/20)*Z,Z) %画出每一 步的曲面 axis(theAxes) %使用相同的坐标系fmat(:,j)=getframe;%拷贝祯到矩阵fmat中end movie(fmat,10) %演示动画10次,数学实验的大门刚刚打开,里面的世界很精彩,愿你在这个五彩缤纷的世界里获得知识、获得愉悦、获得对数学学科的新的认识!,上机练习,求 的极值,并对图形进行观察。求出球面 上与点(3,1,-1)距离最近和最远点。,3. 在一丘陵地带测量高程,x和y方向每隔100米测一个点,得高程见表4-2,试拟合一曲面,确定合适的模型,并由此找出最高点和该点的高程。 表4-2 高程数据,