www.gusucode.com > 高等数学问题求解源码程序 > CH07/DerivativeDefinition.m

    function df=DerivativeDefinition(fun,x,x0,type)
%DERIVATIVEDEFINITION   根据导数的定义求函数的导函数或在某点处导数值
% DF=DERIVATIVEDEFINITION(FUN,X)或
% DF=DERIVATIVEDEFINITION(FUN,X,[])  求函数FUN关于X的导函数
% DF=DERIVATIVEDEFINITION(FUN,X,X0)  求函数FUN在点X0处的导函数
% DF=DERIVATIVEDEFINITION(FUN,X,X0,TYPE)  根据TYPE指定导数类型求函数在点X0处的导数,
%                                                 TYPE有以下取值:
%                                                 1.'double'或0:双侧导数值,此为缺省值
%                                                 2.'left'或-1:左导数
%                                                 3.'right'或1:右导数
% DF=DERIVATIVEDEFINITION(FUN,X,[],TYPE)  根据TYPE指定导数类型求函数的导函数
%
% 输入参数:
%     ---FUN:符号函数表达式
%     ---X:符号自变量
%     ---X0:求导点
%     ---TYPE:导数类型
% 输出参数:
%     ---DF:返回的导函数或导数值
%
% See also limit, diff

if nargin<4
    type=0;
end
if nargin==2 || isempty(x0)
    x0=x;
end
syms h
delta_y=subs(fun,x,x0+h)-subs(fun,x,x0);
switch type
    case {0,'double'}
        df=limit(delta_y/h,h,0);  % 求导数
    case {-1,'left'}
        df=limit(delta_y/h,h,0,'left');  % 求左导数
    case {1,'right'}
        df=limit(delta_y/h,h,0,'right');  % 求右导数
    otherwise
        error('The Style of Derivative is Illegal.')
end
web -broswer http://www.ilovematlab.cn/forum-221-1.html