For the complex polynomial $$P_n(z) := 1+z+\frac{z^2}{2} + \sum_{j=3}^n \gamma_j z^j,\quad z \in \mathbb C.$$ I want to solve the following minimax/minmax optimization problem: $$\min_{\gamma_j} \max_{\lambda \in \sigma(A)\in \mathbb C} \big \vert P_n(\lambda \Delta t) \big \vert -1, \quad \Delta t \in \mathbb R_+ \text{ given.}$$ This problem arises from optimizing the stability region of explicit Runge-Kutta methods with $P_n(z)$ being the corresponding stability polynomial. The minimization over $\gamma_j$ is convex due to the fact that the objective is linear in these coefficients. What gives me trouble is that the coefficients have to be determined "for the worst case", thus the maximization over the eigenvalues of the linear RHS operator.
I already took a look at different questions addressing minimax, e.g. 1, 2 3 but was not able to find something transferable to my problem.
I tried nesting optimization routine calls like
ConvexOptimization[NMaximize[{Abs[Pn[omega * deltaT, gamma]] - 1,
omega <= 0},omega], {}, gamma];
but ran into trouble since inside NMaximize
gamma
is not realized:
NMaximize::nnum: The function value 1-Abs[0.607297 -0.522152 Subscript[gamma, 1]] is not a number at {omega} = {-1.82905}.
If I switch from ConvexOptimization
to NMinimize
and specify some custom initial values,
ip = Table[{i}, {i, 0.1, 1, 0.1}];
NMinimize[NMaximize[{Abs[Pn[omega * deltaT, combinedA]] - 1, omega <= 0}, omega],
gamma, Method -> {"Automatic", "InitialPoints" -> ip}
the problem persists
NMaximize::nnum: The function value 1-Abs[0.607297 -0.522152 Subscript[gamma, 1]] is not a number at {omega} = {-1.82905}.
Setting the optimization variable gamma[[1]] = 42
prior to calling the optimizer routines gives for both NMinimize
aswell as ConvexOptimization
the (not surprising) error
NMinimize::ivar: 42 is not a valid variable.
ConvexOptimization::nvar: 42 is not a valid variable.