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.