Looks like the rk function in Maxima doesn't try hard enough to
float-ify its argument. I haven't looked at the code, but
maybe rk can call COERCE-FLOAT-FUN to construct a
function to evaluate the expression. At least that would
bring it into line with other Maxima functions which
evaluate expressions to numbers (e.g. plotting, quadpack).
Follow-ups to the Maxima mailing list. I've appended
the original message below.
best
Robert Dodier
PS.
On Apr 19, 8:38 am, jvkersch <joris.vankerscha... at gmail.com> wrote:
> Technically, this is not a Sage problem, but I figured I would post it
> here anyway since others might have run into the same problem, and I'm
> also trying to solve the problem using some Sage/python trickery.
>
> The problem concerns the use of symbolic constants such as pi in
> numerical integration with desolve_rk4. The following code is adapted
> from the manual page for desolve_rk4 -- note especially the constant
> pi in the specification of the ODE:
>
> x, y = var('x y')
> desolve_rk4(x*y*(2-y) + pi, y, ics=[0, 1], end_points=1, step=0.5)
>
> and raises the following error:
>
> TypeError: Error executing code in Maxima
> CODE:
> sage1 : rk(%pi-x*(y-2)*y,y,1,[x,0,1,0.500000000000000]) $
> Maxima ERROR: Inconsistent set of equations and variables
>
> This same error occurs whenever you have an ODE with pi in it, no
> matter how simple. The error persists when directly running this
> command in Maxima, but works fine (both in Sage and Maxima) when
> manually replacing pi by 3.14... Since I don't know any Maxima, I
> have no idea of what the problem could be or where to look.
>
> So, I was wondering if there is a way to have Sage replace the %pi
> when invoking Maxima by the corresponding numerical value? I guess I
> could store my ODE in a string and use a regular expression to get rid
> of any pi's myself, but that seems very inelegant. Is there anything
> you would recommend?
>
> Thanks a lot,
> Joris