Hi Shubham,
On Wed, Feb 24, 2016 at 7:59 AM, shubham tibra <
shubh...@gmail.com> wrote:
> Hi,
> I am interested in this project and went through the references mentioned in
> the ideas page.
Excellent. Ralf already answered most of your questions, so let me
just answer the rest.
>
> From What I understood, We are going to represent the holonomic function in
> the form of it's differential equation and will use numerical integration
> methods to find values of the function at a required points. Can all the
The numerical integration will only be used if the user wants a
numerical value at a point, i.e. when the user calls `.n()` on it.
Otherwise we want to manipulate the holonomic function symbolically.
> operations listed on Ideas page be implemented without getting the symbolic
> form of the function when it is solvable?
Yes, all these:
* addition
* multiplication
* power
* application of holonomic function to an algebraic one
* differentiation
* integration
* numerical evaluation for any complex value of x
Can be done for any holonomic function, at least that is my
understanding. I provided links on the wiki page to papers with the
actual algorithms, check them out and let me know what you think.
> And regarding the conversion of Holonomic to Hypergeometric function, we
> need to expand the holonomic function to a power series. How we can do that
> without having the actual symbolic representation of the function?
As Ralf said, you can get a recurrence relation of the Taylor
coefficients. The ore_algebra package in Sage does it, for example, or
lookup the other papers I link.
So this recurrence relation allows you to evaluate any Taylor
coefficient. I think there should be a way to obtain a ratio of those,
in order to recover a hypergeometric function.
Also in some cases, one can solve the recurrence relation to obtain a
closed form formula for the Taylor series, I think that's possible in
simple cases like sin(x) or cos(x). That would also be useful to have.
But mainly, we need to figure out how to robustly convert to a
hypergeometric function, because then we can reuse the SymPy's
hyperexpand.
>
> How we will handle the special cases when the Holonomic function represents
> an elementary function or a polynomial?
As Ralf said, most of these are hypergeometric functions, so those
cases are already covered. For holonomic functions that are not
hypergeometric, but that still have a representation in terms of more
elementary functions, we'll have to do some kind of pattern matching,
or a database. Or possibly our differential equation solver dsolve()
can do some of those cases.
Another application that I have in mind is definite integration. I
think you can literally subtract the two endpoints of a holonomic
function (the antiderivative), so then we just need to be able to
symbolically evaluate the holonomic function at a point. I don't know
if there are algorithms for that. Another perhaps a better option is
to convert the integrand, which is a holonomic function, to a
hypergeometric or MeijerG (or a product of two MeijerG) functions. And
then reuse the robust definite integration of those from sympy. In
other words, my hope is that holonomic functions will greatly help in
rewriting any expression into hypergeometric or MeijerG functions,
which currently is very heuristic and sometimes doesn't work.
Let me know if you have more questions.
Ondrej
>
> Thanks
> Shubham
>
> On Friday, February 19, 2016 at 2:01:16 PM UTC+5:30, Ondřej Čertík wrote:
>>
>> Hi,
>>
>> I've added a project idea here:
>>
>>
>>
https://github.com/sympy/sympy/wiki/GSoC-2016-Ideas#implement-holonomic-functions
>>
>> I would really like to have this capability in SymPy.
>>
>> I think it should allow a robust symbolic integration of a large class
>> of functions, as well as analytic series expansion (having a
>> recurrence relation for the Taylor coefficients, and there are
>> algorithms to get a closed formula from it).
>>
>> 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
sympy+un...@googlegroups.com.
> To post to this group, send email to
sy...@googlegroups.com.
> 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/f8add7b7-e38d-4093-80a2-e571a162918b%40googlegroups.com.
>
> For more options, visit
https://groups.google.com/d/optout.