python 计算离散点的微分和积分(超详细)

前言:

        本文计算离散点微分和积分的内容,参考的是origin软件提供的算法。

        鉴于在百度和谷歌搜索标题的结果不尽人意,因此想在此做一个详细的总结。

        若阅读时间有限,可直接阅读第二或第三部分的代码及其运行结果。

        若有疑问或者错误,欢迎评论区留言提问或者指正,谢谢。

一、原理解释

【微分部分】

  大致含义:对于端点以外的散点,其导数为:与其相邻两点的斜率的平均值;                                而位于端点的散点,其导数为:与其最近一点的斜率。

Origin中计算离散点导数的计算公式
Origin软件中离散点导数的计算公式

【积分部分】

大致含义:两点之间的积分,为两点连线,和两点对x轴的垂线,以及两垂足之间的线段所组成的梯形的面积。本文咱不探讨存在水平线baseline的情况下散点积分的数学面积(面积可正可负)与绝对面积(恒为正),感兴趣的读者可以点击参考文献4去阅读。

 

Origin中计算离散点积分的计算公式
Origin软件中离散点积分的计算公式

注解:

1.梯形面积公式 = 1/2 * (上底+下底) * 高

2.x(i+1) - x(i)(含有i的括号内的式子均为下标):表示梯形的高

3.f(x(i+1))+f(x(i))(含有i的括号内的式子均为下标):表示梯形上下底之和

 

二、纯代码:

【微分部分】

# 定义计算离散点导数的函数
def cal_deriv(x, y):                  # x, y的类型均为列表
    diff_x = []                       # 用来存储x列表中的两数之差
    for i, j in zip(x[0::], x[1::]):  
        diff_x.append(j - i)
 
    diff_y = []                       # 用来存储y列表中的两数之差
    for i, j in zip(y[0::], y[1::]):
        diff_y.append(j - i)  
        
    slopes = []                       # 用来存储斜率
    for i in range(len(diff_y)):
        slopes.ap
  • 43
    点赞
  • 205
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值