如果一个函数表达式中有绝对值,那对该函数求导就需要注意啦!该函数可能在他的零点处导数不存在,所以我们不能用传统的方法求导,应该在零点处分别求左导数和右导数,如果左导数和右导数存在并相等则该点的导数存在,否则该点导数不存在。下面我们就来说一下如何用matlab求带绝对值函数的导数。
1.判断函数的性质
下面我们就以带绝对值的正选函数f(x)=sin|x|为例来求导。先来判断一下一下该函数的性质。我们先用matlab画一下该函数的图形,具体代码如下:
%画出f(x)=sin|x|图形 clear x=-2*pi:pi/20:2*pi; y=sin(abs(x)); plot(x,y,'r','LineWidth',1.5) title('函数f(x)=sin|x|图形') xlabel('x'),ylabel('y')
函数图形为:
2.x≥0,有导数的定义求右导数
当x≥0时,我们可以去掉函数中的绝对值,这时候函数f就变为:f(x)=sinx,这时候求右导数就简单多了,不过还是得用定义发求右导数。具体代码以及计算结果请看下图:
3.x≤0,由导数的定义求左导数
同理,当x≤0时,去掉函数中的绝对值,f就变为:f(x)=sin(-x).。用定义发求左导数。具体代码以及计算结果请看下图,有图上的结果再结合上一部结论可以得出,f(x)在x=0点的导数不存在,而且在小于0的区间和大于0的区间导数不一致。
4.直接利用diff求导
matlab提供了一个直接求函数导数的指令diff,然而当函数含有绝对值时候是否还有效呢?我们来探索一下。有下图中可以看出,当x=0时,函数的导数出现了错误的结果。
5.画出图形代码
下面我们画出函数f(x)、两个区间分别的导数图形。具体代码如下图所示:
6.画出的图形如下图所示: