123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- *********************************************************************
- * *
- * The program LIEPDE for computing point-, contact- and higher *
- * order symmetries of individual ODEs/PDEs or systems of ODEs/PDEs *
- * *
- * Author: Thomas Wolf *
- * Date: 20.July 1996 *
- * *
- *********************************************************************
- Before using LIEPDE one must read in CRACK by
- in crack$
- or better because execution will be quicker:
- faslout "crack"$
- in crack$
- faslend$
- faslout "liepde"$
- in liepde$
- faslend$
- bye$
- reduce
- load crack,liepde$
- The program LIEPDE is called with:
- liepde(problem,symtype,flist,inequ)$
- or, for example:
- sym:=liepde(problem,symtype,flist,inequ)$
- The input data `problem',`symtype',`flist' and `inequ' are explained below.
- problem:
- ========
- {{eq1,eq2, ...}, % equations
- { y1, y2, ...}, % functions
- { x1, x2, ...} } % variables
- Equations `eqi' can be given as single differential
- expressions which have to vanish or they can be given
- in the form df(..,..[,..]) = .. .
- If the equations are given as single differential
- expressions then the program will try to bring it into
- the `solved form' ..=.. automatically.
- The solved forms (either from input or generated within
- LIEPDE) will be used for substitutions, to find
- all symmetries satisfied by solutions of the equations.
- Sufficient conditions for this procedure to be correct,
- i.e. to get *all* symmetries of the specified type on the
- solution space are:
- - There are equally many equations and functions.
- - Each function is used once for a substitution and
- each equation is used once for a substitution.
- - All functions differentiated on the left hand sides
- (lhs) depend on all variables.
- - In no equation df(..,..[,..]) = .. does the right hand
- side contain the derivative on the lhs nor any
- derivative of it.
- - No equation does contain a lhs or the derivative
- of a lhs of another equation.
-
- These conditions are checked in LIEPDE and execution
- is stoped if they are not satisfied, i.e. if the input
- was not correct, or if the program was not able to
- write the input expressions properly the solved
- form ..=.. . One then should find for each function
- one derivative which occurs linearly in one equation.
- The chosen derivatives should be as high as possible,
- at least there must no derivative of them occur in any
- equation. An easy way to get the equations in the
- desired form is to use
- FIRST SOLVE({eq1,eq2,...},{list of derivatives})
- NOTE that to improve efficiency it is advisable not to
- express lower order derivatives on the left hand side
- through higher order derivatives on the right hand side.
- SEE also the implications on completeness for the
- determination of generalized symmetries with
- characteristic functions of a given order, as described
- below and the two examples with the Burgers equation.
- symtype:
- ========
- {"point"} % for point symmetries
- {"contact"} % for contact symmetries, is only
- % applicable if only one function,
- % only one equation of order>1
- {"general",order} % for generalized symmetries of
- % order `order' which is an integer>0
- % NOTE: Characteristic functions of
- % generalized symmetries (i.e. the
- % eta_.. if xi_..=0) are equivalent
- % if they are equal on the solution
- % manifold. Therefore all dependencies
- % of characteristic functions on
- % the substituted derivatives and their
- % derivatives are dropped. This has the
- % consequence that if, e.g. for the heat
- % equation df(u,t)=df(u,x,2), df(u,t) is
- % substituted by df(u,x,2) then
- % {"general",2) would not include
- % characteristic functions depending
- % on df(u,t,x), or df(u,x,3). THEREFORE:
- % If you want to find all symmetries up
- % to a given order then
- % - either avoid substituting lower
- % order derivatives by expressions
- % involving higher derivatives, or,
- % - go up in the order specified in
- % symtype.
- %
- % Example:
- %
- % depend u,t,x
- % liepde({{df(u,t)=df(u,x,2)+df(u,x)**2},
- % {u},{t,x}},
- % {"general",3},{})
- %
- % will give 10 symmetries + one infinite
- % family of symmetries whereas
- %
- % liepde({{df(u,x,2)=df(u,t)-df(u,x)**2},
- % {u},{t,x}},
- % {"general",3},{})
- %
- % will give 28 symmetries + one infinite
- % family of symmetries.
- {xi!_x1 =...,
- ...
- eta!_y3=... } % - An ansatz must specify all xi!_.. for
- % all indep. variables and all eta!_..
- % for all dep. variables in terms of
- % differential expressions which may
- % involve unknown functions/constants.
- % The dependencies of the unknown
- % functions have to declared earlier
- % using the DEPEND command.
- % - If the ansatz should consist of the
- % characteristic functions then set
- % all xi!_..=0 and assign the charac-
- % teristic functions to the eta!_.. .
- flist:
- ======
- {- all parameters and functions in the equations which are to
- be determined, such that there exist symmetries,
- - if an ansatz has been made in symtype then flist contains
- all unknown functions and constants in xi!_.. and eta!_..}
- inequ:
- =======
- {all non-vanishing expressions which represent
- inequalities for the functions in flist}
-
- Further comments:
- =================
-
- The syntax of input is the usual REDUCE syntax. For example, the
- derivative of y3 wrt x1 once and x2 twice would be df(y3,x1,x2,2).
- --> One exception: If in the equations or in the ansatz the dependence
- of a free function F on a derivative, like df(y3,x1,x2,2) shall be
- declared then the declaration has to have the form:
- DEPEND F, Y3!`1!`2!`2
- - the ! has to preceede each special character, like `,
- - `i stands for the derivative with respect to the i'th variable in
- the list of variables (the third list in the problem above)
- If the REDUCE switch TIME is set on with ON TIME then times for the
- individual steps in the calculation are shown.
- Further switches and parameters which can be changed to affect the
- output and performance of CRACK in solving the symmetry conditions
- are listed in the file CRINIT.RED.
- return list('LIST,'LIST . symcon,'LIST . append(xilist,etalist),
- 'LIST . flist);
|