75附录Ⅰ大学数学实验指导书(仅供交流学习)项目三多元函数微积分实验1多元函数微分学(基础实验)实验目的掌握利用Mathematica计算多元函数偏导数和全微分的方法,掌握计算二元函数极值和条件极值的方法.理解和掌握曲面的切平面的作法.通过作图和观察,理解二元函数的性质、方向导数、梯度和等高线的概念.基本命令1.求偏导数的命令D命令D既可以用于求一元函数的导数,也可以用于求多元函数的偏导数.例如:求),,(zyxf对x的偏导数,则输入D[f[x,y,z],x]求),,(zyxf对y的偏导数,则输入D[f[x,y,z],y]求),,(zyxf对x的二阶偏导数,则输入D[f[x,y,z],{x,2}]求),,(zyxf对yx,的混合偏导数,则输入D[f[x,y,z],x,y]…………2.求全微分的命令Dt该命令只用于求二元函数),(yxf的全微分时,其基本格式为Dt[f[x,y]]其输出的表达式中含有Dt[x],Dt[y],它们分别表示自变量的微分dx,dy.若函数),(yxf的表达式中还含有其它用字符表示的常数,例如a,则Dt[f[x,y]]的输出中还会有Dt[a],若采用选项Constants-{a},就可以得到正确结果,即只要输入Dt[f[x,y],Constants-{a}]3.在Oxy平面上作二元函数),(yxf的等高线的命令ContourPlot命令的基本格式为ContourPlot[f[x,y],{x,x1,x2},{y,y1,y2}]例如,输入ContourPlot[x^2-y^2,{x,-2,2},{y,-2,2}]则输出函数22yxz的等高线图(图1.1).该命令的选项比较多(详细的内容参见光盘中的实验案例库).如选项Contours-15表示作15条等高线,选项Contours-{0}表示只作函数值为0的等高线.76-2-1012-2-1012图1.1实验举例求多元函数的偏导数与全微分例1.1(教材例1.1)设),(cos)sin(2xyxyz求.,,,222yxzxzyzxz输入Clear[z];z=Sin[x*y]+Cos[x*y]^2;D[z,x]D[z,y]D[z,{x,2}]D[z,x,y]则输出所求结果.例1.2设,)1(yxyz求yzxz,和全微分dz.输入Clear[z];z=(1+x*y)^y;D[z,x]D[z,y]则有输出]1[1)1()1(12xyLogxyxyxyxyyyy再输入Dt[z]则得到输出]1[][1])[][()1(xyLogyDtxyyxDtxyDtyxyy例1.3(教材例1.2)设,)(yxyaz其中a是常数,求dz.输入Clear[z,a];z=(a+x*y)^y;wf=Dt[z,Constants-{a}]//Simplify77则输出结果:(a+xy)-1+y(y2Dt[x,Constants-{a}]+Dt[y,Constants-{a}](xy+(a+xy)Log[a+xy]))其中Dt[x,Constants-{a}]就是dx,Dt[y,Constants-{a}]就是dy.可以用代换命令“/.”把它们换掉.输入wf/.{Dt[x,Constants-{a}]-dx,Dt[y,Constants-{a}]-dy}输出为(a+xy)-1+y(dxy2+dy(xy+(a+xy)Log[a+xy]))例1.4(教材例1.3)设vueyvuexuucos,sin,求.,,,yvxvyuxu输入eq1=D[x==E^u+u*Sin[v],x,NonConstants-{u,v}](*第一个方程两边对x求导数,把u,v看成x,y的函数*)eq2=D[y==E^u-u*Cos[v],x,NonConstants-{u,v}](*第二个方程两边对x求导数,把u,v看成x,y的函数*)Solve[{eq1,eq2},{D[u,x,NonConstants-{u,v}],D[v,x,NonConstants-{u,v}]}]//Simplify(*解求导以后由eq1,eq2组成的方程组*)则输出}}][][1(][}],{tan,,[,][][1][}],{tan,,[{{vSinEvCosEuvCosEvutsNonConsxvDvSinEvCosEvSinvutsNonConsxuDuuuuu其中D[u,x,NonConstants-{u,v}]表示u对x的偏导数,而D[v,x,NonCosnstants-{u,v}]表示v对x的偏导数.类似地可求得u,v对y的偏导数.微分学的几何应用例1.5求出曲面222yxz在点(1,1)处的切平面、法线方程,并画出图形.解(1)画出曲面的图形.曲面的参数方程为2]2,0[],2,0[,cos2/sinrzruuryufx输入命令Clear[f];f[x_,y_]=2x^2+y^2;p1=Plot3D[f[x,y],{x,-2,2},{y,-2,2}];g1=ParametricPlot3D[{r*Sin[u]/Sqrt[2.],r*Cos[u],r^2},{u,0,2*Pi},{r,0,2}]则输出相应图形(图1.2).78-101-2-101201234-101-2-1012图1.2(2)画出切平面的图形.输入命令a=D[f[x,y],x]/.{x-1,y-1};b=D[f[x,y],y]/.{x-1,y-1};p[x_,y_]=f[1,1]+a(x-1)+b(y-1);g2=Plot3D[p[x,y],{x,-2,2},{y,-2,2}];则输出切平面方程为,012yx及相应图形(图1.3).-2-1012-2-1012-100-2-1012图1.3(3)画出法线的图形.输入命令ly[x_]=1+b(x-1)/a;lz[x_]=f[1,1]-(x-1)/a;g3=ParametricPlot3D[{x,ly[x],lz[x]},{x,-2,2}];Show[p1,g2,g3,AspectRatio-Automatic,ViewPoint-{-2.530,-1.025,2.000}];则输出相应图形(图1.4).-2-1012-2-1012-10010-1001079图1.4例1.6(教材例1.4)求曲面14),(22yxyxk在点2164,21,41处的切平面方程,并把曲面和它的切平面作在同一图形里.输入Clear[k,z];k[x_,y_]=4/(x^2+y^2+1);(*定义函数k(x,y)*)kx=D[k[x,y],x]/.{x-1/4,y-1/2};(*求函数k(x,y)对x的偏导数,并代入在指定点的值*)ky=D[k[x,y],y]/.{x-1/4,y-1/2};(*求函数k(x,y)对y的偏导数,并代入在指定的值*)z=kx*(x-1/4)+ky*(y-1/2)+k[1/4,1/2];(*定义在指定点的切平面函数*)再输入qm=Plot3D[k[x,y],{x,-2,2},{y,-2,2},PlotRange-{0,4},BoxRatios-{1,1,1},PlotPoints-30,DisplayFunction-Identity];qpm=Plot3D[z,{x,-2,2},{y,-2,2},DisplayFunction-Identity];Show[qm,qpm,DisplayFunction-$DisplayFunction]则输出所求曲面与切平面的图形(图1.5).-2-1012-2-101201234-2-1012-2-1012图1.5多元函数的极值例1.7(教材例1.5)求xyxyxyxf933),(2233的极值.输入Clear[f];80f[x_,y_]=x^3-y^3+3x^2+3y^2-9x;fx=D[f[x,y],x]fy=D[f[x,y],y]critpts=Solve[{fx==0,fy==0}]则分别输出所求偏导数和驻点:2236369yyxx{{x--3,y-0},{x--3,y-2},{x-1,y-0},{x-1,y-2}}再输入求二阶偏导数和定义判别式的命令fxx=D[f[x,y],{x,2}];fyy=D[f[x,y],{y,2}];fxy=D[f[x,y],x,y];disc=fxx*fyy-fxy^2输出为判别式函数2xyyyxxfff的形式:(6+6x)(6-6y)再输入data={x,y,fxx,disc,f[x,y]}/.critpts;TableForm[data,TableHeadings-{None,{x,y,fxx,disc,f}}]最后我们得到了四个驻点处的判别式与xxf的值并以表格形式列出.Xyfxxdiscf-30-12-7227-32-127231101272-51212-72-1易见,当2,3yx时,12xxf判别式disc=72,函数有极大值31;当0,1yx时,12xxf判别式disc=72,函数有极小值-5;当0,3yx和2,1yx时,判别式disc=-72,函数在这些点没有极值.最后,把函数的等高线和四个极值点用图形表示出来,输入d2={x,y}/.critpts;g4=ListPlot[d2,PlotStyle-PointSize[0.02],DisplayFunction-Identity];g5=ContourPlot[f[x,y],{x,-5,3},{y,-3,5},Contours-40,PlotPoints-60,ContourShading-False,Frame-False,Axes-Automatic,AxesOrigin-{0,0},DisplayFunction-Identity];Show[g4,g5,DisplayFunction-$DisplayFunction]则输出图1.6.-4-22-224图1.681从上图可见,在两个极值点附近,函数的等高线为封闭的.在非极值点附近,等高线不封闭.这也是从图形上判断极值点的方法.注:在项目一的实验4中,我们曾用命令FindMinimum来求一元函数的极值,实际上,也可以用它求多元函数的极值,不过输入的初值要在极值点的附近.对本例,可以输入以下命令FindMinimum[f[x,y],{x,-1},{y,1}]则输出{-5.,{x-1.,y--2.36603×10-8}}从中看到在0,1yx的附近函数),(yxf有极小值-5,但y的精度不够好.例1.8求函数22yxz在条件0122yxyx下的极值.输入Clear[f,g,la];f[x_,y_]=x^2+y^2;g[x_,y_]=x^2+y^2+x+y-1;la[x_,y_,r_]=f[x,y]+r*g[x,y];extpts=Solve[{D[la[x,y,r],x]==0,D[la[x,y,r],y]==0,D[la[x,y,r],r]==0}]得到输出)31(21),31(21),33(31,)31(21),31(21),33(31yxryxr再输入f[x,y]/.extpts//Simplify得到两个可能是条件极值的函数值}.32,32{但是否真的取到条件极值呢?可利用等高线作图来判断.输入dian={x,y}/.Table[extpts[[s,j]],{s,1,2},{j,2,3}]g1=ListPlot[dian,PlotStyle-PointSize[0.03],DisplayFunction-Identity]cp1=Con