**
MATLAB初学之怎么利用中值差分法求一阶二阶导数
**
我们最近在学习MATLAB,由于是选修课,所以老师不会讲一些很高深的知识。今天先给大家分享如何利用中值差分法求一阶二阶导数,以后一些基础的内容我将再补充。
##原理:
##程序源代码,以方程f=cos(x).*exp(-x.^2/2)为例:
clear all
clc
h=0.1;
x=-4:h:4;
f=cos(x).*exp(-x.^2/2);
for j=2:(length(x)-1)
%(从第二点开始,因为第一个点求不出来)
df(j)=(f(j+1)-f(j-1))/2/h;
end
plot(x(2:(length(x)-1)),df(2:(length(x)-1)))
%(df从第二点开始,因为第一个点系统自动为零)
最后就画出了一阶导数图像:
##那怎么求二阶导数呢?
###原理
###代码:
clear all
clc
h=0.1;
x=-4:h:4;
f=cos(x).exp(-x.^2/2);
for j=2:(length(x)-1) %(从第二点开始,因为第一个点求不出来)
dff(j)=(f(j+1)+f(j-1)-2f(j))/2/h^2; %(求二阶导)
end
plot(x(2:(length(x)-1)),dff(2:(length(x)-1)))