Brilliant! I have come across the holonomic/[Meijer] G-function connection
before, but never really explored it. Do G/H-functions represent the entire
space of holonomic functions? How about the other way around?
I also recall this <https://uwspace.uwaterloo.ca/handle/10012/4884> thesis
covering both in connection to the solution of integrals.
​

On Wed, Jun 29, 2016 at 4:45 PM, Ondřej Čertík <[email protected]>
wrote:

> Hi,
>
> I just want to update this thread, that we have fixed this problem, in
> my opinion, thanks to our GSoC student Subham Tibra, and his mentor
> Kalevi Suominen. I am Subham's mentor too, but Kalevi has done a much
> better job mentoring. ;)
>
> In short: hypergeometric as well as the MeijerG functions are
> solutions to an ODE together with some (symbolic) initial conditions
> at a point like x=0, or x=1 (or any other point). Holonomic functions
> are a generalization of this ODE to allow polynomials as coefficients
> of the ODE. Then suddenly they are closed to almost all operations
> (including multiplication, integration, differentiation) and there are
> algorithms that can robustly and quickly compute those operations.
> They are now implemented in SymPy.
>
> I am using SymPy version 8d7b522e58aae883b4592e4fae3babf82d1e4db2.
> Let's first show that what the meijerint._rewrite1() cannot do, can be
> done easily with holonomic functions:
>
> In [1]: from sympy.holonomic import from_sympy
>
> In [2]: meijerint._rewrite1((cos(x)/x), x)
> Out[2]: (1, 1/x, [(sqrt(pi), 0, meijerg(((), ()), ((0,), (1/2,)),
> x**2/4))], True)
>
> In [3]: meijerint._rewrite1((sin(x)/x), x)
> Out[3]: (1, 1/x, [(sqrt(pi), 0, meijerg(((), ()), ((1/2,), (0,)),
> x**2/4))], True)
>
> In [4]: meijerint._rewrite1((cos(x)/x)**2, x)
>
> In [5]: meijerint._rewrite1((sin(x)/x)**2, x)
> Out[5]:
> (1,
>  x**(-2),
>  [(sqrt(pi)/2, 0, meijerg(((0,), (1/2, 1/2, 1)), ((0, 1/2), ()),
> x**(-2)))],
>  True)
>
> In [6]: from_sympy((cos(x)/x))
> Out[6]: HolonomicFunction((x) + (2)Dx + (x)Dx**2, x), f(1) = cos(1),
> f'(1) = -sin(1) - cos(1)
>
> In [7]: from_sympy((sin(x)/x))
> Out[7]: HolonomicFunction((x) + (2)Dx + (x)Dx**2, x), f(0) = 1, f'(0) = 0
>
> In [8]: from_sympy((cos(x)/x)**2)
> Out[8]: HolonomicFunction((8*x) + (4*x**2 + 6)Dx + (6*x)Dx**2 +
> (x**2)Dx**3, x), f(1) = cos(1)**2, f'(1) = -2*sin(1)*cos(1) -
> 2*cos(1)**2, f''(1) = 4*cos(1)**2 + 2*sin(1)**2 + 8*sin(1)*cos(1)
>
> In [9]: from_sympy((sin(x)/x)**2)
> Out[9]: HolonomicFunction((8*x) + (4*x**2 + 6)Dx + (6*x)Dx**2 +
> (x**2)Dx**3, x), f(0) = 1, f'(0) = 0, f''(0) = -2/3
>
>
>
> Here is an example how to use the holonomic functions module to
> compute integrals:
>
> https://github.com/sympy/sympy/issues/8944#issuecomment-229478358
>
> it's around 10x faster than the SymPy's integrate() routine.
>
> The tough part is what to do about definite integrals where the
> antiderivative (a holonomic function) can be converted to elementary
> functions, like here:
>
> https://github.com/sympy/sympy/issues/11319
>
> That's where the MeijerG approach gives better results. Also another
> advantage of the MeijerG approach is that it gives convergence
> conditions --- though perhaps there is a way to implement it in the
> holonomic module (https://github.com/sympy/sympy/issues/11322).
>
> Ondrej
>
> P.S. Thanks Brandon for your email. I think the above is the solution.
>
> On Sat, Feb 13, 2016 at 12:32 PM, brandon willard
> <[email protected]> wrote:
> > I've been thinking about this same topic a lot recently (partially due
> to a
> > question about a G-function form of tanh), and it seems like the more
> > generalized G-function you mentioned, Ondrej, is probably necessary at
> some
> > point.  There doesn't seem to be a whole lot of literature on these
> > bivariate G-functions, but, if you extend the scope to H-functions and
> > bivariate hypergeometric functions (e.g. Horn, Appell), there are at
> least
> > enough useful identities to consider implementing.
> > Here's one interesting identity involving that generalized G-function and
> > the Appell: http://functions.wolfram.com/07.34.16.0003.01.
> >
> > Also, there are some explicit series expansions for H-functions might
> help:
> > http://arxiv.org/abs/math/9803163.
> >
> > On Monday, February 1, 2016 at 2:28:18 PM UTC-6, Ondřej Čertík wrote:
> >>
> >> On Mon, Feb 1, 2016 at 1:26 PM, Ondřej Čertík <[email protected]>
> wrote:
> >> [...]
> >> > right, that cos^2(x) is not a (single) hypergeometric series. Which is
> >> > fine, there is problem.
> >>
> >> -> there is no problem.
> >>
> >> Ondrej
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "sympy" 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 https://groups.google.com/group/sympy.
> > To view this discussion on the web visit
> >
> https://groups.google.com/d/msgid/sympy/3e750003-cf00-4e6e-8e1c-c032fc7dc037%40googlegroups.com
> .
> >
> > For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "sympy" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sympy/S0MSlsAhL74/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/sympy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/CADDwiVBvFqR6FF3cdn%3Dh9r57xaJk70JM1yQ_M2E91DZ5Rh%2BK0g%40mail.gmail.com
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" 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 https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAEOXDQ2HM9a%3DUUGnk6%2BAZZOnpBpMhyz2Ki-BCEn7oa7qQJKa6A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to