0
$\begingroup$

Consider this list of inequalities

listCond = {1.72149*10^-17 x1 - 1.85662*10^-10 x2 + 1.34154*10^-9 x3 > 0, 0.0339918 x1 + 0.00037422 x2 - 0.00244772 x3 > 0, 8.91888*10^-11 x1 - 3.22923*10^-7 x2 - 7.94529*10^-7 x3 > 0, 0.0450231 x1 + 0.0684201 x2 + 0.168349 x3 > 0, 1.89778*10^-8 x1 - 0.0000293102 x2 - 0.000177299 x3 > 0, 0.0251657 x1 + 0.0191776 x2 + 0.101373 x3 > 0, 1.51228*10^-17 x1 - 6.09044*10^-10 x2 - 5.12373*10^-10 x3 > 0, 0.0473469 x1 + 0.00463677 x2 + 0.00387406 x3 > 0, 9.43537*10^-10 x1 - 7.24241*10^-6 x2 - 0.0000162489 x3 > 0, 0.0324393 x1 + 0.0351078 x2 + 0.079777 x3 > 0, 5.08188*10^-10 x1 + 6.15116*10^-6 x2 - 1.19815*10^-6 x3 > 0, 0.0532417 x1 - 0.0116377 x2 + 0.00226581 x3 > 0, 3.22738*10^-17 x1 - 1.03283*10^-9 x2 - 4.76066*10^-9 x3 > 0, 0.0171107 x1 + 0.00197426 x2 + 0.00901362 x3 > 0, 1.66869*10^-8 x1 - 0.000033618 x2 - 0.000082661 x3 > 0, 0.0279473 x1 + 0.0381579 x2 + 0.0939938 x3 > 0, 1.89097*10^-18 x1 - 7.63154*10^-11 x2 - 1.50989*10^-10 x3 > 0, 0.0100021 x1 + 0.026301 x2 + 0.0503768 x3 > 0, 6.315*10^-16 x1 - 4.74586*10^-9 x2 - 1.48738*10^-8 x3 > 0, 0.0398816 x1 + 0.0482081 x2 + 0.151094 x3 > 0, 2.96169*10^-10 x1 + 4.84749*10^-6 x2 + 4.78587*10^-7 x3 > 0, 0.00977103 x1 - 0.0106303 x2 - 0.00105459 x3 > 0, 8.56294*10^-10 x1 + 6.8701*10^-6 x2 - 2.95241*10^-9 x3 > 0, 0.0428018 x1 - 0.023279 x2 + 9.41786*10^-6 x3 > 0}

If I ask to RegionIntersection if there is an intersection, I get EmptyRegion[3]

Print[RegionIntersection @@ (ImplicitRegion[#, Evaluate@{x1,x2,x3}] & /@(listCond)) // RepeatedTiming];
(* Out: {0.0092,EmptyRegion[3]} *)

If instead I use FindInstance, I get a solution to the system of inequalities

listCond // FindInstance[#, {x1, x2, x3}, 2] &
(* Out: {{x1 -> 131., x2 -> -0.00789569, x3 -> -0.000611689}, {x1 -> 109., x2 -> 2.17051*10^-6, x3 -> -5.00551*10^-7}} *)

Why is RegionIntersection returning no solution??

Moreover, If I plot the region selected by the inequalities for $x_3=1$ I get a huge region

RegionPlot[listCond /. List -> And /. x3 -> 1, {x1, 0, 10^8}, {x2, -10, 10}]

enter image description here

$\endgroup$
2
  • $\begingroup$ If your region is a set of discrete points in 3-space, then their intersection must be void, so it seems to me RegionIntersection is doing its job. $\endgroup$
    – m_goldberg
    Commented Jan 31, 2019 at 10:45
  • $\begingroup$ @m_goldberg why the region should be made of discrete points? If you plot the system with RegionPlot actually you see a continuous region. I edited the question $\endgroup$
    – apt45
    Commented Jan 31, 2019 at 11:41

1 Answer 1

1
$\begingroup$

Seems to be an issue with floating point numbers. Converting to exact numbers gives back an ImplicitRegion:

N[RegionIntersection[
  ImplicitRegion[Rationalize[#, 0], {x1, x2, x3}] & /@ listCon])] // Head
ImplicitRegion
$\endgroup$

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.