defining functions of s variables



Hi Bart,

perhaps you are seeking the

- makelist-concat construct for creating s variables
- apply-buildq-lambda construct for evaluation of the function

--------------------- snip -----------------
f(x) := block(

        [res, k],

        res : 1,
        for k : 1 thru length(x) do block(
                res : res * x[k]^k
        ),

        return( res )

);

s : 6;

/* variables */
x : makelist( concat(x,i), i, 1, s );

/* derivatives */
for k : 1 thru s do block(
        print( k, " ", diff(f(x),x[k]) )
);

/* evaluation, e.g. f( [1, ..., 1] ) */

g : f(x);
p : makelist( 1, i, 1, s );
result : apply( buildq( [x,g], lambda(x,g) ), p );
--------------------- snip -----------------

Regards Andre