(完整版)实验五用matlab求二元函数的极值

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

实验五 用matlab 求二元函数的极值

1.计算二元函数的极值

对于二元函数的极值问题,根据二元函数极值的必要和充分条件,可分为以下几个步骤: 步骤1.定义二元函数),(y x f z =.

步骤2.求解方程组0),(,0),(==y x f y x f y x ,得到驻点.

步骤3.对于每一个驻点),(00y x ,求出二阶偏导数

22222,,.z z z A B C x x y y ∂∂∂===∂∂∂∂ 步骤4. 对于每一个驻点),(00y x ,计算判别式2B AC -,如果02>-B AC ,则该驻点是

极值点,当0>A 为极小值, 0

极值点; 如果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

.

4

8

,

8

43y

x

y

z

y

x

x

z

+

-

=

-

=

再求解方程,求得各驻点的坐标。一般方程组的符号解

用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; 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')

结果如图16.5.1

图16.5.1 函数曲面图

可见在图6.1中不容易观测极值点,这是因为z的取值范围为[-500,100],是一幅远景图,局部信息丢失较多,观测不到图像细节.可以通过画等值线来观测极值.

>>contour(X,Y,Z, 600)

>>xlabel('x'),ylabel('y')

结果如图16.5.2

图16.5.2 等值线图

由图16.5.2可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极小值

)2

,4

(-

-

P和)2,4(

Q.根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且

指向函数增加的方向.由此可知,极值点应该有等高线环绕,而点

)0,0(

Q周围没有等高线环绕,

不是极值点,是鞍点.

例2求函数

xy

z=在条件1

=

+y

x下的极值..构造Lagrange函数

)1

(

)

,

(-

+

+

=y

x

xy

y

x

求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')

,

2

1

,

2

1

,

2

1

-

=

=

y

x

进过判断,此点为函数的极大值点,此时函数达到最大值.

例3抛物面

2

2y

x

z+

=被平面1

=

+

+z

y

x截成一个椭圆,求这个椭圆到原点的最长

与最短距离.

这个问题实际上就是求函数

2

2

2

)

,

,

(z

y

x

z

y

x

f+

+

=

在条件

2

2y

x

z+

=及1

=

+

+z

y

x下的最大值和最小值问题.构造Lagrange函数

)1

(

)

(

)

,

,

(2

2

2

2

2-

+

+

+

-

+

+

+

+

=z

y

x

z

y

x

z

y

x

z

y

x

λ

求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)

相关文档
最新文档