1、实验3 导数及偏导数运算,实验目的:,1. 进一步理解导数概念及几何意义;,2. 学习Matlab的求导命令与求导法。,学习 Matlab 命令导数概念求一元函数的导数求多元函数的偏导数求高阶导数或高阶偏导数求隐函数所确定函数的导数与偏导数,实验内容:,1. 学习Matlab命令,建立符号变量命令 sym 和 syms 调用格式:,x=sym(x),建立符号变量 x;,syms x y z,建立多个符号变量 x,y,z;,Matlab 求导命令 diff 调用格式:,diff(f(x),,求 的一阶导数 ;,diff(f(x),n),,diff(f(x,y), x),,求 对 x 的一阶偏导数
2、 ;,diff(函数f(x,y),变量名 x,n),,求 对 x 的 n 阶偏导数 ;,jacobian(f(x,y,z),g(x,y,z),h(x,y,z),x,y,z),matlab 求雅可比矩阵命令 jacobian,调用格式:,2. 导数的概念,导数为函数的变化率,其几何意义是曲线在一点处的切线斜率。,1). 点导数是一个极限值,例1 .,解:,syms h; limit(exp(0+h)-exp(0)/h,h,0),ans=1,2). 导数的几何意义是曲线的切线斜率,画出 在x=0处(P(0,1)的切线及若干条割线,观察割线的变化趋势.,例2,解:在曲线 上另取一点 ,则PM的方程是
3、:,即,取h=3,2,1,0.1,0.01,分别作出几条割线.,h=3,2,1,0.1,0.01;a=(exp(h)-1)./h;x=-1:0.1:3;plot(x,exp(x),r);hold onfor i=1:5;plot(h(i),exp(h(i),r.)plot(x,a(i)*x+1)endaxis square,作出y=exp(x)在x=0处的切线y=1+x,plot(x,x+1,r),从图上看,随着M与P越来越接近,割线PM越来越接近曲线的割线.,3. 求一元函数的导数,例3 .,1) y=f(x)的一阶导数,解:,输入指令,syms x;dy_dx=diff(sin(x)/x)
4、,得结果: dy_dx=cos(x)/x-sin(x)/x2.,pretty(dy_dx) cos(x) sin(x) - - - x 2 x,在 matlab中,函数 lnx 用 log(x)表示, log10(x) 表示 lgx。,例4,解:,输入指令,syms x;dy_dx=diff(log(sin(x),得结果: dy_dx=cos(x)/sin(x).,例5,解:,输入指令,syms x;dy_dx=diff(x2+2*x)20),得结果: dy_dx=20*(x2+2*x)19*(2*x+2).,例6,解:,输入指令,syms a x;a=diff(sqrt(x2-2*x+5),
5、cos(x2)+2*cos(2*x),4(sin(x),log(log(x),Matlab 函数可以对矩阵或向量操作。,a = 1/2/(x2-2*x+5)(1/2)*(2*x-2), -2*sin(x2)*x-4*sin(2*x), 4sin(x)*cos(x)*log(4), 1/x/log(x),解:,输入命令,2) 参数方程确定的函数的导数,例7,dy_dx = sin(t)/(1-cos(t),syms a t;dx_dt=diff(a*(t-sin(t);dy_dt=diff(a*(1-cos(t); dy_dx=dy_dt/dx_dt.,syms x y z;du_dx=diff
6、(x2+y2+z2)(1/2),x)du_dy=diff(x2+y2+z2)(1/2),y) du_dz=diff(x2+y2+z2)(1/2),z)a=jacobian(x2+y2+z2)(1/2),x y,z),解:输入命令,4. 求多元函数的偏导数,例8,du_dx=1/(x2+y2+z2)(1/2)*x du_dy =1/(x2+y2+z2)(1/2)*y du_dz = 1/(x2+y2+z2)(1/2)*z,解:,输入命令,syms x y;diff(atan(y/x),y),ans = -y/x2/(1+y2/x2),syms x y;diff(atan(y/x),x),ans
7、= 1/x/(1+y2/x2),syms x y;Jacobian(atan(y/x),xy,x ,y),ans = -y/x2/(1+y2/x2), 1/x/(1+y2/x2) xy*y/x, xy*log(x),5. 求高阶导数或高阶偏导数,例10,syms x ;diff(x2*exp(2*x),x,20),解:输入命令,ans = 99614720*exp(2*x)+20971520*x*exp(2*x)+1048576*x2*exp(2*x),例11,syms x y ;dz_dx=diff(x6-3*y4+2*x2*y2,x,2)dz_dy=diff(x6-3*y4+2*x2*y2
8、,y,2)dz_dxdy=diff(diff(x6-3*y4+2*x2*y2,x),y),解:输入命令,dz_dx = 30*x4+4*y2 dz_dy = -36*y2+4*x2 dz_dxdy =8*x*y,6. 求隐函数所确定函数的导数或偏导数,例12,syms x y ;df_dx=diff(log(x)+exp(-y/x)-exp(1),x)df_dy=diff(log(x)+exp(-y/x)-exp(1),y)dy_dx=-df_dx/df_dy,解:,df_dx = 1/x+y/x2*exp(-y/x)df_dy = -1/x*exp(-y/x)dy_dx = -(-1/x-y
9、/x2*exp(-y/x)*x/exp(-y/x),例13,syms x y z;a=jacobian(sin(x*y)+cos(y*z)+tan(x*z),x,y,z)dz_dx=-a(1)/a(3)dz_dy=-a(2)/a(3),解:,a = cos(x*y)*y+(1+tan(x*z)2)*z, cos(x*y)*x-sin(y*z)*z, -sin(y*z)*y+(1+tan(x*z)2)*xdz_dx =(-cos(x*y)*y-(1+tan(x*z)2)*z)/(-sin(y*z)*y+(1+tan(x*z)2)*x)dz_dy =(-cos(x*y)*x+sin(y*z)*z)/(-sin(y*z)*y+(1+tan(x*z)2)*x),输入命令:,syms x y;f=(x2-2*x)*exp(-x2-y2-x*y)-z;pretty(-simple(diff(f,x)/diff(f,y);,练习:,