I am completely new to Mathematica (second day), so do not expect things to look polished.

I am trying to perform a ConvexOptimization over a List/Array (dimensionality e-2)with custom (higher) precision. The plain version works just fine:


PepGamma[z_, combinedA_] := 1 + z + z^2/2 + Sum[combinedA[[i]] * z^(i + 2), {i, e - 2}];
combinedA = Array[gam, e - 2];
Print[PepGamma[z, combinedA]];

omega = -1;
deltaT = 0.5;
ConvexOptimization[Abs[PepGamma[omega * deltaT, combinedA]] - 1, {}, combinedA]

Now if I want to specify a certain precision of the objective PepGamma, similar as done here

PepGammaPrec[z_, combinedA_] := SetPrecision[PepGamma[z, combinedA], 10];
Print[PepGammaPrec[z, combinedA]];

this seems to work. But then calling the optimizer

Abs[PepGammaPrec[omega * deltaT, combinedA] - 1], {}, combinedA, WorkingPrecision -> 10]

gives first the (strange) message

ConvexOptimization::precw: The precision (9.778151250383644`) of the objective and constraints is less than the specified WorkingPrecision 10.`.

Alright, then lets try this with a smaller WorkingPrecision, say 9. But then the optimizer reports:

ConvexOptimization::nnobj: The objective does not evaluate to a real numerical value since the value of ObjectiveConstant is Abs[-0.3750000000-0.1250000000 gam[1.000000000]+0.06250000000 gam[2.000000000]].

How can this be? I also tried this with very small (2and very high precision 50), in both cases the optimizing routine reports that it is not able to find a solution, although the default case finds one.

  • 2
    $\begingroup$ It seems calling SetPrecision, also changes indices precision, gam[2.000000000] instead of gam[2]. Indexed seems to solve the problem. Just change the combinedA definition to Array[Indexed[gam, #] &, e - 2]. $\endgroup$
    – Ben Izd
    May 10 at 15:23
  • $\begingroup$ Thanks! That indeed seemed to have solved it. I was also worried about this, but when I checked the element access with e.g. combinedA[1.000000] it seemed to work. But probably not within the optimization package. Anyways, thanks again! $\endgroup$
    – Dan Doe
    May 10 at 16:15


Your Answer

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

Browse other questions tagged or ask your own question.