如果一个函数表达式屮有绝对值,那对该函数求导就需要注意 啦!该函数可能在他的零点处导数不存在,所以我们不能用传统的方 法求导,应该在零点处分别求左导数和右导数,如果左导数和右导数 存在并相等则该点的导数存在,否则该点导数不存在。下面我们就来 说一下如何用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,' ' LineWidth,, 1. 5)
title('函数f (x)=sin|x| 图形')
xlabel (' x'), ylabel C y,)
函数图形为:
经验來源:MATLAB Z家 网址:www.matlabhome
2・x20,有导数的定义求右导数
当x20时,我们可以去掉函数中的绝对值,这时候函数f就变
为:f(x)=sinx,这时候求右导数就简单多了,不过还是得用定义发求 右导数。具体代码以及计算结果请看下图:
f_p=sin(x); %^x〉0时去掉绝对值。
df_p=limit Gsubs(f_p, x, x+d) -f_p)/d, d, 0) %求*>0区间的导数
df_pO=liinit ((subs(f_p, x, d)-subs(f_p, x_, 0)) /d, d, 0)馭二0+ 的右导数 df_P 二 |
cos(x)
A»
3・xW0,由导数的定义求左导数
同理,当xWO时,去掉函数中的绝对值,f就变为:f(x)=sin(-x).o 用定义发求左导数。具体代码以及计算结果请看下图,有图上的结果 再结合上一部结论可以得出,f(x)在x=0点的导数不存在,而且在小 于0的区间和大于0的区间导数不一致。
图38
4•直接利用diff求导
matlab提供了一个直接求函数导数的指令diff,然而当函数含有 绝对值时候是否还有效呢?我们来探索一下。有下图中可以看出,当 x二0时,函数的导数出现了错误的结果。
发布评论