(* Copyright INRIA and Microsoft Corporation, 2008-2013. *)(* DDMF is distributed under CeCILL-B license. *)(* The service LocalSolutionsPoint computes all transseries solutions *)(* of a differential equation at some given point. A transseries *)(* solution consists of a Puiseux series of log-power type, multiplied *)(* by some exponential factor and a power factor x^alpha with alpha an *)(* algebraic number. *)(* Here is an overview how several services call each other to compute *)(* the local solutions of a differential equation at some point: *)(* LocalSolutionsPoint: transseries solutions at an arbitrary point *)(* -> LocalSolutionsOrigin: transseries solutions at the origin *)(* -> LogSeriesAlpha: log-power series with x^alpha factor *)(* -> LogSeriesZero: log-power series solutions *)INCLUDE"preamble.ml"lettitle (_, _, _, point, _, _) = <:text<LocalSolutionsat <:isymb<$(point)>>>>(* Compute all transseries solutions of a differential equation *)(* at a given point (the point is encoded by the given transformation. *)(* The functions u[i](n) are used to denote the coefficient sequences *)(* in the series expansions. *)let_serviceLocalSolutionsPoint(eqn : diffeq maple) (y : name maple) (x : name maple) (transf_display : any maple) (u : name maple) (n : name maple) :DC.sec_entities * any maplewith{ title = title } =lettransf = <<DDMF:-dynamow_to_maple($(transf_display)) >>inletpoint = << solve($(transf) = 0, $(x)) >>inletpoint =if<:bool< [$(point)] = [] >>then<< infinity >>elsepointinletintro = <:par<Onthis page, a basisoflocal solutionsofthe differential equation <:dmath< $(symb: eqn) = 0 >> at the expansion point <:isymb< $(point) >> is obtained by closely following theFrobeniusmethodasdescribedin$(t_ent:Bibliography.b"vH01"). >>in(* Transform the differential equation such as to move the *)(* expansion point to the origin. *)letinv_transf = << proc(x) local v; subs(v=x, solve($(transf) = v, x))endproc($(x)) >>inletas_transf =if<:bool< $(point) = infinity >>then<< $(y)($(x)) * $(x) - $(transf) * $(x) >>else<< $(y)($(x)) - $(inv_transf) >>inlettrans_eqn = << collect( evala(gfun:-algebraicsubs($(eqn), $(as_transf), $(y)($(x)))), {diff, $(y)}, factor) >>inletmove_text =if<:bool< $(point) = 0 >>then<:par<>>else<:par<Thefirst step consistsinmoving the expansion pointtothe origin, which is achieved by meansofthe transformation <:imath< $(symb: x) \mapsto $(symb: inv_transf) >>.Thetransformed differential equation is <:dmath< $(symb: trans_eqn) = 0. >> >>in(* Compute the local solutions at the origin of the transformed equation *)(* and update the result by moving the expansion point back. *)letcontent, basis =LocalSolutionsOrigin.doc_obj trans_eqn y x u nin<:unit< proc() local i;fori from 1tonops($(basis))do$(basis)[i]:-exp_factor := subs($(x) = $(transf_display), $(basis)[i]:-exp_factor); $(basis)[i]:-finite_part := subs($(x) = $(transf_display), $(basis)[i]:-finite_part); $(basis)[i]:-variable := subs($(x) = $(transf_display), $(basis)[i]:-variable);enddo;endproc() >>;letback_text =if<:bool< $(point) = 0 >>then<:par<>>else<:par<Inthe following it is described how the local solutionsofthis equation at the origin are computed; local solutionsofthe original equation are obtained by substituting <:isymb< $(x) >> by <:isymb< $(transf_display) >>. >>inDC.section (title _req_params) (intro @@@ move_text @@@ back_text @@@ content), basis

Generated by GNU Enscript 1.6.5.90.