Hello there,
I am trying to implement functions that are linear in only a few of
their arguments and need some help. I know how to implement linear and
multilinear functions thanks to a post back in October, however I am
interested in functions like:
F[a,b,c,...,x,y,z...]
or
F[...,a,x,...,b,c...,y,...z,...]
etc.
where F is linear in x,y,z,... but not linear in a,b,c...
I would like to use a variation of the earlier solution to making
multilinear functions, i.e.
SetMultilinear[func_]:=(Function[x,
x[___,0,___] := 0;
x[a___,y_+z_,b___] := x[a,y,b] + x[a,z,b];
more rules..... ]/@func)
set it up so that my new function is
SetSemiLinear[func_,list_] := (* function def *)
Where the list is a list of the slots of func that are linear. Any ideas
of how to achieve this?
While I am at it, a separate but related issue. I would also like to be
able to make linear functions that are limited in the number of slots
they can take. The problem with the SetMultilinear function above is
that the function func can take any number of arguments and be linear in
all of them. I would like to have a way to limit func to only take a few
slots, i.e. be able to define a function as n-linear only.
Any help would be appreciated.
Jeff