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('$$x$$','Interpreter','latex','color','r','fontsize',28);

    ylabel('$$y$$','Interpreter','latex','color','r','fontsize',28);

  3. 复制以上程序到*.m文件中去,保存并运行,可以得到函数图像确实十分接近理论上的解答。以下是运行以后作出的图。

    MATLAB中用差分法求解函数的一阶导数和二阶导数
  4. 4

    最后就大功告成啦!对于任意一组数据(间距相等)这个程序都可以很好滴求解一阶导数、二阶导数哟;还有你可以加以改进,不管是间距相等还是不相等都好做。

    END

注意事项

  • 间距h自己输入;ab范围自己定义
  • 仅仅适用于等间隔差分
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值