Here is a simple implemention of a recurrence relation operator. It is far
from finished, but might serve as a starting point. I experienced the following
difficulties:
- The operator model in Axiom is quite restrictive: all arguments have to be
from the same domain. This leads to problems elsewhere, too. I don't think
that the following can be justified mathematically:
fricas
(1) -> sum(k,k=1.0..2.5)
Type: Union(Fraction(Polynomial(Float)),...)
- dummy variables are only supported in a very limited fashion: for the
recurrence relation operator it would be good to have also "dummy operators"...
Things to do:
- a proper operation analogous to
sum
, rootOf
or the like needs to be written.
The operation evalRec
is just for a start
evalRec
needs to be speeded up
evalADE
doesn't really work concerning evaluation
The pamphlet is [rec.spad.pamphlet]? and the source is [rec.spad]?.
Here is an example:
fricas
)lib RECOP
)library cannot find the file RECOP.
dummy := new()$Symbol;
Type: Symbol
fricas
f := operator 'f;
fricas
eq := f(dummy) - f(dummy - 1) - f(dummy - 2);
Type: Expression(Integer)
fricas
r:=evalRec(f, dummy, n, n0, eq, [1,1])$RecurrenceOperator(Integer, Expression Integer)
The function evalRec is not implemented in RecurrenceOperator(
Integer,Expression(Integer)) .