Matlab以其强大的数值计算能力,在导数的计算方面,其功能也是非常强大的,在科学研究中,我们常常需要求一些复杂函数的一阶、二阶或更高阶的导数。这些函数或未知数的项数比较高,或是带根号之类的。如果用笔算的话,不仅麻烦,浪费时间,还容易出错。下面我们就来看一下,如何用matlab计算一阶和二阶导数。
工具/原料
Matlab2012b
一、用matlab计算一阶导数
1、函数:diff(y,x)其中:y为函数,x为未知数。例如求y=(1+x^(-1/3))/(1+x^2)的导数,在matlab中的代码如下:>> y=(1+x^(-1/3))/(1+x^2)>> diff(y,x)ans =- 1/(3*x^(4/3)*(x^2 + 1)) - (2*x*(1/x^(1/3) + 1))/(x^2 + 1)^2其中:黑色加粗斜体为计算结果。
二、用matlab计算二阶导数
1、函数:diff(y,x,2)其中:y为函数,x为未知数。例如求y=(1+x^(-1/3))/(1+x^2)的导数,在matlab中的代码如下:媪青怍牙>> y=(1+x^(-1/3))/(1+x^2);diff(y,x,2)ans =4/(3*x^(1/3)*(x^2 + 1)^2) - (2*(1/x^(1/3) + 1))/(x^2 + 1)^2 + 4/(9*x^(7/3)*(x^2 + 1)) + (8*x^2*(1/x^(1/3) + 1))/(x^2 + 1)^3其中:黑色加粗斜体为计算结果。显示出matlab的便捷和快速来了吧。
2、再来看一个我在学习数字信号处理过程中遇到的一个求二次导数的例子。比较复杂,分母包含w的二次项,分子含有虚数单位j。式子在这里我用mathtype打出来了,截个图给大家看一下。PS:想学习了解mathtype的同学,可以参考一下我的另一篇百度经验:如何用Mathtype将数学符号公式插入Word文档中。
3、在matlab中求解的代码:>> syms w;F(w)=8*exp(颍骈城茇-j*5*w)/(16+w^2);diff(F(w),w,2)ans =- (200*exp(-w*5*i像粜杵泳))/(w^2 + 16) - (16*exp(-w*5*i))/(w^2 + 16)^2 + (64*w^2*exp(-w*5*i))/(w^2 + 16)^3 + (w*exp(-w*5*i)*160*i)/(w^2 + 16)^2>> pretty(ans) 2 64 w exp(-5 w i) 16 exp(-5 w i) 200 exp(-5 w i) 160 w exp(-5 w i) i ----------------- - -------------- - --------------- + ------------------- 2 3 2 2 2 2 2 (w + 16) (w + 16) w + 16 (w + 16)pretty(ans)为对结果进行美化,写成我们常用的形式。