我有一个代码包含一条曲线和一条线。我知道如何填充下面和下面的区域,但我需要计算每个区域的面积值。
以下是代码:
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()
任何帮助?
答案 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))
将这些技巧应用于您的问题。
答案 1 :(得分:0)
这称为 numerical-integration 。
有一堆标准方法。正如@pylang所说,他们已经在scipy.integrate.*
中实施了。 scipy.integrate.quad
高斯正交 。