matlab 如何求自定义函数的导数 5
2个回答
展开全部
matlab的求导命令与求导法
建立符号变量命令sym和syms调用格式:
x=sym('x'), 建立符号变量x;
syms x y z , 建立多个符号变量x,y,z;
matlab求导命令diff调用格式:
diff(函数) , 求的一阶导数;
diff(函数, n) , 求的n阶导数(n是具体整数);
diff(函数,变量名), 求对的偏导数;
diff(函数, 变量名,n) ,求对的n阶偏导数;
matlab求雅可比矩阵命令jacobian,调用格式:
jacobian([函数;函数; 函数], [])给出矩阵:
求一元函数的导数.
例.求的导数.
解:打开matlab指令窗,输入指令:
dy_dx=diff(sin(x)/x).
得结果:
dy_dx=cos(x)/x-sin(x)/x^2.
matlab的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们用dy_dx表示
例.求的导数.
解: 输入命令:
dy_dx=diff(log(sin(x))).
得结果:
dy_dx=cos(x)/sin(x).
在matlab中,函数用log(x)表示,而log10(x)表示
例.求的导数.
解: 输入命令:dy_dx=diff((x^2+2*x)^20).
得结果:
dy_dx=20*(x^2+2*x)^19*(2*x+2).
注意输入时应为2*x.
例.求的导数.
解: 输入命令:
dy_dx=diff(x^x).
得结果:
dy_dx =x^x*(log(x)+1).
利用matlab 命令diff一次可以求出若干个函数的导数.
建议参考:http://hi.baidu.com/%B1%B1%BE%A9%CE%D2%B0%AE%C4%E3/blog/item/bd0b80f8771d151ed9f9fdd6.html
建立符号变量命令sym和syms调用格式:
x=sym('x'), 建立符号变量x;
syms x y z , 建立多个符号变量x,y,z;
matlab求导命令diff调用格式:
diff(函数) , 求的一阶导数;
diff(函数, n) , 求的n阶导数(n是具体整数);
diff(函数,变量名), 求对的偏导数;
diff(函数, 变量名,n) ,求对的n阶偏导数;
matlab求雅可比矩阵命令jacobian,调用格式:
jacobian([函数;函数; 函数], [])给出矩阵:
求一元函数的导数.
例.求的导数.
解:打开matlab指令窗,输入指令:
dy_dx=diff(sin(x)/x).
得结果:
dy_dx=cos(x)/x-sin(x)/x^2.
matlab的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们用dy_dx表示
例.求的导数.
解: 输入命令:
dy_dx=diff(log(sin(x))).
得结果:
dy_dx=cos(x)/sin(x).
在matlab中,函数用log(x)表示,而log10(x)表示
例.求的导数.
解: 输入命令:dy_dx=diff((x^2+2*x)^20).
得结果:
dy_dx=20*(x^2+2*x)^19*(2*x+2).
注意输入时应为2*x.
例.求的导数.
解: 输入命令:
dy_dx=diff(x^x).
得结果:
dy_dx =x^x*(log(x)+1).
利用matlab 命令diff一次可以求出若干个函数的导数.
建议参考:http://hi.baidu.com/%B1%B1%BE%A9%CE%D2%B0%AE%C4%E3/blog/item/bd0b80f8771d151ed9f9fdd6.html
参考资料: http://hi.baidu.com/%B1%B1%BE%A9%CE%D2%B0%AE%C4%E3/blog/item/bd0b80f8771d151ed9f9fdd6.html
展开全部
判断函数的性质
下面我们就以带绝对值的正选函数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')
函数图形为:
x≥0,有导数的定义求右导数
当x≥0时,我们可以去掉函数中的绝对值,这时候函数f就变为:f(x)=sinx,这时候求右导数就简单多了,不过还是得用定义发求右导数。具体代码以及计算结果请看下图:
x≤0,由导数的定义求左导数
同理,当x≤0时,去掉函数中的绝对值,f就变为:f(x)=sin(-x).。用定义发求左导数。具体代码以及计算结果请看下图,有图上的结果再结合上一部结论可以得出,f(x)在x=0点的导数不存在,而且在小于0的区间和大于0的区间导数不一致。
直接利用diff求导
matlab提供了一个直接求函数导数的指令diff,然而当函数含有绝对值时候是否还有效呢?我们来探索一下。有下图中可以看出,当x=0时,函数的导数出现了错误的结果。
画出图形代码
下面我们画出函数f(x)、两个区间分别的导数图形。具体代码如下图所示:
画出的图形如下图所示:
下面我们就以带绝对值的正选函数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')
函数图形为:
x≥0,有导数的定义求右导数
当x≥0时,我们可以去掉函数中的绝对值,这时候函数f就变为:f(x)=sinx,这时候求右导数就简单多了,不过还是得用定义发求右导数。具体代码以及计算结果请看下图:
x≤0,由导数的定义求左导数
同理,当x≤0时,去掉函数中的绝对值,f就变为:f(x)=sin(-x).。用定义发求左导数。具体代码以及计算结果请看下图,有图上的结果再结合上一部结论可以得出,f(x)在x=0点的导数不存在,而且在小于0的区间和大于0的区间导数不一致。
直接利用diff求导
matlab提供了一个直接求函数导数的指令diff,然而当函数含有绝对值时候是否还有效呢?我们来探索一下。有下图中可以看出,当x=0时,函数的导数出现了错误的结果。
画出图形代码
下面我们画出函数f(x)、两个区间分别的导数图形。具体代码如下图所示:
画出的图形如下图所示:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询