I am trying to determine if a function is always positive given a set of assumptions. I am using NMinimize
following the advice of previous posts in this site. However, I am getting a global minimum that does not satisfy the assumptions.
I use the following code:
assumptions = {w3 > 0 && w2 > w3 && w1 > 2 w2 - w3 && 0 < b < w3 && 0 < l < 1};
NMinimize[
{1/6
((2 b l + 2 w1 + 5 w2 - 3 l w2 - 7 w3 + 3 l w3) / (w2 - l w2 - w3 + l w3) -
Sqrt[
(4 b^2 l^2 + 4 b l (2 w1 + 5 w2 - 3 l w2 - 7 w3 + 3 l w3) +
(-2 w1 + w2 - 3 l w2 + w3 + 3 l w3)^2) / ((-1 + l)^2 (w2 - w3)^2)]) -
(2 w1 - w2 - w3)/(b*2 l + 2 w1 - w2 - w3),
assumptions},
{b, l, w1, w2, w3}]
However, Mathematica returns
{-5.32491,
{b -> 0.0796325, l -> 0.0617359, w1 -> 0.52956, w2 -> 0.14148, w3 -> 0.189851}}
where w2 < w3
.
I have tried adding the assumptions directly to NMinimize
or to write a function for the expression, but the results are the same.
Does someone know a better way to solve this problem?