Python 计算两条曲线之间的面积

Python 计算两条曲线之间的面积,python,math,scipy,numerical-integration,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_be

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

代码如下:

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()
导入matplotlib.pyplot作为plt
将numpy作为np导入
x=np.arange(0.0,2,0.01)
y1=np.sin(2*np.pi*x)
y2=0*x
图,ax=plt.子批次(1,1,sharex=True)
ax.plot(x,y1,x,y2,color='black')
ax.fill_介于(x,y1,y2,其中=y2>=y1,facecolor='green',interpolate=True)之间
在(x,y1,y2,其中=y2之间填充x。这称为。
有很多标准方法。正如@pylang所说,它们已经在
scipy.integrate.*
scipy.integrate.quad
中实现了,它是高斯求积

根据不同函数的示例改编的,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
返回数值计算的结果和错误

如果你想要一个精确的或象征性的答案,请考虑。这里是一个类似的例子,应用于y=πx ^ 2(注:这里使用的主要下划线来区分Smithy对象)。< /P>


将这两种方法中的任何一种应用到你的问题上。

看看你说你知道如何“填充区域”。这是否意味着“整合每个函数”?如果是的,你想要的答案不应该只是简单的减法吗?如果我没有y1的方程,我只有y1[x]的值呢?我不知道你在问什么。你问的是给定一些点,如何拟合模型y1的直线,即非线性回归,还是要连接点之间的直线?我有一些点来自y1,y2是y1的线性回归。我想计算y2下的所有面积和y2上的所有面积。y2在你的情况下不是回归。这是一条单独的线。主要功能是y1。通过了解积分对正弦波的作用,您应该能够配置上述示例的限制来确定这些答案。提示:您知道交点。一组交点可以定义积分的边界。您可以进行任意多个积分蚂蚁。
import sympy as sym

sym.init_printing()

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