{VERSION 4 0 "HELP" "4.0"} {USTYLETAB {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 10 0 0 0 0 0 0 -1 0 }} {SECT 0 {PARA 3 "> " 0 "" {TEXT -1 19 "PDEtools[dpolyform]" } {TEXT 30 171 " - given a system of equations, computes an equivalent differential \"polynomial\" system such that the solution of the given system is also a solution of the polynomial one" } } {PARA 4 "> " 0 "usage" {TEXT -1 16 "Calling Sequence" } } {PARA 0 "> " 0 "" {TEXT -1 19 " dpolyform(sys)" } } {PARA 0 "> " 0 "" {TEXT -1 26 " dpolyform(sys, no_Fn)" } } {PARA 0 "> " 0 "" {TEXT -1 32 " dpolyform(sys, no_Fn, opts)" } } {PARA 4 "> " 0 "" {TEXT -1 10 "Parameters" } } {PARA 0 "> " 0 "" {TEXT -1 5 " " } {TEXT 23 8 "sys - " } {TEXT -1 94 "any set or list of Maple expressions or equations; may also be a single expression or equation" } } {PARA 0 "> " 0 "" {TEXT -1 5 " " } {TEXT 23 8 "no_Fn - " } {TEXT -1 119 "specifies that all auxiliary functions _Fn (n integer) introduced in the process should be eliminated before outputting" } } {PARA 0 "> " 0 "" {TEXT -1 5 " " } {TEXT 23 8 "opts - " } {TEXT -1 59 "any optional argument accepted by Maple's casesplit command" } } {SECT 0 {PARA 4 "> " 0 "info" {TEXT -1 11 "Description" } } {PARA 15 "> " 0 "" {TEXT 35 9 "dpolyform" } {TEXT -1 430 " receives an equation, or an expression, understood to be equal to zero, or a set or list of them, and returns a differential polynomial (DP) system of equations, equivalent to the given one in that any solution of the given system is a solution of the returned DP system.This command has enormous potential use in that it allows using the existing methods for polynomial systems (e.g. differential elimination - see for instance " } {HYPERLNK 17 "diffalg" 2 "diffalg" "" }{TEXT -1 2 ", " } {HYPERLNK 17 "DEtools[Rif]" 2 "DEtools[Rif]" "" }{TEXT -1 2 ", " } {HYPERLNK 17 "casesplit" 2 "PDEtools[casesplit]" "" }{TEXT -1 95 ") to tackle non-polynomial systems in a systematic way. To mention but a few, possible uses of " } {TEXT 35 9 "dpolyform" } {TEXT -1 148 " are in the uncoupling of non-polynomial systems of differential or algebraic equations and in the computation of identities for special functions. " } {TEXT 35 9 "dpolyform" } {TEXT -1 160 " is used by Maple's dsolve and pdsolve when tackling ODE and PDE systems, in order to triangularize non-polynomial systems using techniques for polynomial ones." } } {PARA 15 "> " 0 "" {TEXT -1 12 "By default, " } {TEXT 35 9 "dpolyform" } {TEXT -1 240 " is expected to return rather fast, outputting a DP system equivalent to the input system, representing the non-polynomial objects by means of auxiliary functions _Fn(...) (n is an integer) which in turn satisfy DP equations. The output of " } {TEXT 35 9 "dpolyform" } {TEXT -1 336 " thus consists of three lists. The first list contains the DP equations, of the form \"DP_expression = 0\"; the second list consists of inequations of the form \"DP_expression <> 0\"; the third list consists of 'back substitution equations', showing what non-polynomial object is being represented by each auxiliary function _Fn introduced." } } {PARA 15 "> " 0 "" {TEXT -1 482 "By giving the optional argument 'no_Fn', a second process will be run, in order to remove all the _Fn functions introduced in the first step, ending up with a DP system (may be a single DP equation) only involving the unknown functions found in the given input. This system free of auxiliary functions is obtained by running a differential elimination process, ranking all the auxiliary _Fn \"higher\" than the unknown functions present in the input. For details on rankings etc. see " } {HYPERLNK 17 "diffalg[print_ranking]" 2 "diffalg[print_ranking]" "" }{TEXT -1 5 " and " } {HYPERLNK 17 "DEtools[checkrank]" 2 "DEtools[checkrank]" "" }{TEXT -1 1 "." } } {PARA 15 "> " 0 "" {TEXT 35 9 "dpolyform" } {TEXT -1 49 " also accepts the optional arguments accepted by " } {HYPERLNK 17 "casesplit" 2 "PDEtools[casesplit]" "" }{TEXT -1 1 "." } } {PARA 15 "> " 0 "" {TEXT -1 249 "This function is part of the PDEtools package, and so it can be used in the form dpolyform(..) only after executing the command with(PDEtools). However, it can always be accessed through the long form of the command by using PDEtools[dpolyform](..)." } } } {SECT 0 {PARA 4 "> " 0 "examples" {TEXT -1 8 "Examples" } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "with(PDEtools):" } } } {PARA 0 "> " 0 "" {TEXT -1 23 "For ease of reading we " } {HYPERLNK 17 "declare" 2 "PDEtools[declare]" "" }{TEXT -1 108 " these functions to be displayed in a compact way and also derivatives will be displayed as indexed objects " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "declare(g(x,y), _F1(x,y), _F2(x,y), _F3(x,y));" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#%D~g(x,y)~will~now~be~displayed~as~g~G "}}{PARA 11 "> " 1 "" {XPPMATH 20 "6#%H~_F1(x,y)~will~now~be~displayed~as~_F1~G "}}{PARA 11 "> " 1 "" {XPPMATH 20 "6#%H~_F2(x,y)~will~now~be~displayed~as~_F2~G "}}{PARA 11 "> " 1 "" {XPPMATH 20 "6#%H~_F3(x,y)~will~now~be~displayed~as~_F3~G "}}} {PARA 0 "> " 0 "" {TEXT -1 53 "Consider now the following non-polynomial expression " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "e1 := g(x,y) = exp(2*x+y^(1/2));" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%#e1G/%\"gG-%$expG6#,&%\"xG\"\"#*$%\"yG#\"\"\"F,F0 "}}} {PARA 0 "> " 0 "" {TEXT -1 68 "A differential polynomial system (DPS) equivalent to e1 is given by " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "DPS := dpolyform(e1);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%$DPSG6%7'/,&%\"gG\"\"\"%$_F1G!\"\"\"\"!/,&*&%$_F2GF*&F+6#%\"yGF*\" \"#F+F,F-/,&&F+6#%\"xGF*F+!\"#F-/,&*$F1F5F*F4F,F-/&F1F9F-7$0F1F -0F+F-7$/F1*$F4#F*F5/F+-%$expG6#,&F:F5FFF* "}}} {PARA 0 "> " 0 "" {TEXT -1 68 "To see the expression above in the usual Maple format use the macro " } {HYPERLNK 17 "show" 2 "PDEtools[declare]" "" }{TEXT -1 1 " " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "show;" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6%7'/,&-%\"gG6$%\"xG%\"yG\"\"\"-%$_F1GF(!\"\"\"\"!/,&*&-%$_F2GF(F+-%%d iffG6$F,F*F+\"\"#F,F.F//,&-F66$F,F)F+F,!\"#F//,&*$F3F8F+F*F.F// -F66$F3F)F/7$0F3F/0F,F/7$/F3*$F*#F+F8/F,-%$expG6#,&F)F8FIF+ "}}} {PARA 0 "> " 0 "" {TEXT -1 293 "Now, in the above there is a sequence of 3 lists. The first list contains the \"Equations\" of the problem; the second list contains the \"Inequations\" and the third list contains the \"back-substitution equations\", telling which non-polynomial object is represented by each auxiliar function _Fn." } } {PARA 0 "> " 0 "" {TEXT -1 117 "Concerning the lists of equations and inequations, two remarks are in order. In the first place, the DPS returned by " } {TEXT 35 9 "dpolyform" } {TEXT -1 203 " represents an expression a bit more general than the given input. For example, to exactly represent exp(2*x+sqrt(y)) polynomially, one would need to introduce initial conditions for the DPS returned by " } {TEXT 35 9 "dpolyform" } {TEXT -1 375 ". In second place, while performing differential elimination - or, for the case, various other manipulations on the DPS returned - there is no problem in computing with a system a bit more general than the given input, provided that in the end all the functions _F1, _F2, ... are replaced by the restricted objects they represent (the back substitution equations returned by " } {TEXT 35 9 "dpolyform" } {TEXT -1 2 ")." } } {PARA 0 "> " 0 "" {TEXT -1 119 "To obtain a DPS satisfied by e1 which, in turn, \"only involves the original unknowns\" (i.e.: no _F1, _F2) one can call " } {TEXT 35 9 "dpolyform" } {TEXT -1 107 " with the optional argument 'no_Fn'. In such a case the output will have the same format as the one by the " } {HYPERLNK 17 "casesplit" 2 "PDEtools[casesplit]" "" }{TEXT -1 10 " command: " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "dpolyform(e1,no_Fn);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#-%'&whereG6$7$/&%\"gG6#%\"xG,$F)\"\"#/*$&F)6#%\"yGF-,$*&F)F-F2! \"\"#\"\"\"\"\"%7#0F0\"\"! "}}} {PARA 0 "> " 0 "" {TEXT -1 6 "As in " } {HYPERLNK 17 "casesplit" 2 "PDEtools[casesplit]" "" }{TEXT -1 57 ", the '&where' in the display above is obtained using a `" } {HYPERLNK 17 "print" 2 "print" "" }{TEXT -1 137 "/foo` mechanism. The real structure of this result is of the form `casesplit/ans`( [ equations ], [ inequations ] ), and can be seen via " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "lprint(%);" } } {PARA 2 "> " 1 "" {TEXT -1 102 "`casesplit/ans`([diff(g(x,y),x) = 2*g(x,y), diff(g(x,y),y)^\n2 = 1/4*g(x,y)^2/y],[diff(g(x,y),y) <> 0])" } } } {PARA 0 "> " 0 "" {TEXT -1 42 "To verify that this non-linear PDE system " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "pde_sys := op(1,%);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%(pde_sysG7$/&%\"gG6#%\"xG,$F(\"\"#/*$&F(6#%\"yGF,,$*&F(F,F1!\" \"#\"\"\"\"\"% "}}} {PARA 0 "> " 0 "" {TEXT -1 53 "for g(x,y) is satisfied by e1, one can use the Maple " } {HYPERLNK 17 "pdetest" 2 "pdetest" "" }{TEXT -1 9 " command " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "{e1};" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#<#/%\"gG-%$expG6#,&%\"xG\"\"#*$%\"yG#\"\"\"F+F/ "}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "pdetest( %, pde_sys);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#7$\"\"!F$ "}}} {PARA 0 "> " 0 "" {TEXT -1 119 "Note that, as mentioned, while the solution of the given expression e1 is included in the solution of the DP output by " } {TEXT 35 9 "dpolyform" } {TEXT -1 200 ", the opposite is not true: the solution of the DP problem is a bit more general: it contains an arbitrary constant, and, due its non-linear character, this DP system also admits a singular solution: " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "pdsolve(pde_sys);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6$<#/%\"gG\"\"!<#/F%*(%$_C1G\"\"\"-%$expG6#*$%\"yG#F+\"\"#F+-F-6#,$%\" xGF2F+ "}}} {PARA 0 "> " 0 "" {TEXT -1 143 "Moreover, e1 is not included in the singular solution g=0. One manner of assure obtaining a solution such that e1 is included in it is to call " } {HYPERLNK 17 "pdsolve" 2 "pdsolve" "" }{TEXT -1 103 " with the option 'singsol'=false; this will force to automatically discard possible singular solutions." } } {PARA 0 "> " 0 "" {TEXT 35 9 "dpolyform" } {TEXT -1 291 " can handle systems of equations containing most of the functions known to Maple, fractional or abstract powers etc. A useful side effect of this is that, by asking for \"the DP form of a Special function\" one actually receives the polynomial differential equation it satisfies. For example, " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "declare(f(x), y(x), prime=x);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#%B~f(x)~will~now~be~displayed~as~f~G "}}{PARA 11 "> " 1 "" {XPPMATH 20 "6#%B~y(x)~will~now~be~displayed~as~y~G "}}{PARA 11 "> " 1 "" {XPPMATH 20 "6#%dpderivatives~with~respect~to:~x~of~functions~of~one~vari able~will~now~be~displayed~with~'~G "}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "y(x) = BesselJ(n,x);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/%\"yG-%(BesselJG6$%\"nG%\"xG "}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "dpolyform(%, no_Fn);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#-%'&whereG6$7#/%$y''G,&*&%\"xG!\"\"%#y'G\"\"\"F,*(,&*$F+\"\"#F,*$% \"nGF2F.F.F+!\"#%\"yGF.F.7#0F6\"\"! "}}} {PARA 0 "> " 0 "" {TEXT -1 28 "For the following, see also " } {HYPERLNK 17 "hypergeom" 2 "hypergeom" "" }{TEXT -1 5 " and " } {HYPERLNK 17 "DEtools[hyperode]" 2 "DEtools[hyperode]" "" }{TEXT -1 1 " " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "y(x) = hypergeom( [a,b], [c], f(x));" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/%\"yG-%*hypergeomG6%7$%\"aG%\"bG7#%\"cG%\"fG "}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "dpolyform(%, [y,f], no_Fn);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#-%'&whereG6$7#/%$y''G,(*(%#y'G\"\"\"%#f'G!\"\"%$f''GF,F,*,%\"bGF ,%\"aGF,%\"yGF,,&%\"fGF.*$F5\"\"#F,F.F-F7F.**,&*&,(F2F.F1F.F.F,F, F5F,F,%\"cGF,F,F4F.F+F,F-F,F,7$0F3\"\"!0F-F? "}}} {PARA 0 "> " 0 "" {TEXT -1 128 "In the input above, [y, f] means that we want y(x) expressed as a function of f(x); (if not given, this ordering will depend on " } {HYPERLNK 17 "casesplit" 2 "PDEtools[casesplit]" "" }{TEXT -1 13 " heuristics)." } } {PARA 0 "> " 0 "" {TEXT -1 28 "For the following, see also " } {HYPERLNK 17 "MeijerG" 2 "MeijerG" "" }{TEXT -1 5 " and " } {HYPERLNK 17 "DEtools[hyperode]" 2 "DEtools[hyperode]" "" }{TEXT -1 1 " " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "y(x) = MeijerG( [[a],[b]], [[c],[d]], f(x));" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/%\"yG-%(MeijerGG6%7$7#%\"aG7#%\"bG7$7#%\"cG7#%\"dG%\"fG "}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "dpolyform(%, y(x), no_Fn);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#-%'&whereG6$7#/%$y''G,(*(%#y'G\"\"\"%#f'G!\"\"%$f''GF,F,*(,&*(, **&%\"aGF,%\"bGF,F.F.F,F5F,F6F,F,%\"yGF,%\"fGF,F,*(F7F,%\"cGF,%\"d GF,F,F,,&*$F8\"\"#F.*$F8\"\"$F,F.F-F>F,**,&*&,(F6F,F5F,!\"$F,F,F8 F>F,*&,(F,F,F:F.F;F.F,F8F,F,F,F " 0 "" {TEXT -1 189 "In the input above, 'y(x)' means that in the output we want y(x) expressed as a function of the other unknowns of the system (here f(x)); this is equivalent to giving [y,f] or [y(x), f(x)]." } } {PARA 0 "> " 0 "" {TEXT -1 43 "It is evident from the last two results by " } {TEXT 35 9 "dpolyform" } {TEXT -1 164 " that, for some values of a,b,c,d and f(x) there is a relation between the hypergometric and the more general MeijerG functions. This relation is actually given by " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 76 "hypergeom([a,b],[c],f(x)) = convert( hypergeom([a,b],[c],f(x)), MeijerG, x);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/-%*hypergeomG6%7$%\"aG%\"bG7#%\"cG%\"fG**-%&GAMMAG6#F+\"\"\"-F/6 #F(!\"\"-F/6#F)F4-%(MeijerGG6%7$7$,&F)F4F1F1,&F1F1F(F47\"7$7#\"\" !7#,&F1F1F+F4,$F,F4F1 "}}} {PARA 0 "> " 0 "" {TEXT -1 108 "More complicated cases are handled too, for instance, the complete Elliptic integral of the third kind (see " } {HYPERLNK 17 "EllipticPi" 2 "EllipticPi" "" }{TEXT -1 2 ") " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "P(nu,k) = EllipticPi(nu,k);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/-%\"PG6$%#nuG%\"kG-%+EllipticPiGF& "}}} {PARA 0 "> " 0 "" {TEXT -1 61 "is represented in DP form not by an ODE but by a PDE system: " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "dpolyform(%,no_Fn);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#-%'&whereG6$7%/&%\"PG6$%#nuGF+,(*,,**&%\"kG\"\"#F+\"\"\"!\"%*$F0F1 F2*$F+F1\"\"&F+!\"#F2F+!\"\",&F8F2F+F2F8,&F4F2F+F8F8&F)6#F+F2#F2F 1*,,&F0F2*$F0\"\"$F8F2F+F8F9F8F:F8&F)6#F0F2F=*,,&F4F8F+F2F2F+F 8F9F8F:F8-F)6$F+F0F2F=/&F)6$F0F+,&*(F:F8F;F2F0F2F8*&F:F8FBF2 F2/&F)6$F0F0,(**F+F2F9F2,**$F0\"\"%F2F/F8F4F8F+F2F8F;F2F1*(,(F T!\"$*&,&F+F2F2F2F2F0F1F2F+F2F2,(*$F0F6F2*&,&F+F8F8F2F2F0FAF2 *&F0F2F+F2F2F8FBF2F2*(FEF2,(FTF2*&FhnF2F0F1F2F+F2F8FFF2F27#0 FF\"\"! "}}} {PARA 0 "> " 0 "" {TEXT -1 9 "By using " } {TEXT 35 9 "dpolyform" } {TEXT -1 341 " to obtain the differential equation satisfied by a given expression, it is possible to establish identities for special functions, or relations between them and simpler Liouvillian (e.g. elementary exp, trig, etc..) functions. As an easy example illustrating the mechanism, consider - say y(x) - being the following hypergeometric function " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "a3 := y(x) = hypergeom([1],[2],-2*I*x);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%#a3G/%\"yG-%*hypergeomG6%7#\"\"\"7#\"\"#*&^#!\"#F+%\"xGF+ "}}} {PARA 0 "> " 0 "" {TEXT -1 69 "A polynomial (in this case linear) ODE satisfied by y(x) is given by " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "e3 := dpolyform(a3, no_Fn);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%#e3G-%'&whereG6$7#/%$y''G,&*(,&*&^#!\"#\"\"\"%\"xGF1F1F0F1F1F 2!\"\"%#y'GF1F1*(F/F1F2F3%\"yGF1F17#0F6\"\"! "}}} {PARA 0 "> " 0 "" {TEXT -1 117 "The ODE above also has a solution in terms of Liouvillian functions (can be obtained using Kovacic's algorithm - see " } {HYPERLNK 17 "DEtools[kovacicsols]" 2 "DEtools[kovacicsols]" "" }{TEXT -1 2 ") " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "op([1,1],e3);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/%$y''G,&*(,&*&^#!\"#\"\"\"%\"xGF+F+F*F+F+F,!\"\"%#y'GF+F+*(F)F+F ,F-%\"yGF+F+ "}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "a3_bis := dsolve(%,[Kovacic]);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%'a3_bisG/%\"yG,&*&%$_C1G\"\"\"%\"xG!\"\"F**(%$_C2GF*F+F,-%$expG 6#*&^#!\"#F*F+F*F*F* "}}} {PARA 0 "> " 0 "" {TEXT -1 304 "This means that the hypergeometric function appearing in a3 is equal to the right-hand-side of a3_bis for some particular values of _C1 and _C2. The actual values of _C1 and _C2 can be obtained by expanding in series. For that purpose, first we build an expression equating a3 to the solution of the ODE " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "e4 := a3 - a3_bis;" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%#e4G/\"\"!,(-%*hypergeomG6%7#\"\"\"7#\"\"#*&^#!\"#F,%\"xGF,F,*&%$ _C1GF,F2!\"\"F5*(%$_C2GF,F2F5-%$expG6#F/F,F5 "}}} {PARA 0 "> " 0 "" {TEXT -1 105 "Next we compute the series of the right-hand-side, in this case it suffices to compute it up to order 2: " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "series(rhs(e4),x,2);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#+)%\"xG,&%$_C2G!\"\"%$_C1GF'F',&*&^#\"\"#\"\"\"F&F-F-F-F-\"\"!-%\"OG6 #F-F- "}}} {PARA 0 "> " 0 "" {TEXT -1 82 "Now, in order to solve for _C1, _C2, we build a system with the coefficients of x " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "sys := {coeffs(convert(%,polynom),x)};" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%$sysG<$,&*&^#\"\"#\"\"\"%$_C2GF*F*F*F*,&F+!\"\"%$_C1GF- "}}} {PARA 0 "> " 0 "" {TEXT -1 20 "finally arriving at " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "ans_C := solve(sys,{_C1,_C2});" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%&ans_CG<$/%$_C2G^##\"\"\"\"\"#/%$_C1G^##!\"\"F+ "}}} {PARA 0 "> " 0 "" {TEXT -1 323 "It can be proved that this solution for _C1 and _C2 is independent of the order of the series (this will always be the case when dealing with linear ODEs and provided that the system \"sys\" includes all the unknowns _Cn). At these values of _C1, _C2, our equation relating hypergeom([1],[2],-2*I*x) with exp(-2*I*x) becomes " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "eval(e4,ans_C);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/\"\"!,(-%*hypergeomG6%7#\"\"\"7#\"\"#*&^#!\"#F*%\"xGF*F**&^##F*F,F *F0!\"\"F**(^##F4F,F*F0F4-%$expG6#F-F*F* "}}} {PARA 0 "> " 0 "" {TEXT -1 103 "from where the hypergeometric function can be isolated, resulting in the identity we were looking for: " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "isolate(%,hypergeom([1],[2],-2*I*x));" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/-%*hypergeomG6%7#\"\"\"7#\"\"#*&^#!\"#F(%\"xGF(,&*&^##!\"\"F*F(F.F 3F(*(^##F(F*F(F.F3-%$expG6#F+F(F( "}}} {PARA 0 "> " 0 "" {TEXT -1 129 "That this relation is correct can be verified - in this easy case - by means of a \"black box, table-lookup approach\", e.g. using " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "convert(%,StandardFunctions);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#/,&*&^##!\"\"\"\"#\"\"\"%\"xGF(F**(^##F*F)F*F+F(-%$expG6#*&^#!\"#F* F+F*F*F*F$ "}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "(lhs-rhs)(%);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#\"\"! "}}} {PARA 0 "> " 0 "" {TEXT -1 544 "The approach just discussed however does not rely on table lookups and can be used in general, provided that Maple can compute the series of the expressions involved. When the right-hand-side of the departing expression ('a3' in the example above) is an integral, this approach is useful for computing its exact value when both the integral can be expanded in series and its differential polynomial form can be solved exactly. In the same way, the approach can be used to compute identities between different special functions by indicating to " } {HYPERLNK 17 "dsolve" 2 "dsolve" "" }{TEXT -1 205 " to solve the DP problem using different solving methods (e.g. first using method 'hypergeometric' or 'MeijerG', and then tackling the same problem using method 'Bessel' or 'Whittaker' or 'elliptic' etc.)." } } {PARA 0 "> " 0 "" {TEXT -1 31 "Finally, it is possible to use " } {TEXT 35 9 "dpolyform" } {TEXT -1 157 " to tackle \"algebraic\" (non-differential) systems as well. As an example of this consider the following non-polynomial, non-differential system of equations " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "declare(z(x));" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#%B~z(x)~will~now~be~displayed~as~z~G "}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "sys := [y(x)^2+z(x)^2=1, exp(y(x))^2-ln(z(x)^2)=0];" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%$sysG7$/,&*$%\"yG\"\"#\"\"\"*$%\"zGF*F+F+/,&*$-%$expG6#F)F*F+-% #lnG6#F,!\"\"\"\"! "}}} {PARA 0 "> " 0 "" {TEXT -1 277 "where we want to solve for y(x) and z(x). The idea is: first compute a differential polynomial form for 'sys'; its solution will include the solution of sys for some particular value of the integration constant(s) involved. (Note: we introduce functions of 't' to compute with " } {TEXT 35 9 "dpolyform" } {TEXT -1 88 ", but the actual problem does not involve t or other variables.) The first step is then " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "DPS := dpolyform(sys, [z,y], no_Fn);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%$DPSG-%'&whereG6$7$/%#y'G\"\"!/*$%\"zG\"\"#,&*$%\"yGF/!\"\"\"\"\"F4 7#0F.F+ "}}} {PARA 0 "> " 0 "" {TEXT -1 57 "where [y,x] means we want y expressed as a function of x." } } {PARA 0 "> " 0 "" {TEXT -1 46 "Second, we tackle the resulting DP ODE system " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "map(op,[op(DPS)]);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#7%/%#y'G\"\"!/*$%\"zG\"\"#,&*$%\"yGF*!\"\"\"\"\"F/0F)F& "}}} {PARA 0 "> " 0 "" {TEXT -1 190 "avoiding singular solutions (the solution to the original system \"sys\", is included in the solution of the DPS above, but not necessarily included in the singular solutions of the DPS). So, " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "sol_DPS := dsolve(%, explicit, singsol=false);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%(sol_DPSG6$<$/%\"zG*$,&*$%$_C1G\"\"#!\"\"\"\"\"F/#F/F-/%\"yGF,<$F 1/F(,$F)F. "}}} {PARA 0 "> " 0 "" {TEXT -1 198 "To determine the particular value of _C1 which solves the original non-differential system 'sys', we substitute x and y into sys using the solution above, for instance,taking the first solution set " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "eval(sys, sol_DPS[1]);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#7$/\"\"\"F%/,&*$-%$expG6#%$_C1G\"\"#F%-%#lnG6#,&*$F,F-!\"\"F%F%F3 \"\"! "}}} {PARA 0 "> " 0 "" {TEXT -1 116 "The first equation is identically satisfied, so the value of _C1 is obtained by solving for it the second equation: " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "sol_C := solve(%[2],{_C1});" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%&sol_CG<#/%$_C1G-%'RootOfG6#,&*$-%$expG6#%#_ZG\"\"#\"\"\"-%#l nG6#,&*$F0F1!\"\"F2F2F8 "}}} {PARA 0 "> " 0 "" {TEXT -1 75 "The solution we are seeking for the original system 'sys' is then given by " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "sol_sys := eval(sol_DPS[1],sol_C);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#>%(sol_sysG<$/%\"zG*$,&*$-%'RootOfG6#,&*$-%$expG6#%#_ZG\"\"#\" \"\"-%#lnG6#,&*$F3F4!\"\"F5F5F;F4F;F5F5#F5F4/%\"yGF+ "}}} {PARA 0 "> " 0 "" {TEXT -1 145 "Although this result is correct by construction, it can anyway be tested, for instance using the testing tool for differential equations odetest " } } {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "odetest(sol_sys, sys);" } } {PARA 11 "> " 1 "" {XPPMATH 20 "6#7$\"\"!F$ "}}} } {SECT 0 {PARA 4 "> " 0 "seealso" {TEXT -1 9 "See Also " } } {PARA 0 "> " 0 "" {HYPERLNK 17 "casesplit" 2 "PDEtools[casesplit]" "" }{TEXT -1 2 ", " } {HYPERLNK 17 "hyperode" 2 "DEtools[hyperode]" "" }{TEXT -1 2 ", " } {HYPERLNK 17 "DEtools" 2 "DEtools" "" }{TEXT -1 2 ", " } {HYPERLNK 17 "PDEtools" 2 "PDEtools" "" }{TEXT -1 2 ", " } {HYPERLNK 17 "diffalg" 2 "diffalg" "" }{TEXT -1 2 ", " } {HYPERLNK 17 "DEtools[Rif]" 2 "DEtools[Rif]" "" }} }}