python-如何找到曲线下的面积?

python-如何找到曲线下的面积?,python,numpy,matplotlib,scipy,Python,Numpy,Matplotlib,Scipy,是否可以计算拟合分布曲线的曲线下面积 曲线应该是这样的 我在网上看到一些关于trapz使用的帖子,但我不确定它是否适用于这样的曲线。请开导我,谢谢你的帮助 首先,您必须从图形中找到一个函数。你可以查一下。然后,您可以使用python与scipy的集成。您可以检查集成。 正如丹尼尔·桑切斯所说,这只是数学问题 如果您的分布f在您知道的一组点x上离散,那么您可以直接使用scipy.integrate.trapz或scipy.integrate.simps(按该顺序传递f,x作为参数)。为了快速检查

是否可以计算拟合分布曲线的曲线下面积

曲线应该是这样的


我在网上看到一些关于trapz使用的帖子,但我不确定它是否适用于这样的曲线。请开导我,谢谢你的帮助

首先,您必须从图形中找到一个函数。你可以查一下。然后,您可以使用python与scipy的集成。您可以检查集成。
正如丹尼尔·桑切斯所说,这只是数学问题

如果您的分布
f
在您知道的一组点
x
上离散,那么您可以直接使用
scipy.integrate.trapz
scipy.integrate.simps
(按该顺序传递
f
x
作为参数)。为了快速检查(例如,您的分布是否正常化),只需将
f
的值相加,然后乘以网格间距:

import numpy as np
from scipy.integrate import trapz, simps

x, dx = np.linspace(-100, 250, 50, retstep=True)
mean, sigma = 90, 20
f = np.exp(-((x-mean)/sigma)**2/2) / sigma / np.sqrt(2 * np.pi)
print('{:18.16f}'.format(np.sum(f)*dx))
print('{:18.16f}'.format(trapz(f, x)))
print('{:18.16f}'.format(simps(f, x)))
输出:

1.0000000000000002
0.9999999999999992
1.0000000000000016

你的意见是什么?函数或点集?可能重复:这是数学方面的东西,只需对函数进行积分。请给出迄今为止的(最小)代码。我猜总和正好是1,你的问题的答案是肯定的。