资源描述:
《实验3 matlab 符号运算及求函数极值new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、学号:班级:姓名:实验3Matlab符号运算及求函数极值一、实验目的和要求掌握用Matlab软件进行符号运算以及求函数的极值。二、实验环境Windows系列操作系统,Matlab软件。三、实验内容1.用MATLAB进行符号运算;2.编程求函数的极值。四、实验步骤1.开启软件平台——Matlab,开启Matlab编辑窗口;2.根据求解步骤编写M文件;3.保存文件并运行;4.观察运行结果(数值或图形);5.根据观察到的结果和体会写出实验报告。五、示例1.计算一元函数的极值例1求的极值解首先建立函数关系:syms
2、xy=(3*x^2+4*x+4)/(x^2+x+1);然后求函数的驻点:dy=diff(y);xz=solve(dy)xz=[0][-2]知道函数有两个驻点x=0和x=-2,接下来我们通过考察函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助MATLAB的作图功能,我们很容易做到这一点。例2画出上例中函数的图形学号:班级:姓名:解symsxy=(3*x^2+4*x+4)/(x^2+x+1);得到如下图形ezplot(y)2.计算二元函数的极值MATLAB中主要用diff求函数的偏导数,用jacob
3、ian求Jacobian矩阵。 diff(f,x,n) 求函数f关于自变量x的n阶导数。jacobian(f,x) 求向量函数f关于自变量x(x也为向量)的jacobian矩阵。可以用helpdiff,helpjacobian查阅有关这些命令的详细信息例1 求函数的极值点和极值.首先用diff命令求z关于x,y的偏导数>>clear; symsxy;>>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、方程,求得各驻点的坐标。一般方程组的符号解用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;>>x=-5:0.2:5; y=-5:0.2:5;>>[X,Y]=meshgrid(x,y);>>Z=X.^4-8*
5、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可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极
6、小值点和.根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且指向函数增加的方向.由此可知,极值点应该有等高线环绕,而点周围没有等高线环绕,不是极值点,是鞍点.六、实验任务:1.求的极值,并画出函数图形。2.求的极值,并对图形进行观测。七、程序代码及运行结果(经调试后正确的源程序)1.学号:班级:姓名:学号:班级:姓名:2.学号:班级:姓名:学号:班级:姓名:学号:班级:姓名:八、实验总结通过本节课让我学会了怎样计算一元函数的极值和二元函数的极值。并知道了diff(f,x,n) 是求函数f关于自变量
7、x的n阶导数。jacobian(f,x) 是求向量函数f关于自变量x(x也为向量)的jacobian矩阵。