## 156 Reputation

12 years, 327 days

## Bug in Maple 9 plot?...

Maple

Has anyone encountered a bug (or bugs) in Maple 9's plot functionality? I am using Maple 9 (probably need to upgrade!) and getting odd plots.

For example, I have a procedure called T_opt(x,y,z) that fines the optimal T given parameters (x,y,z), and I have checked the values for X_opt directly. For instance, below we see that T_opt is decreasing in x:

> T_opt(0.2,0,0.5);
0.917116057083333324
> T_opt(0.3,0,0.5);
0.854603175416666638
> T_opt(0.4,0,0.5);
0.812654453124999954

But when I plot T_opt as follows:

> plot([T_opt(x,0,0.5),T_opt(0.4,0,0.5)],x=0..0.5);

the plot shows T_opt increasing in x! Basically, totally wrong values for T_opt are shown in the plot, i.e. not the values above!!

See attached plot.

Note, I have also seen some similar bugginess when using plot3d. Is anyone aware of this problem? Or am I plotting T_opt incorrectly somehow? Thanks. ## Converting "Undefined" Elements of Array...

Maple
I am having difficulty with a procedure that takes an Array and returns its maximum element -- and suspect that the difficulty is due to the fact that my Array (called it A) has elements of mixed data type, i.e. some numeric and some "undefined" elements. How do I replace the undefined elements and/or get Maple to work with them?

I was thinking that I could convert them to a placeholder value of 0, since I'm maximizing?

Here's the error message, followed by a slice of my array -- you can see that there's already an undefined elements:

Error, (in maxpt) invalid input: ArrayDims expects its 1st argument, A, to be of type Array, but received [[.2500000000, .3125000000, .3620558262, .4031851184, .4375000000, .4659321892, .4891103366, .5074959503, .5214466094, undefined, .5368923611, .5381944444, .5351562500, .5277777777, .5160590278, .5000000000, .5000000000, .5000000000, .5000000000, .5000000000, .5000000000, .5000000000, .5000000000, .5000000000, .5000000000], [.2947082519, .3533020019, .3989515781, .4361746204, .4665832520, .4911091912, .5103810885, .5248604523, .5349048614, .5406428808, .5417911264, .5383316213,

## Finding the Maximizer Using Plot...

Maple
I have a function that cannot be maximized by taking the FOCs, i.e. non-convex, and I want to maximize it with respect to two variables. Say, with respect to (x,y).

I have found an example where you can extract the maximizer from plot using this approach:

> P:=plot(subs(x=0.1,subs(tau=0.3,subs(theta=1,subs(omega=0.5,payoff)))),y=0..1):
> A:=remove(has,op([1,1],P),undefined):
> MAX:=max(op(map(t->t,A)));
MAX := 0.330385487730942451

> points:=op([1,1],P):
> MAXPT:=select(t->t=MAX,points);
MAXPT := [[0.287405284999999956, 0.330385487730942451]]

The above example is for the case where you maximize a function with respect to a single variable, y. (The value of x is fixed above; tau, theta, and omega are parameters of payoff.)

## Plotting a procedure...

Maple
I am trying to plot the following procedure in the variable s_val (with p_val and pa_val at fixed values):

> Q_opt:=proc(s_val,p_val,pa_val)
> fsolve(subs(p=p_val,subs(s=s_val,subs(pa=pa_val,FOC))),Q);
> end proc:

with no luck. I have tried the following variants of plot:

(1)

> plot(subs(p_val=0,subs(pa_val=0.6,Q_opt)),s_val=0.5..0.59,axes=BOXED);

Error, (in plot) invalid plotting of procedures, perhaps you mean plot(Q_opt, .5 .. .59, axes = BOXED)

(2)

> plot(subs(p_val=0,subs(pa_val=0.6,Q_opt)),0.5..0.59,axes=BOXED);

Warning, unable to evaluate the function to numeric values in the region; see the plotting command's help page to ensure the calling sequence is correct

## Handling Piecewise FOCs in an Optimizati...

Maple
I have an optimization problem where my integration bounds depend on the maximizer and take the form max[1,Q+pa/2], where Q is the variable that I am maximizing with respect to.

For instance, my function U (utility), which I am maximizing is defined as follows:

U:=simplify(int(-(-d)^2,d=0..D_lbar)+int(-(-s/2)^2-s*(d-s/2),d=D_lbar..D_bar2(Q))
+int(-(Q-d)^2-s*Q,d=D_bar2(Q)..DD_bar2(Q)))+int(-(-pa/2)^2-s*Q-pa*(d-pa/2-Q),d=DD_bar2(Q)..1)

where

D_lbar:=s/2;
D_bar:=Q+s/2;
D_bar2:=Q->piecewise(Q+s/2>1,1,Q+s/2);
DD_bar2:=Q->piecewise(Q+pa/2>1,1,Q+s/2);

I get a piecewise FOC for U, with respect to Q, and I'm able to solve for the optimal Q, given the parameters s, p, and pa, using fsolve. For example:
﻿