hswhvwvsihsbwb 2021-11-11 08:32 采纳率: 58.3%
浏览 1498
已结题

matlab中如何使用三点公式计算导数

x=1、1.1、1.2、1.3、1.4;f(x)=0.25、0.2268、0.2066、0.189、0.1736利用三点公式计算在x=1、1.2、1.4处的导数值。

  • 写回答

2条回答 默认 最新

  • joel_1993 2021-11-11 10:17
    关注

    你好!代码供参考
    定义一个函数

    function dydx = threePiontDerivative(x,y)
    x = x(:); y = y(:);
    n = length(x); m = length(y);
    if(n~=m)
        error('x和y长度不一致')
    end
    if(n<3)
        error('x和y长度不够,长度至少要有3')
    end
    dx = diff(x);
    h = mean(dx);
    if(max(abs(h-dx))>1e-12)
        error('x不是等间距的')
    end
    dydx = zeros(size(y));
    dydx(2:end-1) = (y(3:end)-y(1:end-2))/(2*h);%首端点
    dydx(1) = (-3*y(1)+4*y(2)-y(3))/(2*h);%中间点
    dydx(n) = (y(n-2)-4*y(n-1)+3*y(n))/(2*h);%末端点
    end
    

    然后调用函数:

    x=1.0:0.1:1.4;
    y=[0.25,0.2268,0.2066,0.189,0.1736];
    dydx = threePiontDerivative(x,y)
    

    得到结果如下:

    dydx =
    
      -0.247000000000000
      -0.217000000000000
      -0.189000000000000
      -0.165000000000000
      -0.143000000000000
    

    可见在x=1、1.2、1.4处的导数值分别为:-0.247、-0.189、-0.143
    有帮助望采纳哟,谢谢啦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月11日

悬赏问题

  • ¥15 Python语言实验
  • ¥15 SAP HANA SQL 增加合计行
  • ¥20 用C#语言解决一个英文打字练习器,有偿
  • ¥15 srs-sip外部服务 webrtc支持H265格式
  • ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动
  • ¥15 大一C语言期末考试,求帮助🙏🙏
  • ¥15 ch340驱动未分配COM
  • ¥15 Converting circular structure to JSON
  • ¥30 Hyper-v虚拟机相关问题,求解答。
  • ¥15 TSM320F2808PZA芯片 Bootloader