Hi there,
I am trying to maximize a function given a set of values to a parameter in the function. The function is an differential equation belonging to a system of two differential equations.
I have a for loop to state different values to the parameter.
Maple yields the error:
Error, (in Optimization:-NLPSolve) cannot evaluate the solution further right of 0.17757507e-4, probably a singularity
When trying to maximize the function.
Supposed that I was doing something wrong in the loop, if I reproduce the contents of the loop outside, and set a value for the parameter. If I plot the solution of the ordinary differential equation, I can see where the maximum lies.
Having plot it, the Optimizamtion:-Maximize works as expected.
However, omitting the plot has a weird effect: I only get the same result depending on the bounds I set for the Maximization:
de1 := diff(A(t), t) = r*m*(1-g)*A(t)-piecewise(t < 8, r*A(t), t >= 8, (r+k)*A(t));
de2 := diff(G(t), t) = r*m*g*A(t)-l*G(t);
ics := A(0) = 25.0, G(0) = 0.;
num := dsolve({de1, de2, ics}, {A(t), G(t)}, type = numeric, output = listprocedure, parameters = [g]);
num(parameters = [g = .15]);
val := eval(G(t), num);
# odeplot(val, [t, G(t)], t = 0 .. 100);
Maximize(val);
Error, (in Optimization:-NLPSolve) cannot evaluate the solution further right of 0.17757507e-4, probably a singularity
val2 := Maximize(val);
Error, (in Optimization:-NLPSolve) cannot evaluate the solution further right of 0.17757507e-4, probably a singularity
val3 := Maximize(val(t), t = 0 .. 60);
[10267.824035766165, [t = 8.25727747134303]]
val4 := Maximize(val(t), t = 0 .. 100);
[6.863211343195069e-9, [t = 59.84184367042171]]
The right answer is [10267.824035766165, [t = 8.25727747134303]]: Why do I get two different answers even if in that range there is only one relative maximum?
I ignore whether the way I am specifying the arguments for the Maximize function is correct. val is a procedure.
What am I missing?
Attached is the worksheet: MaplePrimes_malaria_param_variation_2.mw
Thanks,
jon