On 02/02/2015 03:00 PM, Waldek Hebisch wrote:
Abhinav Baid wrote:

On 01/30/2015 07:47 PM, Waldek Hebisch wrote:
Abhinav Baid wrote:
On Thursday, January 29, 2015 at 8:42:54 AM UTC+5:30, Waldek Hebisch wrote:
Abhinav Baid wrote:

Also, I've implemented the integrate_sols procedure
from ISSAC'97 Abramov/Hoeij paper [4] in SPAD and think that it can be
added as an operation to the LinearOrdinaryDifferentialOperator1 domain
[5]. I'd be glad to hear any comments on this too.
I took a quck look at it: the code looks good.  We need to think
a bit where to put it.

Another place (which, on second thought, I believe would be more apt)
where the function could be added
is the RationalLODE package, as it deals with LODO/LODE having rational
function coefficients.

This one point of view.  However Abramov and van Hoeij claim that
the method works for Ore algebras.  FriCAS has quite general
implementation of Ore algebras, so it make sense to make
routine more general.  ATM important ingredient, that is
"rational" solver is implemented only for differential operators
with rational coefficients, but there are methods to handle
operators with more general coefficients.  So in the future
we should be able to use your routine in more general context.

Oh, the situation seems to be similar to the one in Maple. However, in
Maple, the function is included in the diffop package. So, wouldn't it
be better to include this in RationalLODE instead of waiting for a
rational solver for Ore algebras?
I do not want to wait.  One trick is to have a general function
which takes needed operations as parameters.  So one can
have something like:

IntegrateSols(F, L) : Exports == Implementation where
     F : Join(Field, CharacteristicZero, RetractableTo Integer,
              RetractableTo Fraction Integer)
     L : UnivariateSkewPolynomialCategory(F)
     U   ==> Union(F, "failed")
     SF  ==> (L, F) -> Record(particular : U, basis : List F)
     Exports ==> with
         integrate_sols : (L, L, L -> L, SF) -> Union(L, List(L))
           ++ integrate_sols(op, D, adjoint, rat_solve) ...

or put extra requirements on L like

    L : UnivariateSkewPolynomialCategory(F) with
           adjoint : % -> %
           D : () -> %


Then in some other place (like RationalLODE) we can place a wrapper
which just passes extra parameters.

Oh, it was my mistake. Sorry. How is the current implementation? [1]
In RationalLODE, we could just use integrate_sols(l, ratDsolve) with it.

[1] https://github.com/fandango-/spad/blob/master/is.spad

Thanks,
Abhinav.

--
You received this message because you are subscribed to the Google Groups "FriCAS - 
computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to