Matlab 详解导数及偏导数运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
求 f ( x ) 的 n 阶导数 f ( n) ( x );
f f ( x , y ) 求 对 x 的一阶偏导数
x
;
diff(函数f(x,y),变量名 x,n),
n f 求 f ( x , y ) 对 x 的 n 阶偏导数 n ; x
matlab 求雅可比矩阵命令 jacobian,调用 格式:
例5 求 y ( x 2 x ) 的导数;
2 20
解: 输入指令
syms x; dy_dx=diff((x^2+2*x)^20)
得结果: dy_dx=20*(x^2+2*x)^19*(2*x+2).
例6
求下列函数的的导数: y1 y3 4 x 2 2 x 5;
sin x
y2 cos x 2 2 cos 2 x; ; y4 ln ln x .
x y z ,求 u 的一阶偏导数;
2 2 2
du_dx=1/(x^2+y^2+z^2)^(1/2)*x
du_dy =1/(x^2+y^2+z^2)^(1/2)*y du_dz = 1/(x^2+y^2+z^2)^(1/2)*z
u x u z x x2 y2 z2 z x2 y2 z2 u y y x2 y2 z2
例12
设 ln x e
y x
解: F ( x , y ) ln x e
dy e,求 ; dx y
x
dy Fx e , 先求 Fx , 再求 Fy , dx Fy
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/x^2*exp(-y/x) df_dy = -1/x*exp(-y/x) dy_dx = -(-1/x-y/x^2*exp(-y/x))*x/exp(-y/x)
5. 求高阶导数或高阶偏导数
例10
设 f ( x ) x e ,求 f
2 2x
( 20)
( x) ;
解:输入命令 syms x ; diff(x^2*exp(2*x),x,20) ans = 99614720*exp(2*x)+20971520*x*e xp(2*x)+1048576*x^2*exp(2*x)
实验3
导数及偏导数运算
实验目的:
1. 进一步理解导数概念及几何意义; 2. 学习Matlab的求导命令与求导法。
实验内容:
学习 Matlab 命令 导数概念 求一元函数的导数 求多元函数的偏导数 求高阶导数或高阶偏导数 求隐函数所确定函数的导数与偏导数
1. 学习Matlab命令
( Fx , Fy , Fz )
Fy z y Fz
a= [ cos(x*y)*y+(1+tan(x*z)^2)*z, cos(x*y)*xsin(y*z)*z, -sin(y*z)*y+(1+tan(x*z)^2)*x] dz_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+t来自百度文库n(x*z)^2)*x)
可知结果 f (0) 1。
2). 导数的几何意义是曲线的切线斜率
例2 画出 f ( x ) e 在x=0处(P(0,1))的切线及若 干条割线,观察割线的变化趋势.
x x h 解:在曲线 f ( x ) e 上另取一点M ( h, e ) 则PM的方程是: y 1 eh 1 x 0 h0
2) 参数方程确定的函数的导数
x x( t ) 设参数方程 所确定的函数 y f ( x ) , y y( t ) dy y( t ) 则 y f ( x ) 的导数 。 dx x( t )
x a( t sin t ) dy 例7 设 , 求 ; dx y a(1 cos t )
cos(x) sin(x) ------ - -----x 2 x
例4 求 y ln(sin x ) 的导数;
解: 输入指令
syms x; dy_dx=diff(log(sin(x)))
得结果: dy_dx=cos(x)/sin(x).
在 matlab中,函数 lnx 用 log(x)表示, log10(x) 表示 lgx。
z Fx x Fz
例14 对二元函数 z ( x 2 x )e
2
x 2 y 2 xy
y ,求 ; x
输入命令: syms x y z; f=(x^2-2*x)*exp(-x^2-y^2-x*y)-z; pretty(-simple(diff(f,x))/diff(f,y));
dz_dx = 30*x^4+4*y^2 z 30 x 4 4 y 2 , z 36 y 2 4 x 2 y dz_dy = -36*y^2+4*x^2 x dz_dxdy =8*x*y 2z 8 xy xy
6. 求隐函数所确定函数的导数或偏导数
已知隐函数方程 f ( x1 , x2 ,, xn ) 0 则 f ( x1 , x2 ,, xn ) x j x i x j f ( x1 , x2 ,, xn ) x i
3. 求下列隐函数的导数
y 2 2 1) arctan ln x y ; x
4. 设 y e x cos x ,求 y ( 4 ) ;
2)
x y ;
y x
5. 验证 y e x sin x 满足关系式 y 2 y 2 y 0 ; 6. 求下列函数的偏导数
z
1) z x sin( xy);
,
即
eh 1 y x 1 h
取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 on for i=1:5; plot(h(i),exp(h(i)),'r.') plot(x,a(i)*x+1) end axis square 作出y=exp(x)在x=0处的切线y=1+x plot(x,x+1,’r’)
jacobian([f(x,y,z),g(x,y,z),h(x,y,z)],[x,y,z])
f f f x y z g g g x y z h h h x y z
2. 导数的概念
导数为函数的变化率,其几何意义是曲线在一 点处的切线斜率。 1). 点导数是一个极限值
解: 输入指令 syms a x; a=diff([sqrt(x^2-2*x+5),cos(x^2)+2*cos(2*x), 4^(sin(x)),log(log(x))])
Matlab 函数可以对矩阵或向量操作。
a= [ 1/2/(x^2-2*x+5)^(1/2)*(2*x-2), -2*sin(x^2)*x-4*sin(2*x), 4^sin(x)*cos(x)*log(4), 1/x/log(x)]
2
x 2) u ; y
2u 2u 2u 7. 设 u x ln( x y ) , 求 2 , 2 , ; x y xy z z 8. 求下列多元函数的偏导数 , , x y
1) cos 2 x cos 2 y cos 2 z 1; 2) e z xyz ; 9. 证明函数 u ln ( x a )2 ( y b)2 (a,b 为常数)满 足 Laplace 方程
z z 例13 设 sin( xy) cos( yz ) tan( xz ) 0,求 , ; x y
解: F ( x , y , z ) sin( xy ) cos( yz ) tan( xz ),
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)
从图上看,随着M与P越来越接近,割线PM越来越接 近曲线的割线.
3. 求一元函数的导数
1) y=f(x)的一阶导数
解: 输入指令
sin x 例3 . 求 y 的导数; x
pretty(dy_dx)
syms x; dy_dx=diff(sin(x)/x)
得结果: dy_dx=cos(x)/x-sin(x)/x^2.
例 9 求下列函数的偏导数 z1 arctan( y / x ); z2 x y 。
解: 输入命令 syms x y; diff(atan(y/x),x) ans = -y/x^2/(1+y^2/x^2)
syms x y;
ans = 1/x/(1+y^2/x^2)
diff(atan(y/x),y)
练习:
1. 求下列函数的导数
1 1); 1) y ( x 1)( 2) y x sin x ln x ; x 2 1 3) y 2 sin 2 ; 4) y ln( x x 2 a 2 ); x
2 求下列参数方程所确定的函数的导数
x t4 x ln(1 t 2 ) 1) ; 2) 。 y 4t y t arctan t
例1 . 设函数 f ( x ) e ,用定义计算 f (0);
x
解: f ( x ) 在某一点 x0 的导数定义为极限
f ( x0 x ) f ( x0 ) lim x 0 x 我们记 h x,输入命令:
syms h; limit((exp(0+h)-exp(0))/h,h,0) ans=1
解: 输入命令
syms a t;
dx_dt=diff(a*(t-sin(t)));dy_dt=diff(a*(1-cos(t))); dy_dx=dy_dt/dx_dt. dy_dx = sin(t)/(1-cos(t))
4. 求多元函数的偏导数
例8 设 u
解:输入命令 syms x y z; du_dx=diff((x^2+y^2+z^2)^(1/2),x) du_dy=diff((x^2+y^2+z^2)^(1/2),y) du_dz=diff((x^2+y^2+z^2)^(1/2),z) a=jacobian((x^2+y^2+z^2)^(1/2),[x y,z])
2 2 2 z z z 6 4 2 2 ; 例11 设 z x 3 y 2 x y ,求 2 , 2 , x y xy
解:输入命令
syms x y ; dz_dx=diff(x^6-3*y^4+2*x^2*y^2,x,2) dz_dy=diff(x^6-3*y^4+2*x^2*y^2,y,2) dz_dxdy=diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)
建立符号变量命令 sym 和 syms 调用格式: x=sym(‘x’) syms x y z 建立符号变量 x; 建立多个符号变量 x,y,z;
Matlab 求导命令 diff 调用格式: diff(f(x)), diff(f(x),n), diff(f(x,y), x), 求 f ( x )的一阶导数 f ( x );
syms x y;
Jacobian([atan(y/x),x^y],[x ,y]) ans = [ -y/x^2/(1+y^2/x^2), 1/x/(1+y^2/x^2)] [ x^y*y/x, x^y*log(x)]
z1 x J z 2 x
z1 y z 2 y