• python计算折线与坐标轴的面积(正负抵消)


    计算下图中折线与y轴围成的面积,蓝色为负,黄色为正,正负抵消后的和。

    • 采用梯形面积和累加,
    • 由于业务需要,本例以130为边界,分别求50-130之间的面积,以及130-210之间的面积>

    本例只给 ( 50 , x 1 ) , ( 70 , x 2 ) , ( 90 , x 3 ) , ( 130 , x 4 ) , ( 190 , x 5 ) , ( 230 , x 6 ) (50, x_1),(70, x_2),(90, x_3),(130, x_4),(190, x_5),(230, x_6) (50,x1)(70,x2)(90,x3)(130,x4)(190,x5)(230,x6),这 6 个点, 其中 x 1 = 0 x_1=0 x1=0

    在这里插入图片描述

    • 区域1面积: 是一个三角形,为 底*高/2 即为: x 2 × ( 70 − 50 ) ÷ 2 x_2\times{(70-50)\div{2}} x2×(7050)÷2
    • 区域2面积:梯形面积,上底+下底*高/2,即为: ( x 1 + x 2 ) × ( 90 − 70 ) ÷ 2 (x_1+x_2)\times{(90-70)\div{2}} (x1+x2)×(9070)÷2
    • 区域3面积:可以直接上底+下底*高/2,(已经过验证),分析过程,蓝色三角形和黄色三角形是相似三角形,。$$
      • 首先判断 a = ∣ x 2 ∣ − ∣ x 3 ∣ a=\mid x_2 \mid-\mid{x_3}\mid a=∣x2x3的大小,若 a > 0 a>0 a>0,而且1和2面积正负抵消,剩余就是求3的面积,即梯形3的面积则面积为 ( x 2 + ∣ x 3 ∣ ) × (x_2+\mid x_3\mid)\times{} (x2+x3)×
        在这里插入图片描述
    • 区域4,类似1区域3
    • 区域5,类似于区域3

    复杂写法:

    aera['down'] = df_10min_down.apply(lambda x: sum( \
        [0.5*(abs(i[0][0])/(abs(i[0][0])+abs(i[0][1])))*i[1]*i[0][0]*(1-(i[0][1]/i[0][0])**2) if i[0][0]*i[0][1] < 0 else 0.5*(i[0][0]+i[0][1])*i[1] \
         for i in zip(zip(x[:-1], x[1:]), height[:6])]), axis=1)
    aera['up'] = df_10min_up.apply(lambda x: sum( \
        [0.5*(abs(i[0][0])/(abs(i[0][0])+abs(i[0][1])))*i[1]*i[0][0]*(1-(i[0][1]/i[0][0])**2) if i[0][0]*i[0][1] < 0 else 0.5*(i[0][0]+i[0][1])*i[1] \
         for i in zip(zip(x[:-1], x[1:]), height[6:])]), axis=1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    简化写法(推荐)

    aera['down'] = df_10min_down.apply(lambda x: sum([0.5*(i[0][0]+i[0][1])*i[1] for i in zip(zip(x[:-1], x[1:]), height[:6])]), axis=1)
    aera['up'] = df_10min_up.apply(lambda x: sum([0.5*(i[0][0]+i[0][1])*i[1] for i in zip(zip(x[:-1], x[1:]), height[6:])]), axis=1)
    
    • 1
    • 2
  • 相关阅读:
    日常软件游戏丢失msvcp120dll怎么修复?分享5个修复方法
    基于TNEWS‘ 今日头条中文新闻(短文本)分类
    wpf中prism框架切换页面
    BookxNote Pro 宝藏 PDF 笔记软件
    分享一个MSSA插值的GRACE level数据集
    嵌入式系统设计师考试笔记之操作系统基础复习笔记二
    验证码绕过、密码找回漏洞
    LabVIEW安装了哪些版本的LabVIEW运行引擎
    为什么选择Python作为AI开发语言
    【C++要笑着学】Functor 仿函数 | 模拟实现 stack & queue | 模拟实现优先级队列
  • 原文地址:https://blog.csdn.net/weixin_46713695/article/details/126056638