薛定宇教授大讲堂(卷Ⅱ):MATLAB微积分运算
上QQ阅读APP看书,第一时间看更新

4.2 参数方程的导数

MATLAB的符号运算工具箱并没有提供参数方程求导的函数,所以这里先看一下参数方程求导的数学公式,然后根据该规则编写出通用的MATLAB求解程序,直接求解参数方程的求导问题。

定理4-3 若已知参数方程y=f(t),x=g(t),则dny/dxn可以由递推公式求出

MATLAB并没有提供可以直接用于参数方程的高阶导数求取的函数,所以应该编写一个通用函数完成这项工作。我们用循环结构编写出求取参数方程任意阶导数的通用MATLAB函数,其效率高于文献薛定宇.高等应用数学问题的MATLAB求解[M].4版.北京:清华大学出版社,2018.给出的递归调用格式的函数。

例4-13 已知参数方程,试求

由前面给出的函数调用格式,可以得出所需的高阶导数。

得出如下的结果:

对sin t、cos t合并同类项后,通过手工整理得出

例4-14 已知参数方程x(t)=ln ty(t)=tm,试求出dny/dxn吉米多维奇.数学分析习题集[M],李荣涷,译.北京:人民教育出版社,1979.

我们编写的paradiff()只能求解给定数值n的问题,并不能接受n为变量的命令,所以可以选择一些特定的n值求导,并从结果总结函数的n阶导数。给出下面的命令:

直接得出f1=mtmf2=m2tmf3=m3tmf4=m4tm。可见,dny/dxn=mntm

由数学归纳法可以很容易证明这样的结论。由f1可知k=1命题成立,假设k=n时命题成立,即dny/dxn=mntm,由于该表达式仍是参数方程,所以k=n+1时,可以用如下命令求出dn+1y/dxn+1

     >> syms n; F=m^n*t^m; F1=simplify(diff(F,t)/diff(x,t))

其结果为F1=mn+1tm,说明k=n+1命题也成立,因此可以由数学归纳法证明dny/dxn=mntm对任意自然数都成立。

如果想求出x(t)对y(t)的高阶导数,则可以给出下面的命令。

所得出的结果为f1=1/(mtm),f2=−1/(mt2m),f3=2/(mt3m),f4=−6/(mt4m),由此归纳出dnx/dyn=(−1)n+1(n−1)!/(mtnm)。

仍可以采用数学归纳法证明上面的结论。已知k=1时命题成立,假设k=n时上式成立,则可以由下面语句导出k=n+1时的结果为(−1)nn(n−1)!/(mtm(n+1))。显然,k=n+1时命题也成立,由数学归纳法证明该命题是正确的。

     >> F1=(-1)^(n+1)*factorial(n-1)/m/t^(n*m); diff(F1,t)/diff(y,t)

另外,可能细心的读者会注意到,对本例而言,dny/dxn̸=dnx/dyn,这是正常的现象,不要弄混了。