MATLAB之怎样利用MATLAB中值差分法求一阶二阶导数

时间:2024-03-28 12:24:42

**

MATLAB初学之怎么利用中值差分法求一阶二阶导数

**

我们最近在学习MATLAB,由于是选修课,所以老师不会讲一些很高深的知识。今天先给大家分享如何利用中值差分法求一阶二阶导数,以后一些基础的内容我将再补充。

##原理:
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从第二点开始,因为第一个点系统自动为零)

最后就画出了一阶导数图像:
MATLAB之怎样利用MATLAB中值差分法求一阶二阶导数
##那怎么求二阶导数呢

###原理
MATLAB之怎样利用MATLAB中值差分法求一阶二阶导数

###代码
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)-2
f(j))/2/h^2; %(求二阶导)
end
plot(x(2:(length(x)-1)),dff(2:(length(x)-1)))