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.


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

-- 
                              Waldek Hebisch
[email protected] 

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