实验3 Matlab 符号运算及求函数极值

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

实验3 Matlab 符号运算及求函数极值一、实验目的和要求

掌握用Matlab软件进行符号运算以及求函数的极值。

二、实验环境

Windows系列操作系统,Matlab软件。

三、实验内容

1.用MATLAB进行符号运算;

2.编程求函数的极值。

四、实验步骤

3.开启软件平台——Matlab,开启Matlab编辑窗口;

4.根据求解步骤编写M文件;

5.保存文件并运行;

6.观察运行结果(数值或图形);

7.根据观察到的结果和体会写出实验报告。

五、示例

1.计算一元函数的极值

例1求

2

2

344

1

x x

y

x x

++

=

++

的极值

解首先建立函数关系:

s yms x

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,

接下来我们通过考察函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助MATLAB的作图功能,我们很容易做到这一点。

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

解 syms x

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

ezplot(y)

2.计算二元函数的极值

MATLAB 中主要用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。

例1 求函数42823z x xy y =-+-的极值点和极值.

首先用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

即348,84z z x y x y x y

∂∂=-=-+∂∂再求解方程,求得各驻点的坐标。一般方程组的符号解用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;

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

图1 函数曲面图

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

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

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

结果如图2

图2 等值线图

由图2可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极小值点(2,4)P --和(2,4)Q .根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且指向函数增加的方向.由此可知,极值点应该有等高线环绕,而点(0,0)Q 周围没有等高线环绕,不是极值点,是鞍点.

六、实验任务:

1.求1

2sin sin 33

y x x =+的极值,并画出函数图形。

2.求4441z x y xy =+-+的极值,并对图形进行观测。 七、 程序代码及运行结果(经调试后正确的源程序)

1.

2.

八、实验总结

通过本节课让我学会了怎样计算一元函数的极值和二元函数的极值。并知道了diff(f,x,n) 是求函数f关于自变量x的n阶导数。jacobian(f,x) 是求向量函数f关于自变量x(x也为向

量)的jacobian矩阵。

相关文档
最新文档