【问题标题】:Correctly calculate the area beneath curve using trapz and simpson in python在 python 中使用 trapz 和 simpson 正确计算曲线下方的面积
【发布时间】:2017-12-06 13:07:54
【问题描述】:

我使用 np.trapz 和 scipy simps 计算曲线下方的面积,并注意到我可能没有正确计算。以下面为例

import numpy as np
from scipy.integrate import simps


y = np.array([1,2,3,4,5])
y1= np.array([5,5,5,5,5])

print np.trapz(y,dx=1)
print simps(y,dx=1)
print np.trapz(y1,dx=1)
print simps(y1,dx=1)

这些产量

12.0
12.0
20.0
20.0

但他们不应该分别产生 15 和 25 吗?似乎在小范围之间?

【问题讨论】:

  • 为什么它们应该分别产生 15 和 25?
  • 好吧,python 脚本可能不会,因为它正在做一些超出我预期的事情。但我想要的是得到这些点下方的整个区域,如果你得到数字,你会得到 15 和 25。

标签: python area integrate


【解决方案1】:

您已经隐含了x = [0, 1, 2, 3, 4],请记住,在几乎所有地方进行编程时,一切都以0 开头。此外,通常不包括上限。

对于y,表示顶点为 (0,0)、(0,1)、(4,0) 和 (4,1) 的矩形加上顶点为 (0,1)、(4) 的三角形,5) 和 (4,1)。矩形的面积为 4*1=4,三角形的面积为 4*4/2=8,总面积为 12。

对于y1,您有一个顶点为 (0,0)、(0,5)、(4,0) 和 (4,5) 的矩形,因此您的面积为 20。

【讨论】:

  • 是的,这就是我所怀疑的。如何包含上限并省略 0?我应该强调,我正在为不同脚本中的大量数字执行此操作。
  • 您可以定义x=[1,2,3,4,5]并将其提供给np.trapz(y,x)等函数
  • 是的,对不起...应该更像np.trapz(y=[1,2,3,4,5,6], x=[0,1,2,3,4,5] 我错过了第一个0
猜你喜欢
  • 2018-10-28
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
相关资源
最近更新 更多