liepde.txt 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. *********************************************************************
  2. * *
  3. * The program LIEPDE for computing point-, contact- and higher *
  4. * order symmetries of individual ODEs/PDEs or systems of ODEs/PDEs *
  5. * *
  6. * Author: Thomas Wolf *
  7. * Date: 20.July 1996 *
  8. * *
  9. *********************************************************************
  10. Before using LIEPDE one must read in CRACK by
  11. in crack$
  12. or better because execution will be quicker:
  13. faslout "crack"$
  14. in crack$
  15. faslend$
  16. faslout "liepde"$
  17. in liepde$
  18. faslend$
  19. bye$
  20. reduce
  21. load crack,liepde$
  22. The program LIEPDE is called with:
  23. liepde(problem,symtype,flist,inequ)$
  24. or, for example:
  25. sym:=liepde(problem,symtype,flist,inequ)$
  26. The input data `problem',`symtype',`flist' and `inequ' are explained below.
  27. problem:
  28. ========
  29. {{eq1,eq2, ...}, % equations
  30. { y1, y2, ...}, % functions
  31. { x1, x2, ...} } % variables
  32. Equations `eqi' can be given as single differential
  33. expressions which have to vanish or they can be given
  34. in the form df(..,..[,..]) = .. .
  35. If the equations are given as single differential
  36. expressions then the program will try to bring it into
  37. the `solved form' ..=.. automatically.
  38. The solved forms (either from input or generated within
  39. LIEPDE) will be used for substitutions, to find
  40. all symmetries satisfied by solutions of the equations.
  41. Sufficient conditions for this procedure to be correct,
  42. i.e. to get *all* symmetries of the specified type on the
  43. solution space are:
  44. - There are equally many equations and functions.
  45. - Each function is used once for a substitution and
  46. each equation is used once for a substitution.
  47. - All functions differentiated on the left hand sides
  48. (lhs) depend on all variables.
  49. - In no equation df(..,..[,..]) = .. does the right hand
  50. side contain the derivative on the lhs nor any
  51. derivative of it.
  52. - No equation does contain a lhs or the derivative
  53. of a lhs of another equation.
  54. These conditions are checked in LIEPDE and execution
  55. is stoped if they are not satisfied, i.e. if the input
  56. was not correct, or if the program was not able to
  57. write the input expressions properly the solved
  58. form ..=.. . One then should find for each function
  59. one derivative which occurs linearly in one equation.
  60. The chosen derivatives should be as high as possible,
  61. at least there must no derivative of them occur in any
  62. equation. An easy way to get the equations in the
  63. desired form is to use
  64. FIRST SOLVE({eq1,eq2,...},{list of derivatives})
  65. NOTE that to improve efficiency it is advisable not to
  66. express lower order derivatives on the left hand side
  67. through higher order derivatives on the right hand side.
  68. SEE also the implications on completeness for the
  69. determination of generalized symmetries with
  70. characteristic functions of a given order, as described
  71. below and the two examples with the Burgers equation.
  72. symtype:
  73. ========
  74. {"point"} % for point symmetries
  75. {"contact"} % for contact symmetries, is only
  76. % applicable if only one function,
  77. % only one equation of order>1
  78. {"general",order} % for generalized symmetries of
  79. % order `order' which is an integer>0
  80. % NOTE: Characteristic functions of
  81. % generalized symmetries (i.e. the
  82. % eta_.. if xi_..=0) are equivalent
  83. % if they are equal on the solution
  84. % manifold. Therefore all dependencies
  85. % of characteristic functions on
  86. % the substituted derivatives and their
  87. % derivatives are dropped. This has the
  88. % consequence that if, e.g. for the heat
  89. % equation df(u,t)=df(u,x,2), df(u,t) is
  90. % substituted by df(u,x,2) then
  91. % {"general",2) would not include
  92. % characteristic functions depending
  93. % on df(u,t,x), or df(u,x,3). THEREFORE:
  94. % If you want to find all symmetries up
  95. % to a given order then
  96. % - either avoid substituting lower
  97. % order derivatives by expressions
  98. % involving higher derivatives, or,
  99. % - go up in the order specified in
  100. % symtype.
  101. %
  102. % Example:
  103. %
  104. % depend u,t,x
  105. % liepde({{df(u,t)=df(u,x,2)+df(u,x)**2},
  106. % {u},{t,x}},
  107. % {"general",3},{})
  108. %
  109. % will give 10 symmetries + one infinite
  110. % family of symmetries whereas
  111. %
  112. % liepde({{df(u,x,2)=df(u,t)-df(u,x)**2},
  113. % {u},{t,x}},
  114. % {"general",3},{})
  115. %
  116. % will give 28 symmetries + one infinite
  117. % family of symmetries.
  118. {xi!_x1 =...,
  119. ...
  120. eta!_y3=... } % - An ansatz must specify all xi!_.. for
  121. % all indep. variables and all eta!_..
  122. % for all dep. variables in terms of
  123. % differential expressions which may
  124. % involve unknown functions/constants.
  125. % The dependencies of the unknown
  126. % functions have to declared earlier
  127. % using the DEPEND command.
  128. % - If the ansatz should consist of the
  129. % characteristic functions then set
  130. % all xi!_..=0 and assign the charac-
  131. % teristic functions to the eta!_.. .
  132. flist:
  133. ======
  134. {- all parameters and functions in the equations which are to
  135. be determined, such that there exist symmetries,
  136. - if an ansatz has been made in symtype then flist contains
  137. all unknown functions and constants in xi!_.. and eta!_..}
  138. inequ:
  139. =======
  140. {all non-vanishing expressions which represent
  141. inequalities for the functions in flist}
  142. Further comments:
  143. =================
  144. The syntax of input is the usual REDUCE syntax. For example, the
  145. derivative of y3 wrt x1 once and x2 twice would be df(y3,x1,x2,2).
  146. --> One exception: If in the equations or in the ansatz the dependence
  147. of a free function F on a derivative, like df(y3,x1,x2,2) shall be
  148. declared then the declaration has to have the form:
  149. DEPEND F, Y3!`1!`2!`2
  150. - the ! has to preceede each special character, like `,
  151. - `i stands for the derivative with respect to the i'th variable in
  152. the list of variables (the third list in the problem above)
  153. If the REDUCE switch TIME is set on with ON TIME then times for the
  154. individual steps in the calculation are shown.
  155. Further switches and parameters which can be changed to affect the
  156. output and performance of CRACK in solving the symmetry conditions
  157. are listed in the file CRINIT.RED.
  158. return list('LIST,'LIST . symcon,'LIST . append(xilist,etalist),
  159. 'LIST . flist);