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

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 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题