MATLAB中⽤差分法求解函数or离散数据的⼀阶导数
⼆阶导数
matlab在计算数值求导⽅⾯有很多函数。下⾯我来不⽤这些函数,介绍简单的函数求⼀阶导数⼆阶导数的差分⽅法以及其MATLAB实现。⼯具/原料
matlab软件
⼀组数据,程序中已经准备好了
⽅法/步骤
1. 求解⼀阶导数的公式:y'=[y(x0+h)-y(x0-h)]/(2h);
求解⼆阶导数的公式:y''=[y(x0+h)-2*y(x0)+y(x0-h)]/h²;
这⾥的⾃变量是x,因变量是y,步长是h
2. 再进⾏编程。以下是我的求解程序:
clc;clear all
h=0.01;
%x属于【a,b】
a=-5;b=5;
x=a:h:b;
n=length(x);
%定义y
y=sin(0.3*x).*cos(3*x);
hold on
grid on
yx=zeros(1,n);
yxx=zeros(1,n);
for i=2:n-1
yx(i-1)=(y(i+1)-y(i-1))/(2*h);
yxx(i-1)=(y(i+1)+y(i-1)-2*y(i))/h^2;
end
plot(x,y,'r','linewidth',2)
plot(x(2:n-1),yx(1:n-2),'g','linewidth',2);
plot(x(2:n-1),yxx(1:n-2),'b','linewidth',2);
legend('原函数','差分⼀阶导数','差分⼆阶导数')
xlabel('
matlab求导','Interpreter','latex','color','r','fontsize',28);
ylabel('
','Interpreter','latex','color','r','fontsize',28);
3. 复制以上程序到*.m⽂件中去,保存并运⾏,可以得到函数图像确实⼗分接近理论上的解答。以下是运⾏以后作出的图。
4. 4
最后就⼤功告成啦!对于任意⼀组数据(间距相等)这个程序都可以很好滴求解⼀阶导数、⼆阶导数哟;还有你可以加以改进,不管是间距相等还是不相等都好做。
END
注意事项
间距h⾃⼰输⼊;ab范围⾃⼰定义
仅仅适⽤于等间隔差分