isempty函数_MATLAB函数求导方法

作者:半学修心半读书

编辑:Matlab学习空间

导数又叫微商,是数学微积分领域的基础知识,几乎任何与数学建模有关的任务都离不开导数。举一个最简单的例子,求曲线在某点处的斜率就是求函数在改点的导数值;求导数分为求一阶导数和多阶导数,按函数形式分为求显函数的导数和求隐函数的导数。具体数学原理在此不再阐述,下面对利用MATLAB求导数的方案展开讨论。

01

利用工具箱diff函数求导

基本形式为

D=diff(f,x,n)

其中,D是求得的导数,f是函数的符号表达式,x是符号变量, n是求导阶数,其默认值为1(即不设定参数n时只求一阶导)。

例如,

syms x;

D=diff(sin(x^2),x)

 结果为

38eddf5d2ff2cbeafe2f2764aa78f157.png

由于未输入阶数参数,默认求函数的一阶导。

02

求隐函数导数

例如,求由方程e^y+xy-e=0所确定的隐函数的导数dy/dx。思路是:

(1)建立含有x和y的新函数F;

(2)F对x求导(求完导的函数带有dy/dx);

(3)然后从求完导的函数中解出dy/dx。

代码如下:

syms x

y=sym('y(x)'); %利用sym函数建立y

F=exp (y) +x*y-exp (1);

dFdx=diff(F,x);

[r,s]=subexpr(dFdx,'s'); % subexpr函数提取公因子(即dydx)

dydx=solve(r,'s') %求解dydx

 得出结果为

0c6a4b79f64e330ce5d2e20c663368b2.png

03

参数方程确定的函数导数

若x=f(t)和y=g(t),则y对x 的1阶导数为dy/dt=f'(t)/g'(t),根据递推公式,n阶导数为

f1c405c7308cc811cc3217343c2a9a2a.png

求参数方程的低阶导数(2、3阶等),通常使用的策略是一阶一阶求导。而针对高阶导数一般采用准备好的求导函数求导,这里给出一个参数方程求高阶导的通用函数代码:

function result=diff_para(y,x,t,n)

% diff_para   参数方程求导

% 输入参数:

%     ---y,x:参数方程的符号表达式

%     ---t:参数方程的符号自变量

%     ---n:求导阶次

% 输出参数:

%     ---result:参数方程求导结果

% 变量:

%     ---nargin:输入参数数目

if nargin<4

    n=1;

end

if nargin==2 || isempty(t)

    t=symvar(x);  %搜索标识符函数symvar,找出x中的标识符

    if length(t)>1 

        error('The Symbolic variable not point out.')

    end

end

if n==1

    result=diff(y,t)/diff(x,t);

else

    result=diff(diff_para(y,x,t,n-1),t)/diff(x,t);

end

 使用上面这个函数时,若输入参数个数小于4个,指定求导阶次n为1; 输入参数个数为2或第3个输入参数为空时,指定符号自变量t由自由变量替代;最后的if-else语句进行1阶或者多阶的求导(多阶为递归算法求导)。

你可能感兴趣的:(isempty函数,matlab,@函数,matlab,diff函数用法,matlab,isempty,matlab,nargin,matlab,定义一个有自变量的方程)