Using an ImplicitRegion
in NIntegrate
by far best performance is obtained by using Method->"UnitCubeRescaling"
in my case. In order to get further insight into the integration (and possibly either increase performance further or easily port it to c++), i would like to extract the transformation used by Mathematica in order to rescale the integrand to a hypercube.
Explicit example:
ImplicitRegion
defined as:
localA=200; localB=1; localC=900;
reg = ImplicitRegion[{
0 <= y <= x && -1 <= z <= 1 &&
-x^2 + y^2 + localA^2 + 2*localA*y*z > 0 &&
localB <= x <= localC}, {x, y, z}];
NIntegrate[f[x, y, z], {x, y, z} ∈ reg,
Method -> {"UnitCubeRescaling", "FunctionalRangesOnly" -> True,
Method -> {"GlobalAdaptive", "SingularityHandler" -> None}}]
The Implicit region arises from Heaviside theta functions with a nonlinear arguments. I'm looking for a conceptual solution, as I also have more complicated examples, but I would be grateful for any solutions to this particular examples as well.
CylindricalDecomposition[]
. $\endgroup$