2
3 章用 MATLAB 求极值 灵活的运用 MATLAB 的计算功能,可以很容易地求得函数的极值。 3.6.1 2 2 3 4 4 1 x x y x x + + = + + 的极值 解 首先建立函数关系: syms s y=(3*x^2+4*x+4)/( x^2+x+1); 然后求函数的驻点: dy=diff(y); xz=solve(dy) xz= [0] [-2] 知道函数有两个驻点 x 1 =0 x 2 =-2,考察函数在驻点处二阶导数的正负情况: d2y=diff(y,2); z1=limit(d2y,x,0) z1= -2 z2=limit(d2y,x,-2) z2= 2/9 于是知在 x 1 =0 处二阶导数的值为 z 1 =-2,小于 0,函数有极大值;在 x 2 =-2 处二阶导数的值 z 2 =2/9,大于 0,函数有极小值。如果需要,可顺便求出极值点处的函数值: y 1 =limit(y,x,0) y 1 = 4 y 2 =limit(y,x,-2) y 2 = 8/3 事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。而借 MATLAB 的作图功能,我们很容易做到这一点。 3.6.2 画出上例中函数的图形 syms x y=(3*x^2+4*x+4)/( x^2+x+1); ↙得到如下图形 ezplot(y)

03.第三章用Matlab求极值

Embed Size (px)

Citation preview

Page 1: 03.第三章用Matlab求极值

第3章 用 MATLAB 求极值

灵活的运用MATLAB 的计算功能,可以很容易地求得函数的极值。

例 3.6.1 求

2

2

3 4 4

1

x xy

x x

+ +=+ + 的极值

解 首先建立函数关系:

syms s ↙

y=(3*x^2+4*x+4)/( x^2+x+1); ↙

然后求函数的驻点:

dy=diff(y); ↙

xz=solve(dy) ↙

xz=

[0] [-2]

知道函数有两个驻点 x 1 =0 和 x 2 =-2,考察函数在驻点处二阶导数的正负情况:

d2y=diff(y,2); ↙

z1=limit(d2y,x,0) ↙

z1=

-2

z2=limit(d2y,x,-2) ↙

z2=

2/9

于是知在 x 1 =0 处二阶导数的值为 z 1 =-2,小于 0,函数有极大值;在 x 2 =-2 处二阶导数的值

为 z 2 =2/9,大于 0,函数有极小值。如果需要,可顺便求出极值点处的函数值:

y 1 =limit(y,x,0) ↙

y 1 =

4

y 2 =limit(y,x,-2) ↙

y 2 =

8/3

事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。而借

助 MATLAB 的作图功能,我们很容易做到这一点。

例 3.6.2 画出上例中函数的图形

解 syms x ↙

y=(3*x^2+4*x+4)/( x^2+x+1); ↙得到如下图形

ezplot(y) ↙

Page 2: 03.第三章用Matlab求极值