diff和gradient求数值近似导数的异同
2016-06-07 11:38
701 查看
diff
diff是导数的符号运算命令,使用时要加上syms的定义变量命令;
diff(f) 求表达式f对默认自变量的一次微分值;
diff(f, t) 求表达式f对自变量t的一次微分值;
diff(f,n) 求表达式f对默认自变量的n次微分值;
diff(f,t,n) 求表达式f对自变量t的n次微分值。
若对于数组,就变成数值差分运算;
gradient
gradient()是求数值梯度函数的命令。[Fx,Fy]=gradient(x),
其中Fx为其水平方向上的梯度,Fy为其垂直方向上的梯度,Fx的第一列元素为原矩阵第二列与第一列元素之差,Fx的第二列元素为原矩阵第三列与第一列元素之差除以2,以此类推:
Fx(i,j)=(F(i,j+1)-F(i,j-1))/2。
最后一列则为最后两列之差。同理,可以得到Fy。
diff是导数的符号运算命令,使用时要加上syms的定义变量命令;
diff(f) 求表达式f对默认自变量的一次微分值;
diff(f, t) 求表达式f对自变量t的一次微分值;
diff(f,n) 求表达式f对默认自变量的n次微分值;
diff(f,t,n) 求表达式f对自变量t的n次微分值。
若对于数组,就变成数值差分运算;
gradient
gradient()是求数值梯度函数的命令。[Fx,Fy]=gradient(x),
其中Fx为其水平方向上的梯度,Fy为其垂直方向上的梯度,Fx的第一列元素为原矩阵第二列与第一列元素之差,Fx的第二列元素为原矩阵第三列与第一列元素之差除以2,以此类推:
Fx(i,j)=(F(i,j+1)-F(i,j-1))/2。
最后一列则为最后两列之差。同理,可以得到Fy。
clf d=pi/100; t=0:d:2*pi; x=sin(t); dxdt_diff=diff(x)/d; dxdt_grad=gradient(x)/d; subplot(1,2,1) plot(t,x,'b') hold on plot(t,dxdt_grad,'m','LineWidth',8) plot(t(1:end-1),dxdt_diff,'.k','MarkerSize',8) axis([0,2*pi,-1.1,1.1]) title('[0, 2\pi]') legend('x(t)','dxdt_{grad}','dxdt_{diff}','Location','North') xlabel('t') box off hold off subplot(1,2,2) kk=(length(t)-10):length(t); hold on plot(t(kk),dxdt_grad(kk),'om','MarkerSize',8) plot(t(kk-1),dxdt_diff(kk-1),'.k','MarkerSize',8) title('[end-10, end]') xlabel('t'),box off legend('dxdt_{grad}','dxdt_{diff}','Location','SouthEast') hold off
相关文章推荐
- Nim Game
- cygwin下的目录软连接
- mysql5.6.30安装
- Android SDK开发技术分享
- taskset: 让进程运行在指定的CPU
- !important和js的优先级比较
- 抽象类使用事项
- CentOS7 安装使用pypy5
- maven仓库的安装与配置
- 单链表排序之选择排序
- 多数据源连接池
- Java 使用 SQLite数据库
- utf8编码的字符串截取
- Alpha版总结会议
- mongodb_修改器($inc/$set/$unset/$push/$pop/upsert......)
- jq 获取当前屏幕高度
- Android 动画 - TranslateAnimation位移动画
- 成都几家游戏公司的面经(C++、图形学) ——第一天
- apache-activemq-5.14.0设置自启动和加入服务管理
- SharedPreferences封装类SPUtils