Hi Ondrej, thank you for your response. ore_algebra in Sage has implemented `annihilator_of_composition` which finds annihilator of a holonomic function after application with an algebraic function but doesn't support initial conditions.
Do we want to get initial conditions of the resulting function when we will implement this operation or just the annihilator? For instance, we have a holonomic function `sin(x)` defined by diff. eq. and we want to apply this with the function z(x) = x**2 - 4 f(x) = holonomic(diff(diff(f)) + f, f(0) = 0, f'(0) = 1, x) g(x) = f(z(x)) = f(x**2 - 4) g'(x) = f'(z(x))*z'(x) -(1) Now, as we have value of f(x) at the point 0, we find the point where z(x) is 0 which is x = 2 or -2, if we take x=2 we have g(2) = 0, for finding g'(2) we put x = 2 in equation(1) so g'(2) = (1)*(2*2) = 4, and the annihilator of g will be obtained by the algorithm which we will be implemented. Is this method decent enough for implementing, if we need the initial conditions? I had some other problems, if you can please take a look at my previous post in this same thread that'd be very helpful. I thought about the API and liked the way gfun does it in maple. I thought of something like this, initial condition will be given as a list [ f(x0), f'(x0), ... ]. In []: holonomic(diffeq, x, initial_condition, x0 = 0) Out[]:holonomic(diffeq, x, f(x0) = f1, .... ) Is it possible to provide initial conditions like this way: In []:holonomic(diffeq, x, f(x0) = f1, f(x1) = f2 .... ) Out[]:holonomic(diffeq, x, f(x0) = f1, .... ) where we can provide initial conditions as f(x0) = x1. We can also provide annihilators instead of differential equation as in sage. Which way will be more preferred for it's use in SymPy? On Monday, March 7, 2016 at 9:49:09 PM UTC+5:30, Ondřej Čertík wrote: > On Sun, Mar 6, 2016 at 12:42 AM, shubham tibra <[email protected] > <javascript:>> wrote: > > Regarding the initial conditions in multiplication and addition when > they > > are not at the same point: > > > > I think the best is(already discussed at ideas page) first to check if > both > > the given holonomic functions are elementary function and calculate the > > initial conditions at a same point symbolically, where both the > functions > > doesn't have a pole. So for the resulting function the initial condition > > would be addition/multiplication of calculated conditions at that point. > > > > In case when one or both can't be converted to elementary we will > calculate > > numerical value at a point and add/multiply them. > > Right. The numerical initial condition is the last resort, as at that > point, we can't really convert it back to a symbolic form. But I think > it's still useful, since if you know the holonomic function, but not > the initial condition (or only numerically), this still restricts what > the function looks like. For example the differential equation f''(x) > + f(x) = 0 always has a solution of the form sin(a*x+b), so you know > that the function is a sinusoid, you just don't know the exact > parameters "a" and "b" without the initial condition, or only know > them numerically, so you can't convert it to, say, sin(x), but the > result is still useful. > > > > > How are we gonna do this in INTEGRATION and DIFFERENTIATION? > > > > In application with a algebraic function, let's say we have initial > > condition at x0, then if it's possible we can get the point where the > > algebraic function is equals to x0, let it be x1 ,and now we have the > > initial condition of resulting function at the point x1. For derivatives > we > > will multiply the given initial condition with the corresponding > derivative > > of algebraic function at x1. Is this method suitable enough? > > I don't understand your question. Can you formulate it on a particular > example? > > Ondrej > > > > > I'd appreciate to know your views on it. > > > > Thanks > > > > -- > > 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] <javascript:>. > > To post to this group, send email to [email protected] > <javascript:>. > > 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/21859ab1-f780-4d91-9e22-7f7303a47ad4%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/9e3ec6ba-2e02-448e-b3c0-784fb2cc408e%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
