On 07/17/2015 07:27 PM, Waldek Hebisch wrote:
Abhinav Baid wrote:
Concerning solving Hermite-Pade problem: if you have a solution=20
at your disposal (which is easy to obtain from a factor), then=20
'guessHolo' should be quite efficient.  More precisely, given=20
first order factor delta - r, the solution is exponential of=20
the integral of r/x which is an easy power series computations.=20
Using substitution S_e you can do this with Taylor series.=20
Given Taylor series is solution 'guessHolo' will produce the=20
factor (of course then you need to do S_{-e} to undo effect of S_e).=20

So, can guessHolo can be used only with first order factors? If so, then
how do I handle the case of m (as defined in section 3.6) > 1, I think the
same goes for guessAlgDep as well.
guessHolo can be used when you have a solution for a factor.  For
first order factor finding solutions is easier, but you can find
solutions also for higher order factors.

For solving Hermite-Pade problem the following routine
should work.  Solutions are given by columns of the
result.  Note: this routine produces so called order
basis, so some columns are not solutions -- you
need to check which columns give you actual
solutions.
Thanks for the routine. I've added it to the file and changed try_factorization accordingly.

The routine uses a trick to encode vector Hermite-Pade
problem

\sum_i p_iv_i = 0

as

\sum_i p_i(z^m)f_i = 0


where f_i = pack(v_i) and pack(w) = \sum_{j=0}^{m-1} z^j(w_j(z^m))
that is we encode vector of polynomials w of dimension m as a single
polynomial

\sum_{j=0}^{m-1} z^j(w_j(z^m))

Then it uses general routine in FractionFreeFastGaussian.

----------------<cut here>----------------------------

)abbrev package VHPSOLV VectorHermitePadeSolver
VectorHermitePadeSolver : Exports == Implementation where
   F ==> Expression(Integer)
   SUP ==> SparseUnivariatePolynomial(F)
   Exports ==> with
       hp_solve : (List Vector(SUP), List(NonNegativeInteger)) -> Matrix SUP
         +++ hp_solve(lv, eta) solves Hermite-Pade problem with degree
         +++ bound eta
   Implementation ==> add

     FFFG ==> FractionFreeFastGaussian(F, SUP)

     power_action(m : NonNegativeInteger
                 ) : ((NonNegativeInteger, NonNegativeInteger, SUP) -> F) ==
         (k, l, g) +-> DiffAction(k, m*l, g)$FFFG

     hp_solve(lv, eta) ==
         m := #first(lv)
         lpp : List(SUP) := []
         for v in lv repeat
             #v ~= m =>
                 error "hp_solve: vectors must be of the same length"
             pp : SUP := 0
             for i in 1..m repeat
                 pp1 := multiplyExponents(v(i), m)
                 pp := pp + monomial(1, (i-1)::NonNegativeInteger)$SUP*pp1
             lpp := cons(pp, lpp)
         lpp := reverse!(lpp)
         sumEta := reduce(_+, eta)
         C : List(F) := [0 for i in 1..sumEta]
         generalInterpolation(C, power_action(m), vector(lpp), eta)$FFFG


-----------------------<cut here>----------------------------


--
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