【问题标题】:python - how to find area under curve? [closed]python - 如何找到曲线下的区域? [关闭]
【发布时间】:2016-03-27 06:38:51
【问题描述】:

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

曲线看起来像这样

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

【问题讨论】:

标签: python numpy matplotlib scipy


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您的分布 f 是在您知道的一组点 x 上离散化的,那么您可以直接使用 scipy.integrate.trapzscipy.integrate.simps(将 fx 传递为论据顺序)。为了快速检查(例如,您的分布是否标准化),只需将 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
    

    【讨论】:

      猜你喜欢
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 2011-12-15
      相关资源
      最近更新 更多