I have to integrate a complicated function over a lot of regions in x $\Phi$

F[W_, m_, t_] := BoundaryDiscretizeRegion[ImplicitRegion[
Max[pmin^2, W^2 (1 - x)^2] <= (1 -x)^2 (t^2 + x^2 m^2 - 2 m t x Cos[\[Phi]]) && 
Max[pmin^2, W^2 x^2] <= x^2 (t^2 + (1 - x)^2 m^2 + 2 m t (1 - x) Cos[\[Phi]]),
{\[Phi], x}], {{0,2 \[Pi]}, {0, 1}}]

To speed up I would like to check if the region for specific W, t, and m is empty or not before integration. I am doing it with RegionQ[F[W, m, t]] and get False if Mathematica can not discretize it together with the message BoundaryDiscretizeRegion::drf : BoundaryDiscretizeRegion was unable to discretize the region ImplicitRegion[<<2>>]. And the message decreases the speed.

I guess for more complicated regions I can get False even though the region is not empty. Another way is If[Area[ImplicitRegion[...]]==0,...] but here the integral is tacitly calculated, which I want to avoid.

So is there a faster way to check if the region given by ImplicitRegion is empty or not?

  • $\begingroup$ FindInstance? $\endgroup$ Oct 21, 2017 at 10:45
  • $\begingroup$ @aardvark2012, yes, it is the answer. $\endgroup$
    – user40532
    Oct 22, 2017 at 13:23
  • $\begingroup$ @aardvark2012, although, with FindInstance I am often stuck into lower dimensional areas which give zero integral anyway. RegionDimension[]==2 seems to work better for my problem. $\endgroup$
    – user40532
    Oct 22, 2017 at 13:46


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.