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:
e=4;
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
ConvexOptimization[
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.
SetPrecision, also changes indices precision,gam[2.000000000]instead ofgam[2].Indexedseems to solve the problem. Just change thecombinedAdefinition toArray[Indexed[gam, #] &, e - 2]. – Ben Izd May 10 '22 at 15:23combinedA[1.000000]it seemed to work. But probably not within the optimization package. Anyways, thanks again! – Dan Doe May 10 '22 at 16:15