如何找到曲线下的区域

问题描述 投票:1回答:1

我是Python初学者。

曲线(x,y)有两个数据文件:https://drive.google.com/open?id=1ZB39G3SmtamjVjmLzkC2JefloZ9iShpO

如何在曲线下找到两个区域,如图:enter image description here

黑色区域(A)和红色区域(B)

我只知道如何找到总面积:

from scipy.integrate import trapz

with open('./x_data.txt', 'rt') as f:
    x_file = f.read()

with open('./y_data.txt', 'rt') as f:
    y_file = f.read()

xlist = []
for line in x_file.split('\n'):
    if line: 
        xlist.append(float(line.strip()))
ylist = []
for line in y_file.split('\n'):
    if line: 
        ylist.append(float(line.strip()))

if len(xlist) != len(ylist):
    print(len(xlist), len(ylist))
    raise Exception('X and Y have different length')

xData = np.array(xlist)
yData = np.array(ylist)

area = trapz(y = yData, x = xData)
print("area =", area)
python python-3.x numpy data-science area
1个回答
1
投票

您可以使用Simpsons规则或Trapezium规则来以给定的y值表以规则的间隔来计算图形下的面积。

from scipy.integrate import simps
from numpy import trapz

参考:Calculating the area under a curve given a set of coordinates, without knowing the function

© www.soinside.com 2019 - 2024. All rights reserved.