4.2 参数方程的导数
MATLAB的符号运算工具箱并没有提供参数方程求导的函数,所以这里先看一下参数方程求导的数学公式,然后根据该规则编写出通用的MATLAB求解程序,直接求解参数方程的求导问题。
定理4-3 若已知参数方程y=f(t),x=g(t),则dny/dxn可以由递推公式求出
MATLAB并没有提供可以直接用于参数方程的高阶导数求取的函数,所以应该编写一个通用函数完成这项工作。我们用循环结构编写出求取参数方程任意阶导数的通用MATLAB函数,其效率高于文献给出的递归调用格式的函数。
例4-13 已知参数方程,,试求。
解 由前面给出的函数调用格式,可以得出所需的高阶导数。
得出如下的结果:
对sin t、cos t合并同类项后,通过手工整理得出
例4-14 已知参数方程x(t)=ln t,y(t)=tm,试求出dny/dxn。
解 我们编写的paradiff()只能求解给定数值n的问题,并不能接受n为变量的命令,所以可以选择一些特定的n值求导,并从结果总结函数的n阶导数。给出下面的命令:
直接得出f1=mtm,f2=m2tm,f3=m3tm,f4=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,这是正常的现象,不要弄混了。