Hi Shubham, On Wed, Feb 24, 2016 at 7:59 AM, shubham tibra <[email protected]> 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 [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/f8add7b7-e38d-4093-80a2-e571a162918b%40googlegroups.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/CADDwiVDBagZbZ3a2H1DG-eJ7ncDpJ6gi13JJKtcUyJYLJLt03g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
