Расчет площадей между двумя кривыми

У меня есть код, содержащий кривую и строку. Я знаю, как заполнить области ниже и под строкой, но мне нужно рассчитать значения площадей каждого из них.

Вот код:

  • Различные интервалы для квадратурности Гаусса-Лежандра в numpy
  • используя SciPy для интеграции функции, возвращающей матрицу или массив
  • f2py, функция Python, которая возвращает массив (векторнозначная функция)
  • 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() 

    Любая помощь?

  • Numpy, проблема с длинными массивами
  • Эффективное обнаружение изменений знака в python
  • Получение широты и долготы из файла GeoTIFF
  • Строка в списке, в функцию
  • Проверьте, является ли число рациональным в Python
  • Работа модуля с отрицательными значениями - странная вещь?
  • 2 Solutions collect form web for “Расчет площадей между двумя кривыми”

    Адаптирован из 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)) 

    введите описание изображения здесь

    Примените любой из этих методов к вашей проблеме.

    Это называется численным интегрированием . Есть множество стандартных методов. Поскольку @pylang сказал, что они уже реализованы в scipy.integrate.* . scipy.integrate.quadгауссова квадратура .

    Python - лучший язык программирования в мире.