2024年5月1日发(作者:)
分析实验mg
实验三
【实验目的】
1.掌握MATLAB软件有关的命令。
2.多元函数自由极值的求法
3.多元函数条件极值的求法.
多元函数的极值
【实验准备】
1.计算多元函数的自由极值
对于多元函数的自由极值问题,根据多元函数极值的必要和充分条件,可分为以下几个步
骤:
步骤1.定义多元函数
z
=
f
(
x
,
y
)
步骤2.求解正规方程
f
x
(
x
,
y
)=0,
f
y
(
x
,
y
)=0
,得到驻点
∂
2
z
∂
2
z
∂
2
z
步骤3.对于每一个驻点
(
x
0
,
y
0
)
,求出二阶偏导数
A
=,
B
=,
C
=
2
,
2
∂
x
∂
y
∂
x
∂
y
步骤4.对于每一个驻点
(
x
0
,
y
0
)
,计算判别式
AC
−
B
2
,如果
AC
−
B
2
>0
,则该驻点是
极值点,当
A
>0
为极小值,
A
<0
为极大值;,如果
AC
−
B
=0
,判别法失效,需进一步判断;
如果
AC
−
B
2
<0
,则该驻点不是极值点.
2.计算二元函数在区域D内的最大值和最小值
设函数
z
=
f
(
x
,
y
)
在有界区域
D
上连续,则
f
(
x
,
y
)
在
D
上必定有最大值和最小值。
求
f
(
x
,
y
)
在
D
上的最大值和最小值的一般步骤为:
步骤1.计算
f
(
x
,
y
)
在
D
内所有驻点处的函数值;
步骤2.计算
f
(
x
,
y
)
在
D
的各个边界线上的最大值和最小值;
步骤3.将上述各函数值进行比较,最终确定出在
D
内的最大值和最小值。
3.函数求偏导数的MATLAB命令
MATLAB中主要用diff求函数的偏导数,用jacobian求Jacobian矩阵。
2
1
分析实验mg
diff(f,x,n)求函数f关于自变量x的n阶导数。
jacobian(f,x)求向量函数f关于自变量x(x也为向量)的jacobian矩阵。
可以用helpdiff,helpjacobian查阅有关这些命令的详细信息
【实验内容】
例1:求函数z=sin(x)sin(y)sin(x+y)在0 Matlab程序: %定义二元函数 clc;clear; symsxy; z=sin(x)*sin(y)*sin(x+y); ezsurf(x,y,z,[0,pi/2,0,pi/2]); %求解驻点 dzx=diff(z,x) dzy=diff(z,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-B^2; %判别极大值点 D1=subs(subs(D,'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= [1/3*pi,1/3*pi] JDZ= 3/8*3^(1/2) 0 理论分析知:当X=pi/3y=pi/3z有极大值3/8*3^(1/2) 2 分析实验mg 例2函数 z = x 4 −8 xy +2 y 2 −3 的极值点和极值 求函数 z = x −8 xy +2 y −3 的极值点和极值.首先用diff命令求z关于x,y的偏导数 >>clear;symsxy; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 42 结果为 ans=4*x^3-8*y ans=-8*x+4*y 即 ∂ z ∂ z =4 x 3 −8 y ,=−8 x +4 y . 再求解正规方程,求得各驻点的坐标。一般方程组的符 ∂ x ∂ y 号解用solve命令,当方程组不存在符号解时,solve将给出数值解。求解正规方程的MATLAB 代码为: >>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;symsxy; >>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 由判别法可知 P (−4,−2) 和 Q (4,2) 都是函数的极小值点,而点Q(0,0)不是极值点,实际上, P (−4,−2) 和 Q (4,2) 是函数的最小值点。当然,我们可以通过画函数图形来观测极值点与鞍 点。 >>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') 结果如图1 3 分析实验mg 图1函数曲面图 可在图2种不容易观测极值点与鞍点,这是因为z的取值范围为[-500,100],是一幅远景图,局部 信息丢失较多,观测不到图像细节.可以通过画等值线来观测极值. >>contour(X,Y,Z,600) >>xlabel('x'),ylabel('y') 结果如图6.2 图2等值线图 由图2可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极小值点 P (−4,−2) 和 Q (4,2) .根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且指 向函数增加的方向.由此可知,极值点应该有等高线环绕,而点 Q (0,0) 周围没有等高线环绕,不 是极值点,是鞍点. 例3函数 z = xy 在条件 x + y =1 下的极值..构造Lagrange函数 L ( x , y )= xy + λ ( x + y −1) 4 分析实验mg 求Lagrange函数的自由极值.先求 L 关于 x , y , λ 的一阶偏导数 >>clear;symsxyk >>l=x*y+k*(x+y-1); >>diff(l,x) >>diff(l,y) >>diff(l,k) 得 ∂ L ∂ L ∂ L = y + λ ,= x + λ ,= x + y −1, 再解正规方程 ∂ x ∂ y ∂ λ >>clear;symsxyk >>[x,y,k]=solve('y+k=0','x+k=0','x+y-1=0','x','y','k') 得 x = 111 , y =, λ =−, 进过判断,此点为函数的极大值点,此时函数达到最大值. 222 例4物面 z = x 2 + y 2 被平面 x + y + z =1 截成一个椭圆,求这个椭圆到原点的最长与 最短距离. 这个问题实际上就是求函数 f ( x , y , z )= x 2 + y 2 + z 2 在条件 z = x 2 + y 2 及 x + y + z =1 下的最大值和最小值问题.构造Lagrange函数 L ( x , y , z )= x 2 + y 2 + z 2 + λ ( x 2 + y 2 − z )+ µ ( x + y + z −1) 求Lagrange函数的自由极值.先求 L 关于 x , y , z , λ , µ 的一阶偏导数 >>clear;symsxyzuv >>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) 得 ∂ L ∂ L ∂ L =2 x +2 xλ + µ ,=2 y +2 yλ + µ ,=2 z − λ + µ ∂ x ∂ y ∂ z ∂ L ∂ L = x 2 + y 2 − z ,= x + y + z −1 ∂ λ ∂ µ 再解正规方程 >>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') 5 分析实验mg 得 λ =−3± 511−1±3 3, µ =−7±3, x = y =, z =2∓3. 332 上面就是Lagrange函数的稳定点,求所求的条件极值点必在其中取到。由于所求问题存在 最大值与最小值(因为函数 f 在有界闭集 {( x , y , z ): x + y = z , x + y + z =1} ,上连续, 从而存在最大值与最小值),故由 22 f ( −1±3−1±3 ,,2∓3.)=9∓53 22 求得的两个函数值,可得椭圆到原点的最长距离为 9+53 ,最短距离为 9−53 。 例5函数 z = x + y −4 x −2 y +7 在上半圆 x + y ≤16, y ≥0 上的最大值和最小 值。 首先画出等高线进行观测,相应的MATLAB程序代码为: >>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') 2222 结果如图3 4 2 0 y -2 -4 -4-2024 3等值线 观测图3可看出,在区域 D 内部有唯一的驻点,大约位于 (2,1) 在该点处汉书趣的最小 值。在圆弧与直线的交点处取得最大值,大约位于 (−4,2) 。下面通过计算加以验证。 求函数在区域 D 内的驻点,计算相应的函数值。求z关于x,y的偏导数 >>clear;symsxy; >>z=x^2+y^2-4*x-2*y+7; >>diff(z,x) >>diff(z,y) 6 分析实验mg 结果得 ∂ z ∂ z =2 x −4,=2 y −2, 解正规方程 ∂ x ∂ y >>clear;[x,y]=solve('2*x-4=0','2*y-2=0','x','y') 得驻点为(2,1),相应的函数值为2。 求函数在直线边界 y =0,−4≤ x ≤4 上的最大值和最小值。将 y =0 代入原函数,则二 元函数变为一元函数 z = x 2 −4 x +7,−4≤ x ≤4. 首先观测此函数图形,相应的MATLAB程序代码为: >>x=-4:0.01:4;y=x.^2-4*x+7; >>plot(x,y); >>xlabel('x'),ylabel('z') 结果如图4所示 40 35 30 25 20 z 15 10 5 0 -4-3-2-101234 图4函数图 由图4可看出,当 x =−4 时函数取得最大值, x =2 时函数取得最小值。下面用计算 验证。对函数求导 >>clear;symsx; >>z=x^2-4*x+7;diff(z,x) 得 dz =2 x −4 ,可知驻点为 x =2 ,而边界点为 x =±4 ,计算着三个点上的函数值可得当 dx x =−4 时函数取得最大值39, x =2 时函数取得最小值3。 求函数在圆弧边界线上 x + 2 y 2 ≤16, y ≥0 的最大值和最小值。此边界线可用参数方程 x =4cos t , y =4sin t ,0≤ t ≤ π 表示。 则二元函数变为一元函数 z =−16cos t −8sin t +23 首先观测此函数图形,相应的MATLAB程序代码为: >>t=0:0.01*pi:pi;z=-16*cos(t)-8*sin(t)+23; >>plot(t,z); >>xlabel('t'),ylabel('z') 结果如图5所示 7 分析实验mg 40 35 30 25 z 20 15 10 5 00.511.522.533.5 图5函数图 由图6.5可看出,当 t ≈0.5 时函数取得最小值, x = π 时函数取得最大值。下面用计算 验证。对函数求导 >>clear;symst; >>z=-16*cos(t)-8*sin(t)+23;diff(z,t) 得 dz =18sin t −8cos t ,解正规方程 dt >>clear; >>t=solve('16*sin(t)-8*cos(t)=0','t') >>numeric(t)%求出t的数值 得 t =arctan 1 ≈0,4636 ,边界点为 t =0, π ,计算着三个点上的函数值可得当 t =0.4636 时 2 函数取得最小值0.5111, t = π ,( x =−4, y =0) 时函数取得最小值39。 综上所述,在点(2,1)处函数取得最小值2,在点(-4,0)处函数取得最大值39。 【练习与思考】 1.求 z = x 4 + y 4 −4 xy +1 的极值,并对图形进行观测。 2.求函数 f ( x , y ) = x +2 y 在圆周 x + y =1 的最大值和最小值。 2222 3.在球面 x + y + z =1 求出与点(3,1,-1)距离最近和最远点。 4.求函数 f ( x , y , z )= x +2 y +3 z 在平面 x − y + z =1 与柱面 x + y =1 的交线上 的最大值。 5.求函数 z = x + y 在三条直线 x =1, y =1, x + y =1 所围区域上的最大值和最小 值。 22 22 222 8


发布评论