MATLAB多元函数导数求极值或最优值
- 格式:doc
- 大小:477.00 KB
- 文档页数:7
matlab计算多元函数极值极其极值点《从简到繁,深入探讨matlab计算多元函数极值极其极值点》1. 引言在数学中,多元函数是一种以多个变量为自变量的函数,它与一元函数有着本质的区别。
而计算多元函数的极值及其极值点是数学分析中一个重要且复杂的问题。
本文将从简到繁地探讨如何利用matlab来计算多元函数的极值及其极值点,以帮助读者更深入地理解这一数学概念。
2. 多元函数的极值我们需要明确什么是多元函数的极值。
对于一个多元函数,如果在某一点处的函数值大于或小于其邻域内所有其他点处的函数值,那么这个点就是该多元函数的极大值点或极小值点。
而这个极值点所对应的函数值就是多元函数的极值。
在matlab中,可以通过最优化工具箱中的相关函数来计算多元函数的极值,比如fmincon函数用于求解约束极小化问题。
3. 计算多元函数的极值为了更具体地说明如何在matlab中计算多元函数的极值,我们以一个简单的二元函数为例:z = f(x, y) = x^2 + y^2。
我们希望找到这个函数的极值及其极值点。
我们需要定义这个函数并选定初始点,然后利用matlab中的优化函数进行计算。
具体的代码如下:```matlab% 定义目标函数fun = @(x) x(1).^2 + x(2).^2;% 设定初始点x0 = [1, 2];% 求解极小值[x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon);```在这段代码中,我们首先利用@(x)定义了目标函数f(x, y) = x^2 + y^2,然后设定了初始点x0 = [1, 2]。
最后利用fmincon函数计算了函数的极小值x和其对应的函数值fval。
通过这个简单的例子,读者可以初步了解如何在matlab中计算多元函数的极值。
4. 深入探讨除了简单的二元函数外,实际应用中常常遇到更复杂的多元函数,这时利用matlab计算极值就显得尤为重要。
实验六 多元函数的极值【实验目的】1. 多元函数偏导数的求法。
2. 多元函数自由极值的求法 3. 多元函数条件极值的求法.4. 学习把握MATLAB 软件有关的命令。
【实验内容】求函数32824-+-=y xy x z 的极值点和极值【实验预备】1.计算多元函数的自由极值关于多元函数的自由极值问题,依照多元函数极值的必要和充分条件,可分为以下几个步骤: 步骤1.概念多元函数),(y x f z =步骤2.求解正规方程0),(,0),(==y x f y x f y x ,取得驻点步骤3.关于每一个驻点),(00y x ,求出二阶偏导数,,,22222yzC y x z B x z A ∂∂=∂∂∂=∂∂= 步骤4. 关于每一个驻点),(00y x ,计算判别式2B AC -,假设是02>-B AC ,那么该驻点是极值点,当0>A 为极小值, 0<A 为极大值;,假设是02=-B AC ,判别法失效,需进一步判定; 假设是02<-B AC ,那么该驻点不是极值点.2.计算二元函数在区域D 内的最大值和最小值设函数),(y x f z =在有界区域D 上持续,那么),(y x f 在D 上必然有最大值和最小值。
求),(y x f 在D 上的最大值和最小值的一样步骤为:步骤1. 计算),(y x f 在D 内所有驻点处的函数值;步骤2. 计算),(y x f 在D 的各个边界限上的最大值和最小值;步骤3. 将上述各函数值进行比较,最终确信出在D 内的最大值和最小值。
3.函数求偏导数的MATLAB 命令MATLAB 中要紧用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。
能够用help diff, help jacobian 查阅有关这些命令的详细信息【实验方式与步骤】练习1 求函数32824-+-=y xy x z 的极值点和极值.第一用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 即.48,843y x yz y x x z +-=∂∂-=∂∂再求解正规方程,求得各驻点的坐标。
数学实验五 用Matlab 软件求多元函数的偏导数和极值一、多元函数的偏导数1.调用格式一:diff('多元函数','自变量',n)其中,n 为所求偏导数的阶数.例1 已知y x z 2cos 2=,求x z ∂∂、x y z ∂∂∂2和22y z ∂∂. 解 打开M文件编辑窗口,在其中输入下面命令集:pzpx=diff('x^2*cos(2*y)','x')p2zpypx=diff(pzpx,'y')p2zpy2=diff('x^2*cos(2*y)','y',2)取名为exa9保存,再在命令窗口中输入命令exa9,程序运行结果如下:pzpx =2*x*cos(2*y)p2zpypx =-4*x*sin(2*y)p2zpy2 =-4*x^2*cos(2*y)即y x x z 2cos 2=∂∂,y x x y z 2sin 42−=∂∂∂,y x yz 2cos 4222−=∂∂. 2.调用格式二:syms x y z …diff(f,自变量,n)例2 已知)5sin(32z y x u +−=,求x u ∂∂、x y z u ∂∂∂∂3和33z u ∂∂. 解 在命令行中依次输入:syms x y zu=sin(x^2-y^3+5*z);ux=diff(u,x);uxy=diff(ux,y);uxyz=diff(uxy,z);uz3=diff(u,z,3);ux,uxyz,uz3运行结果如下:ux =2*cos(x^2-y^3+5*z)*xuxyz =30*cos(x^2-y^3+5*z)*y^2*xuz3 =-125*cos(x^2-y^3+5*z)即)5cos(232z y x x xu +−=∂∂,)5cos(303223z y x xy x y z u +−=∂∂∂∂, )5cos(1253233z y x zu +−−=∂∂. 二、隐函数的导数在Matlab 中没有直接求隐函数导数的命令,但可调用Maple 中求隐函数导数的命令,调用格式如下:maple('implicitdiff(f(u,x,y,z,…,)=0,u,x)')例3 求由多元方程xyz z y x =++222所确定的隐函数dxz ∂. 解 在命令行中输入:pzpx=maple('implicitdiff(x^2+y^2+z^2-x*y*z=0,z,x)')运行结果是:pzpx =(2*x-y*z)/(-2*z+x*y)即 zxy yz x x z 22−−=∂∂. 三、多元函数的极(或最)值在Matlab 中同样有求多元函数的极(或最)小值的函数,但由于多元函数的形式比较复杂,不同情况用到不同的Matlab 函数.若要求多元函数u 在某一区域的极(或最)大值,可转化为求u −在该区域内的极(或最)小值.1.非线性无约束情形求极(或最)小值点或极(或最)小值的调用格式是:[x,fval]=fminsearch(‘f ’,x0)f 是被最小化的目标函数名,x0是求解的初始值向量.例4 求二元函数2331042),(y xy xy x y x f +−+=的最值点和最值.解 打开M文件编辑窗口,在其中输入下面命令集:%必须对自变量进行转化x=x(1),y=x(2)[Xmin,fmin]=fminsearch('2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2',[0,0]);[Xmax,Fmin]=fminsearch('-2*x(1)^3-4*x(1)*x(2)^3+10*x(1)*x(2)-x(2)^2',[0,0]);fmax=-Fmin;Xmin,fminXmax,fmax取名为exa10保存,再在命令窗口中输入命令exa10,程序运行结果如下:Xmin =1.0016 0.8335fmin =-3.3241Xmax =-1.0000 1.0000fmax =2.非线性有约束情形非线性有约束优化问题的数学模型如下:式中,x,b,beq,lb 和ub 是向量,A 和Aeq 是矩阵,c(x)和ceq(x)为函数,返回标量.f(x),c(x)和ceq(x)可以是非线性函数.求极(或最)小值点或极(或最)小值的调用格式如下:[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,lb,ub,nonlcon)nonlcon 参数计算非线性不等式约束c(x)<=0和非线性等式约束ceq(x)=0.例5 求表面积为6m 2的体积最大的长方体体积.解 设长方体的长、宽、高分别为x1、x2、x3,则f(x)=-x(1)*x(2)*x(3),S.t x(1)*x(2)+x(2)*x(3)+x(3)*x(1)-3=0,x(i)>0,i=1,2,3.⑴ 建立函数文件fun1打开M文件编辑窗口,在其中输入下面命令集:function F=fun1(x) %函数文件必须是function 开头F=-x(1)*x(2)*x(3);单击“保存”按钮,自动取名为fun1,再击保存.⑵ 建立非线性约束函数文件yceqfunction [c,ceq]=yceq(x)c=x(1)*x(2)+x(2)*x(3)+x(3)*x(1)-3;ceq=[];保存方法同上,自动取名为yceq ,再击保存.⑶ 编制主程序:打开M文件编辑窗口,在其中输入下面命令集:x0=[3;3;3]; %给长宽高一个初值A=[];b=[];Aeq=[];beq=[];lb=[0,0,0];ub=[];[xmax,fmin]=fmincon('fun1',x0,A,b,Aeq,beq,lb,ub,'yceq'); %函数要加单引号Vmax=-fmin;xmax,Vmax取名为exa11保存,再在命令窗口中输入命令exa11,程序运行结果如下:xmax =1.00001.00001.0000Vmax =ubx lb beqx Aeq bx A x ceq x c x f Min ≤≤≤⋅≤⋅=≤0)(0)()(四、上机实验1.用help命令查看函数diff,fminsearch和fmincon等的用法.2.上机验证上面各例.3.作相关小节练习中多元函数的偏导数,极(或最)值.。
第七讲 Matlab 优化(求极值)理论介绍:算法介绍、软件求解.一.线性规划问题1.线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小值的问题,Matlab 中规定线性规划的标准形式为min s.t.T xc x Ax b Aeq x beqlb x ub ≤⎧⎪⋅=⎨⎪≤≤⎩其中c 和x 为n 维列向量,A 、Aeq 为适当维数的矩阵,b 、beq 为适当维数的列向量。
注意:线性规划问题化为Matlab 规定中的标准形式。
求解线性规划问题的Matlab 函数形式为linprog(c,A,b),它返回向量x 的值,它的具体调用形式为:[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,x0,OPTIONS)这里fval 返回目标函数的值,LB 、UB 分别是变量x 的下界和上界,x0是x 的初始值,OPTIONS 是控制参数。
例1 求解线性规划问题123123123123123max 23572510s.t.312,,0z x x x x x x x x x x x x x x x =+-++=⎧⎪-+≥⎪⎨++≤⎪⎪≥⎩ 程序:c=[2;3;5];>> A=[-2,5,-1;1,3,1];b=[-10;12];>> Aeq=[1,1,1];beq=[7];>> LB=[0;0;0];(zeros(3,1))>> [x,fval]=linprog(c,A,b,Aeq,beq,LB,[])练习与思考:求解线性规划问题12312312123min 23+428s.t.3+26,,0z x x x x x x x x x x x =+++≥⎧⎪≥⎨⎪≥⎩ 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ].2.可以转化为线性规划的问题规划问题12min||+||++||s.t.,n x x x Ax b ≤ 其中1=[],T n x x x ,A b 为相应维数的矩阵和向量。
用MATLAB求极值灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。
例3.6.1 求223441x xyx x++=++的极值解首先建立函数关系:s yms sy=(3*x^2+4*x+4)/( x^2+x+1); ↙然后求函数的驻点:dy=diff(y); ↙xz=solve(dy) ↙xz=[0] [-2]知道函数有两个驻点x1=0和x2=-2,考察函数在驻点处二阶导数的正负情况:d2y=diff(y,2); ↙z1=limit(d2y,x,0) ↙z1=-2z2=limit(d2y,x,-2) ↙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事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。
而借助MA TLAB的作图功能,我们很容易做到这一点。
例3.6.2画出上例中函数的图形解syms x ↙y=(3*x^2+4*x+4)/( x^2+x+1); ↙得到如下图形ezplot(y) ↙如何用MATLAB求函数的极值点和最大值比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值?求极值:syms x y>> y=x^3+x^2+1>> diff(y) %求导ans =3*x^2 + 2*x>> solve(ans)%求导函数为零的点ans =-2/3极值有两点。
求最大值,既求-y的最小值:>> f=@(x)(-x^3-x^2-1)f = @(x)(-x^3-x^2-1)>> x=fminunc(f,-3,3)% 在-3;-3范围内找Warning: Gradient must be provided for trust-region method;using line-search method instead.> In fminunc at 354Optimization terminated: relative infinity-norm of gradient less than options.TolFun.x =-0.6667>> f(x)ans =-1.1481在规定范围内的最大值是1.1481由于函数的局限性,求出的极值可能是局部最小(大)值。
MATLAB求函数零点与极值
1. roots函数
针对多项式求零点(详见MATLAB多项式及多项式拟合)
2. fzero函数
返回⼀元函数在某个区间内的的零点.
x0 = fzero(@(x)x.^2-3*x-4,[1,5]);
只能求区间⾥⾯的⼀个零点,并且要求在给定区间端点函数值异号,所以使⽤之前应该先作图,得出单个零点分布的区间,然后使⽤该函数求零点.若有多个零点,则需多次使⽤该函数.
如需求上例中的全部零点,先作图
fplot(@(x)x.^2-3*x-4,[-10,10]);
得知两个零点的分布区间,然后两次使⽤fzero函数求对应区间的零点.
x1 = fzero(@(x)x.^2-3*x-4,[-2,0]);
x2 = fzero(@(x)x.^2-3*x-4,[2,6]);
3. solve函数
求⼀元函数(⽅程)的零点.
x0 = solve('x^2-3*x-4=0','x');
注意⽅程需包含’=0’部分,另外,不建议直接将⽅程写在函数solve的参数部分,可以⽤符号运算的⽅法.
4. fminbnd函数
求⼀元函数在某个区间内的最⼩值和对应的最⼩值点.
[x0,fmin]=fminbnd(@(x)x+1/(x+1),-0.5,2);
求极值与极值点之前须估计极值点的区间,保证在该区间没有使得函数值趋于⽆穷的点.。
用MATLAB求极值灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。
例3.6.1 求223441x xyx x++=++的极值解首先建立函数关系:s yms s ↙y=(3*x^2+4*x+4)/( x^2+x+1); ↙然后求函数的驻点:dy=diff(y); ↙xz=solve(dy) ↙xz=[0] [-2]知道函数有两个驻点x=0和x=-2,考察函数在驻点处二阶导数的正负情况:d2y=diff(y,2); ↙z1=limit(d2y,x,0) ↙z1=-2z2=limit(d2y,x,-2) ↙z2=2/9于是知在x=0处二阶导数的值为z=-2,小于0,函数有极大值;在x=-2处二阶导数的值为z=2/9,大于0,函数有极小值。
如果需要,可顺便求出极值点处的函数值:y=limit(y,x,0) ↙y=4y=limit(y,x,-2) ↙y=8/3事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。
而借助MATLAB的作图功能,我们很容易做到这一点。
例3.6.2画出上例中函数的图形解syms x↙y=(3*x^2+4*x+4)/( x^2+x+1); ↙得到如下图形ezplot(y) ↙如何用MATLAB求函数的极值点和最大值比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值?求极值:syms x y>> y=x^3+x^2+1>> diff(y) %求导ans =3*x^2 + 2*x>> solve(ans)%求导函数为零的点ans =-2/3极值有两点。
求最大值,既求-y的最小值:>> f=@(x)(-x^3-x^2-1)f =@(x)(-x^3-x^2-1)>> x=fminunc(f,-3,3)% 在-3;-3范围内找Warning: Gradient must be provided for trust-region method;using line-search method instead.> In fminunc at 354Optimization terminated: relative infinity-norm of gradient less than options.TolFun.x =-0.6667>> f(x)ans =-1.1481在规定范围内的最大值是1.1481由于函数的局限性,求出的极值可能是局部最小(大)值。
用MATLA求极值灵活的运用MATLA的计算功能,可以很容易地求得函数的极值。
3x + 4x + 4例3.6.1 求y二3 -------- ---------- 4的极值解首先建立函数关系:s yms sy=(3*x^2+4*x+4)/( x A2+x+1); /然后求函数的驻点:dy=diff(y); /xz=solve(dy) /xz=[0] [-2]知道函数有两个驻点x1=0和X 2 =-2,考察函数在驻点处二阶导数的正负情况:d2y=diff(y,2); /z1=limit(d2y,x,0) /z1 =-2z2=limit(d2y,x,-2) /z2=2/9于是知在x1=0处二阶导数的值为z1=-2,小于0,函数有极大值;在x2=-2处二阶导数的值为z 2 =2/9,大于0,函数有极小值。
如果需要,可顺便求出极值点处的函数值:y1=limit(y,x,0) /y1 =4y2 =limit(y,x,-2) /y2 =8/3事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。
而借助MATLA啲作图功能,我们很容易做到这一点。
例3.6.2画出上例中函数的图形解syms x /y=(3*xA2+4*x+4)/( xA2+x+1); /得到如下图形ezplot(y) /如何用MATLAB 求函数的极值点和最大值比如说y=x A 3+x A 2+1 ,怎样用matlab 来算它的极值和最大值?求极值:syms x y>> y=xA3+xA2+1>> diff(y) % ans =3*xA2 + 2*x >> solve(a ns)ans =-2/30 极值有两点。
求最大值,既求-y 的最小值:>> f=@(x)(-xA3-xA2-1)(3X 2+4X +4)/(K 2+X +1)求导%求导函数为零的点f = @(x)(-x A3-x A2-1)>> x=fminunc(f,-3,3)% 在-3 ; -3 范围内找Warning: Gradie nt must be provided for trust-regi on method; usinglin e-search method in stead.> In fminunc at 354Optimizati on termi nated: relative infin ity-normof gradie nt less tha n opti on s.Tol Fun.x =-0.6667>> f(x)ans =-1.1481在规定范围内的最大值是 1.1481由于函数的局限性,求出的极值可能是局部最小(大)值。
用MATLAB求极值灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。
例3.6.1 求223441x xyx x++=++的极值解首先建立函数关系:s yms s ↙y=(3*x^2+4*x+4)/( x^2+x+1); ↙然后求函数的驻点:dy=diff(y); ↙xz=solve(dy) ↙xz=[0] [-2]知道函数有两个驻点x1=0和x2=-2,考察函数在驻点处二阶导数的正负情况:d2y=diff(y,2); ↙z1=limit(d2y,x,0) ↙z1=-2z2=limit(d2y,x,-2) ↙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事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。
而借助MA TLAB的作图功能,我们很容易做到这一点。
例3.6.2画出上例中函数的图形解syms x ↙y=(3*x^2+4*x+4)/( x^2+x+1); ↙得到如下图形ezplot(y) ↙如何用MATLAB求函数的极值点和最大值比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值?求极值:syms x y>> y=x^3+x^2+1>> diff(y) %求导ans =3*x^2 + 2*x>> solve(ans)%求导函数为零的点ans =-2/3极值有两点。
求最大值,既求-y的最小值:>> f=@(x)(-x^3-x^2-1)f =@(x)(-x^3-x^2-1)>> x=fminunc(f,-3,3)% 在-3;-3范围内找Warning: Gradient must be provided for trust-region method;using line-search method instead.> In fminunc at 354Optimization terminated: relative infinity-norm of gradient less than options.TolFun.x =-0.6667>> f(x)ans =-1.1481在规定范围内的最大值是1.1481由于函数的局限性,求出的极值可能是局部最小(大)值。
实验六 多元函数的极值【实验目的】1. 多元函数偏导数的求法。
2. 多元函数自由极值的求法 3. 多元函数条件极值的求法、4. 学习掌握MATLAB 软件有关的命令。
【实验内容】求函数32824-+-=y xy x z 的极值点与极值【实验准备】1.计算多元函数的自由极值对于多元函数的自由极值问题,根据多元函数极值的必要与充分条件,可分为以下几个步骤:步骤1、定义多元函数),(y x f z =步骤2、求解正规方程0),(,0),(==y x f y x f y x ,得到驻点步骤3、对于每一个驻点),(00y x ,求出二阶偏导数,,,22222yzC y x z B x z A ∂∂=∂∂∂=∂∂= 步骤4、 对于每一个驻点),(00y x ,计算判别式2B AC -,如果02>-B AC ,则该驻点就是极值点,当0>A 为极小值, 0<A 为极大值;,如果02=-B AC ,判别法失效,需进一步判断; 如果02<-B AC ,则该驻点不就是极值点、2.计算二元函数在区域D 内的最大值与最小值设函数),(y x f z =在有界区域D 上连续,则),(y x f 在D 上必定有最大值与最小值。
求),(y x f 在D 上的最大值与最小值的一般步骤为:步骤1、 计算),(y x f 在D 内所有驻点处的函数值;步骤2、 计算),(y x f 在D 的各个边界线上的最大值与最小值;步骤3、 将上述各函数值进行比较,最终确定出在D 内的最大值与最小值。
3.函数求偏导数的MATLAB 命令可以用help diff, help jacobian 查阅有关这些命令的详细信息【实验方法与步骤】练习1 求函数32824-+-=y xy x z 的极值点与极值、首先用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 即.48,843y x yz y x x z +-=∂∂-=∂∂再求解正规方程,求得各驻点的坐标。
一般方程组的符号解用solve 命令,当方程组不存在符号解时,solve 将给出数值解。
求解正规方程的MA TLAB 代码为:>>clear;>>[x,y]=solve('4*x^3-8*y=0','-8*x+4*y=0','x','y')结果有三个驻点,分别就是P(-2,-4),Q(0,0),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=2*x^2 B =-8 C =4由判别法可知)2,4(--P 与)2,4(Q 都就是函数的极小值点,而点Q(0,0)不就是极值点,实际上,)2,4(--P 与)2,4(Q 就是函数的最小值点。
当然,我们可以通过画函数图形来观测极值点与鞍点。
>>clear;>>x=-5:0、2:5; y=-5:0、2:5; >>[X,Y]=meshgrid(x,y);>>Z=X 、^4-8*X 、*Y+2*Y 、^2-3; >>mesh(X,Y,Z)>>xlabel('x'),ylabel('y'),zlabel('z') 结果如图6、1图6、1 函数曲面图可在图6、1种不容易观测极值点与鞍点,这就是因为z 的取值范围为[-500,100],就是一幅远景图,局部信息丢失较多,观测不到图像细节、可以通过画等值线来观测极值、>>contour(X,Y,Z, 600) >>xlabel('x'),ylabel('y') 结果如图6、2图6、2 等值线图由图6、2可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极小值点)2,4(--P 与)2,4(Q 、根据提梯度与等高线之间的关系,梯度的方向就是等高线的法方向,且指向函数增加的方向、由此可知,极值点应该有等高线环绕,而点)0,0(Q 周围没有等高线环绕,不就是极值点,就是鞍点、练习2 求函数xy z =在条件1=+y x 下的极值、、构造Lagrange 函数)1(),(-++=y x xy y x L λ求Lagrange 函数的自由极值、先求L 关于λ,,y x 的一阶偏导数>>clear; syms x y k >>l=x*y+k*(x+y-1); >>diff(l,x) >>diff(l,y) >>diff(l,k)得,1,,-+=∂∂+=∂∂+=∂∂y x L x y L y x L λλλ再解正规方程 >>clear; syms x y k>>[x,y,k]=solve('y+k=0','x+k=0','x+y-1=0','x','y','k')得,21,21,21-===λy x 进过判断,此点为函数的极大值点,此时函数达到最大值、 练习3 抛物面22y x z +=被平面1=++z y x 截成一个椭圆,求这个椭圆到原点的最长与最短距离、这个问题实际上就就是求函数222),,(z y x z y x f ++=在条件22y x z +=及1=++z y x 下的最大值与最小值问题、构造Lagrange 函数)1()(),,(22222-+++-++++=z y x z y x z y x z y x L μλ求Lagrange 函数的自由极值、先求L 关于μλ,,,,z y x 的一阶偏导数>>clear; syms x y z u v>>l=x^2+y^2+z^2+u*(x^2+y^2-z)+v*(x+y+z-1); >>diff(l,x) >>diff(l,y) >>diff(l,z) >>diff(l,u) >>diff(l,v)得μλμλμλ+-=∂∂++=∂∂++=∂∂z z L y y y L x x x L 2,22,22 1,22-++=∂∂-+=∂∂z y x L z y x L μλ 再解正规方程>>clear;>>[x,y,z,u,v]=solve('2*x+2*x*u+v=0','2*y+2*y*u+v=0','2*z-u+v=0', 'x^2+y^2-z=0','x+y+z-1=0','x','y','z','u','v')得.32,231,33117,3353μ=±-==±-=±-=z y x μλ 上面就就是Lagrange 函数的稳定点,求所求的条件极值点必在其中取到。
由于所求问题存在最大值与最小值(因为函数f 在有界闭集}1,:),,{(22=++=+z y x z y x z y x ,上连续,从而存在最大值与最小值),故由359.)32,231,231(μμ=±-±-f 求得的两个函数值,可得椭圆到原点的最长距离为359+,最短距离为359-。
练习4 求函数72422+--+=y x y x z 在上半圆0,1622≥≤+y y x 上的最大值与最小值。
首先画出等高线进行观测,相应的MA TLAB 程序代码为:>>clear;>>x=-4:0、1:4; y=-4:0、1:4; >>[X,Y]=meshgrid(x,y); >>Z=X 、^2+Y 、^2-4*X-2*Y+7; >>contour(X,Y,Z,100) >>xlabel('x'),ylabel('y')结果如图6、3观测图6、3可瞧出,在区域D 内部有唯一的驻点,大约位于)1,2(在该点处汉书趣的最小值。
在圆弧与直线的交点处取得最大值,大约位于)2,4(-。
下面通过计算加以验证。
求函数在区域D 内的驻点,计算相应的函数值。
求z 关于x,y 的偏导数>>clear; syms x y; >>z=x^2+y^2-4*x-2*y+7; >>diff(z,x)>>diff(z,y)结果得,22,42-=∂∂-=∂∂y yz x x z 解正规方程 >>clear; [x,y]=solve('2*x-4=0','2*y-2=0','x','y')得驻点为(2,1),相应的函数值为2。
求函数在直线边界44,0≤≤-=x y 上的最大值与最小值。
将0=y 代入原函数,则二元函数变为一元函数.44,742≤≤-+-=x x x z首先观测此函数图形,相应的MA TLAB 程序代码为:>>x=-4:0、01:4; y=x 、^2-4*x+7; >>plot(x,y);>>xlabel('x'),ylabel('z')结果如图6、4所示由图6、4可瞧出,当4-=x 时函数取得最大值,2=x 时函数取得最小值。
下面用计算验证。
对函数求导>>clear; syms x ; >>z=x^2-4*x+7; diff(z,x) 得42-=x dxdz,可知驻点为2=x ,而边界点为4±=x ,计算着三个点上的函数值可得当4-=x 时函数取得最大值39,2=x 时函数取得最小值3。
求函数在圆弧边界线上0,1622≥≤+y y x 的最大值与最小值。
此边界线可用参数方程π≤≤==t t y t x 0,sin 4,cos 4表示。