如何使用Numpy来拟合函数并获得曲线下的区域

时间:2016-07-21 09:34:48

标签: python numpy math

我有一个值列表,可以认为是Y轴。 X轴是列表中元素的索引。

例如

Y =
403 486 585 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6 642.6

如果我绘制这些数据,它将如下所示:

Curve Plot

我想找到一种方法来获得该行的一阶多项式函数和曲线下面积。

1 个答案:

答案 0 :(得分:1)

您可以使用polyfit查找函数,使用trapz计算具有梯形规则的区域。

import matplotlib.pyplot as plt
import numpy as np

Y = [403, 486, 585, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6, 642.6]
X = range(len(Y))
Z = np.polyfit(X, Y, 1)
A = np.trapz(Y,x=X)

fig, ax = plt.subplots(figsize=(10,10))
ax.plot(X,Y)
plt.hold()
ax.plot(X,Z[1] + np.multiply(Z[0],X))

curve and fitcurve