Язык Python, пакет SciPy.
Если функция трёхмерного интегрирования tplquad не может обеспечить сходимость с заданной точностью то выводит огромное количество предупреждений, что пожирает всё время процессора.
Код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from scipy.integrate import quad, tplquad
import math
def f1(x,y,z):
if x**2 + y**2 + z**2 < 1.0:
return 1.0
return 0.0
a = -2.0
b = 2.0
def gfun(x):
return -2.0
def hfun(x):
return 2.0
def qfun(x, y):
return -2.0
def rfun(x, y):
return 2.0
res = tplquad(f1, a, b, gfun, hfun, qfun, rfun)
print res[0]
Предупреждения:
Код:
Warning: The maximum number of subdivisions (50) has been achieved.
If increasing the limit yields no improvement it is advised to analyze
the integrand in order to determine the difficulties. If the position of a
local difficulty can be determined (singularity, discontinuity) one will
probably gain from splitting up the interval and calling the integrator
on the subranges. Perhaps a special-purpose integrator should be used.