Вы можете использовать scipy.integrate.quad
функцию:
from scipy.integrate import quad
from numpy import cos, sin, exp, pi
f1 = lambda t: (1 + sin(t))*exp(1+cos(t))*(-sin(t))
f2 = lambda t: ((1 + cos(t))**2 + exp(1+cos(t)))*cos(t)
C1, err1 = quad(f1, 0, 2*pi)
C2, err2 = quad(f2, 0, 2*pi)
print("C1 = ", C1, ", estimated error: ", err1)
print("C2 = ", C2, ", estimated error: ", err2)
выход
C1 = -9.652617083240306, estimated error: 2.549444932020608e-09
C2 = 15.93580239041989, estimated error: 3.4140955340600243e-10
EDIT :
Вы также можете указать точность с помощью аргументов: epsrel
: относительная ошибка, epsabs
: абсолютная ошибка. Но это немного сложно (см. this ):
мы указываем абсолютную погрешность цели ноль. Это условие не может быть выполнено, и поэтому цель относительной ошибки будет определять, когда интеграция прекращается.
C1, err1 = quad(f1, 0, 2*pi, epsrel=1e-10, epsabs=0)
print("C1 = ", C1, ", estimated error: ", err1)
Выход :
C1 = -9.652617083240308 , estimated error: 1.4186554373311127e-13