计算两条曲线之间的面积

时间:2017-05-13 08:50:23

标签: python math scipy numerical-integration

我有一个代码包含一条曲线和一条线。我知道如何填充下面和下面的区域,但我需要计算每个区域的面积值。

以下是代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 2, 0.01)
y1 = np.sin(2*np.pi*x)
y2 = 0*x
fig, ax = plt.subplots(1, 1, sharex=True)
ax.plot(x, y1, x, y2, color='black')
ax.fill_between(x, y1, y2, where=y2 >= y1, facecolor='green',    interpolate=True)
ax.fill_between(x, y1, y2, where=y2 <= y1, facecolor='red', interpolate=True)
plt.show()

任何帮助?

2 个答案:

答案 0 :(得分:3)

根据scipy.integrate.quad docs示例改编为不同的函数,y = x ^ 2:

from scipy import integrate

def f(x):
    return x**2

integrate.quad(f, 0, 4)
# (21.333333333333332, 2.3684757858670003e-13)

print(4**3 / 3.)  # analytical result
# 21.3333333333

返回结果和数值计算的错误。

如果您想要精确或符号回答,请考虑sympy。以下是应用于y =πx^ 2的类似示例(注意:此处使用前导下划线来区分Sympy对象)。

import sympy as sym

sym.init_printing()

_x = sym.symbols("x")
_f = sym.pi * _x**2
sym.integrate(_f, (_x, 0, 2))

enter image description here

将这些技巧应用于您的问题。

答案 1 :(得分:0)

这称为 。 有一堆标准方法。正如@pylang所说,他们已经在scipy.integrate.*中实施了。 scipy.integrate.quad 高斯正交