第二章 导数与微分 数学实验 一、一元函数的导数计算 Matlab系统中为用户提供了一元显函数求导的符号计算函数diff,可以调用此函数求 符号导数,不但使用方便,而且计算准确、迅速,尤其是求结构复杂的高阶导数更显示出其 优越性.用diff可以求一元显函数的各阶导函数和在某点处的各阶导数.用diff作符号求导 函数和一些做表达式简化的函数的调用格式和功能如下所示. diff(f(x),x) 求函数y=f(x)对x的一阶导函数y=∫"(x) diff(f (x),x,n) 求函数y=fx)对x的n一阶导函数ym=(x) pretty(diff(f(x),x) 输出一个符合日常书写习惯的表达式 simplify(f) 对函数表达式∫简化 例1设fx)=e,用定义计算f'O): 解由导数定义,)在某一点6处的导数为:了0=化+),相应的 Matlab程序为 >>syms h: >>limit((exp(O+h)-exp(0))/h,h,0) 结果为ans=1,可知f'(0)=1. 例2用Matlab软件求下列函数的导数: )y=写2)1+1万:8)求y=心mx的四阶号数 1 解(1)相应的Matlab程序为 >svms x: >>diff(sqrt(tan(x/3))) 结果为ans=1/2/tan(1/3*x)(1/2)*(1/3+1/3*tan(1/3*x)^2), 即y'= ,Gm 2.tan 3 3 (2)相应的Matlab程序为 >syms t:
1 第二章 导数与微分 数学实验 一、一元函数的导数计算 Matlab 系统中为用户提供了一元显函数求导的符号计算函数 diff,可以调用此函数求 符号导数,不但使用方便,而且计算准确、迅速,尤其是求结构复杂的高阶导数更显示出其 优越性.用 diff 可以求一元显函数的各阶导函数和在某点处的各阶导数.用 diff 作符号求导 函数和一些做表达式简化的函数的调用格式和功能如下所示. diff(f(x),x) 求函数 y f x = ( ) 对 x 的一阶导函数 y f x = ( ) diff(f(x),x,n) 求函数 y f x = ( ) 对 x 的 n 一阶导函数 ( ) ( ) ( ) n n y f x = pretty(diff(f(x),x) 输出一个符合日常书写习惯的表达式 simplify(f) 对函数表达式 f 简化 例1 设 ( ) ex f x = ,用定义计算 f (0) . 解 由导数定义, f x( ) 在某一点 0 x 处的导数为: f (0) = 0 0 0 ( ) ( ) lim h f x h f x → h + − ,相应的 Matlab 程序为 >>syms h; >>limit((exp(0+h)-exp(0))/h,h,0) 结果为ans=1,可知 f (0) 1 = . 例 2 用 Matlab 软件求下列函数的导数: (1) tan 3 x y = ;(2) 1 1 1 1 y t t = + + − ;(3)求 e sin x y x = 的四阶导数 (4) y . 解(1) 相应的 Matlab 程序为 >> syms x; >> diff(sqrt(tan(x/3))) 结果为 ans =1/2/tan(1/3*x)^(1/2)*(1/3+1/3*tan(1/3*x)^2), 即 1 1 1 2 tan 3 3 3 2 tan 3 x y x = + . (2) 相应的 Matlab 程序为 >> syms t;
>diff(1/(1+t^(1/2)+1/(1-t^(1/2) 结果为ans=-1/2/(1+t(1/2)^2/t^(1/2)+1/2/(1-t^(1/2)^2/t^(1/2), -1 即y= 2(+)2(1-) (3)相应的Matlab程序为 >syms x: >diff(exp(x)*sin(x),4) 结果为ans=-4*exp(x)*sin(x),即y=-4 e'sinx。 下面介绍用Matlab中的函数diff间接求参数方程的导数.如果一元函数y=fx)由参 数方程所确定,则y对x的导数为义=出=兰,用恤t1b中的函数dif间接求 y=x(t) 数方程的符号导数的调用格式为 yx=diff(f,t)/diff(x,t). 附及一元通数由参数方程化能、求会 解相应的Matlab程序为 >syms t >>xt=diff(a*(t-sin(t))):yt=diff(a*(1-cos(t))): >>yx=yt/xt 结果为yx=sin()/1-eos(),即 sint dx 1-cost 一元函数的微分计算 下面介绍用Matlab中的函数diff间接地计算一元函数的微分.如果一元函数y=f(x)可 导,则y对x的微分为d=f'(x)达,故用Matlab中的函数diff间接求y=fx)对x的微分 的调用格式为 dy=diff(v.x)*dx 如果一元函数y=f(x)在x=,处可导,则y在x=无处对x的微分为 d八n=f'xd, 故用函数diff间接求y=fx)在x=x,处对x的微分的步骤如下: 步骤l:求yx=diff(y,x) 步骤2:将x=代入()表达式,求出儿,=f化),并将值赋给变量0 步骤3:用程序:>syms dx
2 >> diff(1/(1+t^(1/2))+1/(1-t^(1/2))) 结果为 ans =-1/2/(1+t^(1/2))^2/t^(1/2)+1/2/(1-t^(1/2))^2/t^(1/2), 即 ( ) ( ) 2 2 1 1 2 1 2 1 y t t t t − = + + − . (3) 相应的 Matlab 程序为 >> syms x; >> diff(exp(x)*sin(x),4) 结果为 ans =-4*exp(x)*sin(x),即 (4) 4e sin x y x = − . 下面介绍用 Matlab 中的函数 diff 间接求参数方程的导数.如果一元函数 y f x = ( ) 由参 数方程 ( ) ( ) x x t y y t = = 所确定,则 y 对 x 的导数为 d d t x t y y y x x = = ,用 Matlab 中的函数 diff 间接求参 数方程的符号导数的调用格式为 yx=diff(f,t)/diff(x,t). 例3 设一元函数 y y x = ( ) 由参数方程 ( sin ) (1 cos ) x a t t y a t = − = − 确定,求 d d y x . 解 相应的Matlab程序为 >> syms t ; >>xt=diff(a*(t-sin(t)));yt=diff(a*(1-cos(t))); >>yx=yt/xt 结果为 yx=sin(t)/(1-cos(t)),即 d sin d 1 cos y t x t = − . 二、一元函数的微分计算 下面介绍用Matlab中的函数diff间接地计算一元函数的微分.如果一元函数 y f x = ( ) 可 导,则 y 对 x 的微分为 dy f x dx = ( ) ,故用 Matlab 中的函数 diff 间接求 y f x = ( ) 对 x 的微分 的调用格式为 dy=diff(y,x)*dx 如果一元函数 y f x = ( ) 在 0 x x = 处可导,则 y 在 0 x x = 处对 x 的微分为 0 0 d ( )d x x y f x x = = , 故用函数 diff 间接求 y f x = ( ) 在 0 x x = 处对 x 的微分的步骤如下: 步骤 1:求 yx=diff(y,x) 步骤 2:将 0 x x = 代入 y x ( ) 表达式,求出 0 0 ( ) x x y f x = = ,并将值赋给变量 y0 步骤 3:用程序:>>syms dx
dyO=yxO*dx 求出d儿=f"(x)d 例4求函数的微分: x2 (1)y :(2)设函数y=(x)由方程25y-c+c=0确定,求d。 解(1)相应的Matlab程序为 >syms x dx: >y=x^2/sqrt(x^2+a^2) >dy=diff(y,x)*dx:dyl=simplify(dy) %对求出的导函数进行化简 运行后得函数的微分为 dy1=x*(x^2+2*a^2)*dx/(x^2+a^2)(3/2) 即所为微分为山=+20中山. (x2+a2)月 (2)因为当x=0时,y=0.所以求微分dy相应的Matlab程序为 >syms x y: >》F=25*x*y-exp(-2*x)+exp(y): >Fx=diff(F,x):Fy=diff(F,y):yx=-Fx/Fy: >yl=simplify(yx) 运行后得化简后的y对x的一阶导数如下: y1=(-25*y-2*exp(-2*x)/(25*x+exp(y) 再输入代码 >syms dx; >》x=0:y=0:dy1=(-25*y-2*exp(-2*x)/(25*x+exp(y))*dx 运行后得到州。为 dy1=-2*dx,即所求微分d。=-2dr。 3
3 dy0=yx0*dx 求出 0 0 d ( )d x x y f x x = = . 例 4 求函数的微分: (1) 2 2 2 x y x a = + ;(2)设函数 y y x = ( ) 由方程 2 25 e e 0 x y xy − − + = 确定,求 0 d x y = . 解 (1)相应的 Matlab 程序为 >> syms x dx; >> y=x^2/sqrt(x^2+a^2); >> dy=diff(y,x)*dx; dy1=simplify(dy) %对求出的导函数进行化简 运行后得函数的微分为 dy1 = x*(x^2+2*a^2)*dx/(x^2+a^2)^(3/2) 即所为微分为 2 2 3 2 2 2 ( 2 ) d d ( ) x x a y x x a + = + . (2)因为当 x = 0 时, y = 0 .所以求微分 0 d x y = 相应的 Matlab 程序为 >> syms x y; >> F=25*x*y-exp(-2*x)+exp(y); >> Fx=diff(F,x);Fy=diff(F,y);yx=-Fx/Fy; >> y1=simplify(yx) 运行后得化简后的 y 对 x 的一阶导数如下: y1 =(-25*y-2*exp(-2*x))/(25*x+exp(y)) 再输入代码 >> syms dx; >> x=0;y=0;dy1=((-25*y-2*exp(-2*x))/(25*x+exp(y)))*dx 运行后得到 x 0 dy = 为 dy1 =-2*dx,即所求微分 0 d 2d x y x = = −