Площадь под кривой является ее интегралом. Интеграл от sin(x)
от 0
до u
равен 1-cos(u)
, поэтому интеграл от 0
до π
равен 2
. Обращение этой формулы находит точки t
, для которых u
получает определенное значение. Итак, мы ищем значения t=acos(1-u)
для значений u
, которые делят [0, 2]
на n
равные части.
В коде:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-0.2, 3.3, 500)
y = np.sin(x)
plt.plot(x, y)
n = 7
u = np.linspace(0, 2, n + 1, endpoint=True)
t = np.arccos(1 - u)
print("The limits of the areas are:", list(t))
colors = plt.cm.Set2.colors
for i in range(n):
filter = (x > t[i]) & (x <= t[i + 1])
plt.fill_between(x[filter], 0, y[filter], color=colors[i])
plt.xticks(t)
plt.gca().spines['bottom'].set_position('zero')
plt.gca().spines['top'].set_color('none')
plt.gca().spines['right'].set_color('none')
plt.tight_layout()
plt.show()