[Maxima] Typos and Questions

Martin RUBEY rubey@labri.fr
Sun, 22 Sep 2002 23:24:52 +0200 (CEST)


Hi,

after my first experiences with maxima a year ago I didn't have any time
to spend on it, now I tried it again (new university, no MMA) and was, in
fact, rather pleased. I thought I'd just write up some simple 
observations, sorry I can't contribute more at this time...  

Thanks for your work, it's just great!

Martin

Line 230 of maxima.1 should read

Maxima. If gnuplot is available, it can be used by setting a plot

instead of

Maxima. If is gnuplot is available, it can be used by setting a plot

---------------

Page 3 of the Maximabook:
Line 187 of maxima.tex should probably read

\chapter{Trig through Calculus}

instead of

\chapter{Trig through Through Calculus}

--------------

Page 66 of the Maximabook:
Line 69 of prog.tex should read

with input or output commands.  The input is provided through

instead of

with input or output commands.  The input is provide through

---------------

local(func) should be emphasised in the documentation, i.e., it wasn't
intuitively clear to me that

block([func],func(x):=x^2); defines func globally,

and it takes some time to find out.

---------------

In MMA and I believe in Maple too, I can say

f[2]:=3
f[3]:=5 and the like,

in Maxima it seems, that the easiest way to do this is

f(x):=Block([],local(f),Map(lambda([x,y],f[x]:y),[2,3],[3,5]),f[x]);

Am I right?

--------------

Is there a obvious way to convert arrays, matrices and lists (of the right
form) into each other or do I have to loop over all the indices?

--------------

The docu says

 - Function: DEFINE (f(x1, ...), body)
     is equivalent to f(x1,...):="body but when used inside functions
     it happens at execution time rather than at the time of definition
     of the function which contains it.

Asside from the fact that " should (globally, at least also in
"Introduction to Command Line") be replaced by '',

define(f(x),Block([],local(f),Map(lambda([x,y],f[x]:y),[1,3,5],[2,5,1]),f[x]));

returns
 
 f(x) := f[x]

and

f(x):=''Block([],local(f),Map(lambda([x,y],f[x]:y),[1,3,5],[2,5,1]),f[x]);

returns

 f(x):=BLOCK([],LOCAL(f),MAP(LAMBDA([x,y],f[x]:y),[1,3,5],[2,5,1]),f[x])

so, it seems that this is not really an equivalence. In fact, it seems to
me that '' doen't do anything in this context. Furthermore

g():= f(x):=''Block([],local(f),Map(lambda([x,y],f[x]:y),[1,3,5],[2,5,1]),f[x]);

(as well as the same statement without '' ) makes g(); return

f(x):=BLOCK([],LOCAL(f),MAP(LAMBDA([x,y],f[x]:y),[1,3,5],[2,5,1]),f[x])

(and now f is defined), while

g():=define(f(x),Block([],local(f),Map(lambda([x,y],f[x]:y),[1,3,5],[2,5,1]),f[x]));

makes g(); return

f(x):=f[x]

(which is what I expected) So, I think the docu should say something like

 - Function: DEFINE (f(x1, ...), body)
     is equivalent to f(x1,...):=evaluated_body, where evaluated_body is
     the evaluation of body.

---------------

wishlist:

Erf should accept complex arguments

Why doesn't Integrate(...), numer; call Romberg(...); ?