|
From: Stavros M. <mac...@gm...> - 2026-04-26 00:48:07
|
When I first read this message, I thought it was about *addcol*, which
confused me. I finally looked up COLNEW and realized that it had nothing to
do with new columns, but was using an archaic Fortran convention where
subroutine names were limited to six uppercase letters (I guess because the
7090 used 6 sixbit characters), and COLNEW was the new and improved version
of COLSYS, which uses the collocation method to solve a system of
differential equations.
I do understand that many people are familiar with these ancient cryptic
names, but do we need to perpetuate them? I'd recommend that we use more
mnemonic modern-syltyle names (numeric_solve_ode_bvp_adaptive?) and define
synonyms like F77_COLNEW for the Fortran users.
Re the evaluation problem, that sounds painful. Part of the pain is
probably because the original authors didn't implement enough argument
checking. And maybe they were abusing *ev*? (Always a temptation for people
new to Maxima, it seems.)
I wish I could help more directly, but despite having retired recently, I
find that my days are full.
-s
On Sat, Apr 25, 2026, 17:35 Michel Talon <ta...@lp...> wrote:
> Hello,
>
> i have taken some time to write a program to help writing the appropriate
> incantations to invoke colnew. It is not always obvious, in particular the
> number of evaluations necessary so that fsub, dfsub, gsub and dgsub only
> contain the z-variables and numerical data. The smallest error or
> incoherence between colnew variables, etc. produce very hard to debug lisp
> errors, hence the utility of a more automatic program. I have tested this
> stuff on Example 3 of the colnew documentation, which already reveals
> problems - notably dfsub has a tendency to contain L and s variables due to
> insufficient evaluation. I have tried to be quite general, but it may be
> that more complicated problems reveal other similar glitches that could be
> solved similarly. Anyways, i join here 3 files, one is a lisp file
> containing stuff to analyze the equations and compute necessary colnew
> variables, the other a maxima file which loads it and colnew and links the
> appropriate steps, finally a text file describing a maxima session with
> this program. One can see it runs very automatically. If someone finds
> this interesting i would be happy to see them included in the colnew
> folder... The maxima file has some quite complex invocations, like
> define(funmake (gsub, cons(i,var_list)), buildq([gval:apply (g, var_list)],
> gval[i]))$ which took me some time to discover, and may be of interest for
> other computations...(note in this case apply(g,var_list)[i] quoted or not
> does not work, the := operator accepts the subscript [i] but doesn't allow
> to have a constructed list of arguments, buildq allows to both evaluate
> gval and not evaluate the subscript).
>
>
> --
> Michel Talon
>
> _______________________________________________
> Maxima-discuss mailing list
> Max...@li...
> https://lists.sourceforge.net/lists/listinfo/maxima-discuss
>
|