3
$\begingroup$

I've been trying to minimize this:

NMinimize[
  {0.0011436611039371792` 
    (-22.749891688107795` - x + Log[0.010964912280701754` a]/(12 π) + 
       Log[0.010964912280701754` b]/(12 π))^2 + 
   0.00028717641571726865` 
     (-20.905057129569222` - x +  Log[0.010964912280701754` a]/(20 π) + 
        Log[0.010964912280701754` b]/(20 π) + Log[0.010964912280701754` c]/(30 π))^2 +       
   0.01400511186583103` 
     (-23.86830932925918` - x + Log[0.010964912280701754` c]/(12 π))^2, 
   1.1690159611663095`*10^14 <= a <= 7.30286103392343`*10^14,  
   4.563696268657563`*10^15 <= b <= 4.56879715466054`*10^15,  
   4.570970079902989`*10^15 <= c <= 6.177387478825724`*10^15}, 
  {x, a, b, c}]

But I've been unsuccesful.

Mathematica claims:

NMinimize::nsol: There are no points that satisfy the constraints {}.

I have tried to plug in several points within the specified constraints and I've got a real number everytime. So as far as I can tell the problem is well defined, mathematically speaking.

Now after playing with the command for a while, I noticed that when I round all the numbers ending with `, I get a result. Like so:

NMinimize[
  {0.00114366 
    (-22.7499 - x + Log[0.0109649 a]/(12 π) + Log[0.0109649 b]/(12 π))^2 + 
     0.000287176 
       (-20.9051 - x + Log[0.0109649 a]/(20 π) + Log[0.0109649 b]/(20 π) + 
          Log[0.0109649 c]/(30 π))^2 + 
     0.0140051 (-23.8683 - x + Log[0.0109649 c]/(12 π))^2, 
   1.16902*10^14 <= a <= 7.30286*10^14, 
   4.5637*10^15 <= b <= 4.5688*10^15, 
   4.57097*10^15 <= c <= 6.17739*10^15}, 
  {x, a, b, c}]
{0.00662112,
 {x -> -22.8238, a -> 1.16902*10^14, b -> 4.5637*10^15, c -> 6.02703*10^15}}

So I suppose I could use Round to round all the long numbers down. However, getting this function takes quite a long code. I would have to use Round in a lot of places. Not even mentioning the loss of precision. Is there a quicker way to evaluate the former command without having to use 18 x Round all over the code? I haven't found the answer to this anywhere.

$\endgroup$
  • $\begingroup$ Please, if possible, supply a simpler function to minimize exhibiting the same issue. $\endgroup$ – mjw Mar 24 '19 at 19:35
  • $\begingroup$ I trimmed it down to this (when I leave more, it starts working and the long numbers are the point, so I cant skip all of those): NMinimize[{(-x + Log[0.010964912280701754` a]/(12 [Pi]))^2 + (Log[ 0.010964912280701754` c]/(12 [Pi]))^2 + b^2, 1.1690159611663095*10^14 <= a <= 7*10^14, 4.563696268657563*10^15 <= b <= 410^15, 4.570970079902989`*10^15 <= c <= 6*10^15}, {x, a, b, c}] $\endgroup$ – Pavel Mar 24 '19 at 19:45
3
$\begingroup$

This seems to be a precision problem. This seems to work:

NMinimize[SetPrecision[
  {0.0011436611039371792` (-22.749891688107795` - x + 
        Log[0.010964912280701754` a]/(12 π) + 
        Log[0.010964912280701754` b]/(12 π))^2 + 
    0.00028717641571726865` (-20.905057129569222` - x + 
        Log[0.010964912280701754` a]/(20 π) + 
        Log[0.010964912280701754` b]/(20 π) + 
        Log[0.010964912280701754` c]/(30 π))^2 + 
    0.01400511186583103` (-23.86830932925918` - x + 
        Log[0.010964912280701754` c]/(12 π))^2, 
   1.1690159611663095`*10^14 <= a <= 7.30286103392343`*10^14, 
   4.563696268657563`*10^15 <= b <= 4.56879715466054`*10^15, 
   4.570970079902989`*10^15 <= c <= 6.177387478825724`*10^15},
  50
  ], {x, a, b, c},
 WorkingPrecision -> 40]

{0.006618105360153810779221751614203418258948, { x -> -22.82319564674859110474727841393537665003, a -> 1.169015961166309531250000000000000000000*10^14, b -> 4.563696268657563000000000000000000000000*10^15, c -> 6.177387478825724000000000000000000000000*10^15 } }

Anyways, the error message is simply wrong and misleading. Please contact support about this issue.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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