@@ -1,598 +1,598 @@ -\documentstyle[11pt,reduce]{article} -\title{The Package SPDE for Determining Symmetries of Partial -Differential Equations} -\date{} -\author{Fritz Schwarz \\ GMD, Institut F1 \\ -Postfach 1240 \\ 5205 St. Augustin \\ -GERMANY \\[0.05in] -Telephone: +49-2241-142782 \\ -Email: fritz.schwarz@gmd.de} -\begin{document} -\maketitle - -The package SPDE provides a set of functions which may be applied -to determine the symmetry group of Lie- or point-symmetries of a -given system of partial differential equations. Preferably it is -used interactively on a computer terminal. In many cases the -determining system is solved completely automatically. In some -other cases the user has to provide some additional input -information for the solution algorithm to terminate. The package -should only be used in compiled form. - -For all theoretical questions, a description of the algorithm and -numerous examples the following articles should be consulted: -``Automatically Determining Symmetries of Partial Differential -Equations'', Computing vol. 34, page 91-106(1985) and vol. 36, page -279-280(1986), ``Symmetries of Differential Equations: From Sophus -Lie to Computer Algebra'', SIAM Review, to appear, and Chapter 2 -of the Lecture Notes ``Computer Algebra and Differential Equations -of Mathematical Physics'', to appear. - - -\section{Description of the System Functions and Variables} - -The symmetry analysis of partial differential equations logically -falls into three parts. Accordingly the most important functions -provided by the package are: - -\begin{table} -\begin{center} -\begin{tabular}{| c | c | }\hline -Function name & Operation \\ \hline \hline -\ttindex{CRESYS} -CRESYS(\s{arguments}) & Constructs determining system \\ \hline -\ttindex{SIMPSYS} -SIMPSYS() & Solves determining system \\ \hline -\ttindex{RESULT} -RESULT() & Prints infinitesimal generators \\ -& and commutator table \\ \hline -\end{tabular} -\end{center} -\caption{SPDE Functions} -\end{table} - -Some other useful functions for obtaining various kinds of output -are: - -\begin{table} -\begin{center} -\begin{tabular}{| c | c |} \hline -Function name & Operation \\ \hline \hline -\ttindex{PRSYS} -PRSYS() & Prints determining system \\ \hline -\ttindex{PRGEN} -PRGEN() & Prints infinitesimal generators \\ \hline -\ttindex{COMM} -COMM(U,V) & Prints commutator of generators U and V \\ \hline -\end{tabular} -\end{center} -\caption{SPDE Useful Output Functions}\label{spde:useful} -\end{table} - -There are several global variables defined by the system which should -not be used for any other purpose than that given in -Table~\ref{spde:intt} and~\ref{spde:op}. The three globals of the type -integer are: - -\begin{table} -\begin{center} -\begin{tabular}{| c | c |}\hline -Variable name & Meaning \\ \hline \hline -\ttindex{NN} -NN & Number of independent variables \\ \hline -\ttindex{MM} -MM & Number of dependent variables \\ \hline -\ttindex{PCLASS} -PCLASS=0, 1 or 2 & Controls amount of output \\ \hline -\end{tabular} -\end{center} -\caption{SPDE Integer valued globals}\label{spde:intt} -\end{table} - -In addition there are the following global variables of type -operator: - -\begin{table} -\begin{center} -\begin{tabular}{| c | c |}\hline -Variable name & Meaning \\ \hline \hline -\ttindex{X(I)} -X(I) & Independent variable $x_i$ \\ \hline -\ttindex{U(ALFA)} -U(ALFA) & Dependent variable $u^{alfa}$ \\ \hline -\ttindex{U(ALFA,I)} -U(ALFA,I) & Derivative of $u^{alfa}$ w.r.t. $x_i$ \\ \hline -\ttindex{DEQ(I)} -DEQ(I) & i-th differential equation \\ \hline -\ttindex{SDER(I)} -SDER(I) & Derivative w.r.t. which DEQ(I) is resolved \\ \hline -\ttindex{GL(I)} -GL(I) & i-th equation of determining system \\ \hline -\ttindex{GEN(I)} -GEN(I) & i-th infinitesimal generator \\ \hline -\ttindex{XI(I)} \ttindex{ETA(ALFA)} \ttindex{ZETA(ALFA,I)} -XI(I), ETA(ALFA) & See definition given in the \\ -ZETA(ALFA,I) & references quoted in the introduction. \\ \hline -\ttindex{C(I)} -C(I) & i-th function used for substitution \\ \hline -\end{tabular} -\end{center} -\caption{SPDE Operator type global variables}\label{spde:op} -\end{table} - - -The differential equations of the system at issue have to be assigned -as values to the operator deq i applying the notation which is defined -in Table~\ref{spde:op}. The entries in the third and the last line of -that Table have obvious extensions to higher derivatives. - -The derivative w.r.t. which the i-th differential equation deq i is -resolved has to be assigned to sder i. Exception: If there is a single -differential equation and no assignment has been made by the user, the -highest derivative is taken by default. - -When the appropriate assignments are made to the variable deq, the -values of NN and MM (Table~\ref{spde:useful}) are determined -automatically, i.e. they have not to be assigned by the user. - -\ttindex{CRESYS} -The function CRESYS may be called with any number of arguments, i.e. - -\begin{verbatim} - CRESYS(); or CRESYS(deq 1,deq 2,... ); -\end{verbatim} - - are legal calls. If it is called without any argument, all current -assignments to deq are taken into account. Example: If deq 1, deq 2 -and deq 3 have been assigned a differential equation and the symmetry -group of the full system comprising all three equations is desired, -equivalent calls are - -\begin{verbatim} - CRESYS(); or CRESYS(deq 1,deq 2,deq 3); -\end{verbatim} - -The first alternative saves some typing. If later in the session the -symmetry group of deq 1 alone has to be determined, the correct call -is - -\begin{verbatim} - CRESYS deq 1; -\end{verbatim} - -\ttindex{SIMPSYS} -After the determining system has bee created, SIMPSYS which has no -arguments may be called for solving it. The amount of intermediate -output produced by SIMPSYS is controlled by the global variable PCLASS -with the default value 0. \ttindex{PCLASS} With PCLASS equal to 0, no -intermediate steps are shown. With PCLASS equal to 1, all intermediate -steps are displayed so that the solution algorithm may be followed -\index{tracing ! SPDE package} through in detail. Each time the algorithm -passes through the top of the main solution loop the message - -\begin{verbatim} - Entering main loop -\end{verbatim} - -is written. PCLASS equal 2 produces a lot of LISP output and is of no -interest for the normal user. - -If with PCLASS=0 the procedure SIMPSYS terminates without any -response, the determining system is completely solved. In some cases -SIMPSYS does not solve the determining system completely in a single -run. In general this is true if there are only genuine differential -equations left which the algorithm cannot handle at present. If a case -like this occurs, SIMPSYS returns the remaining equations of the -determining system. To proceed with the solution algorithm, -appropriate assignments have to be transmitted by the user, e.g. the -explicit solution for one of the returned differential equations. Any -new functions which are introduced thereby must be operators of the -form c(k) with the correct dependencies generated by a depend -statement (see the ``REDUCE User's Guide''). Its enumeration has to be -chosen in agreement with the current number of functions which have -alreday been introduced. This value is returned by SIMPSYS too. - -After the determining system has been solved, the procedure RESULT, -which has no arguments, may be called. It displays the infinitesimal -generators and its non-vanishing commutators. - - -\section{How to Use the Package} - -In this Section it is explained by way of several examples how the -package SPDE is used interactively to determine the symmetry group of -partial differential equations. Consider first the diffusion equation -which in the notation given above may be written as - -\begin{verbatim} - deq 1:=u(1,1)+u(1,2,2); -\end{verbatim} - -It has been assigned as the value of deq 1 by this statement. There -is no need to assign a value to sder 1 here because the system -comprises only a single equation. - -The determining system is constructed by calling - -\begin{verbatim} - CRESYS(); or CRESYS deq 1; -\end{verbatim} - -The latter call is compulsory if there are other assignments to the -operator deq i than for i=1. - -The error message - -\begin{verbatim} - ***** Differential equations not defined -\end{verbatim} - -appears if there are no differential equations assigned to any deq. - -If the user wants the determining system displayed for inspection -before starting the solution algorithm he may call - -\ttindex{PRSYS} -\begin{verbatim} - PRSYS(); -\end{verbatim} - -and gets the answer - -\begin{verbatim} - GL(1):=2*DF(ETA(1),U(1),X(2)) - DF(XI(2),X(2),2) - - DF(XI(2),X(1)) - - GL(2):=DF(ETA(1),U(1),2) - 2*DF(XI(2),U(1),X(2)) - - GL(3):=DF(ETA(1),X(2),2) + DF(ETA(1),X(1)) - - GL(4):=DF(XI(2),U(1),2) - - GL(5):=DF(XI(2),U(1)) - DF(XI(1),U(1),X(2)) - - GL(6):=2*DF(XI(2),X(2)) - DF(XI(1),X(2),2) - DF(XI(1),X(1)) - - GL(7):=DF(XI(1),U(1),2) - - GL(8):=DF(XI(1),U(1)) - - GL(9):=DF(XI(1),X(2)) - -The remaining dependencies - - XI(2) depends on U(1),X(2),X(1) - - XI(1) depends on U(1),X(2),X(1) - - ETA(1) depends on U(1),X(2),X(1) -\end{verbatim} - -The last message means that all three functions XI(1), XI(2) and -ETA(1) depend on X(1), X(2) and U(1). Without this information the -nine equations GL(1) to GL(9) forming the determining system are -meaningless. Now the solution algorithm may be activated by calling - -\ttindex{SIMPSYS} -\begin{verbatim} - SIMPSYS(); -\end{verbatim} - -\ttindex{PCLASS} -If the print flag PCLASS has its default value which is 0 no -intermediate output is produced and the answer is - -\begin{verbatim} - Determining system is not completely solved - - The remaining equations are - - GL(1):=DF(C(1),X(2),2) + DF(C(1),X(1)) - - Number of functions is 16 - - The remaining dependencies - - C(1) depends on X(2),X(1) -\end{verbatim} - -With PCLASS equal to 1 about 6 pages of intermediate output are -obtained. It allows the user to follow through each step of the -solution algorithm. - -In this example the algorithm did not solve the determining system -completely as it is shown by the last message. This was to be expected -because the diffusion equation is linear and therefore the symmetry -group contains a generator depending on a function which solves the -original differential equation. In cases like this the user has to -provide some additional information to the system so that the solution -algorithm may continue. In the example under consideration the -appropriate input is - -\begin{verbatim} - DF(C(1),X(1)) := - DF(C(1),X(2),2); -\end{verbatim} - -If now the solution algorithm is activated again by - -\begin{verbatim} - SIMPSYS(); -\end{verbatim} - -the solution algorithm terminates without any further message, i.e. -there are no equations of the determining system left unsolved. To -obtain the symmetry generators one has to say finally - -\begin{verbatim} - RESULT(); -\end{verbatim} - -and obtains the answer - -\begin{verbatim} - The differential equation - - DEQ(1):=U(1,2,2) + U(1,1) - - - The symmetry generators are - - GEN(1):= DX(1) - - GEN(2):= DX(2) - - GEN(3):= 2*DX(2)*X(1) + DU(1)*U(1)*X(2) - - GEN(4):= DU(1)*U(1) - - GEN(5):= 2*DX(1)*X(1) + DX(2)*X(2) - - 2 - GEN(6):= 4*DX(1)*X(1) - - + 4*DX(2)*X(2)*X(1) - - 2 - + DU(1)*U(1)*(X(2) - 2*X(1)) - - GEN(7):= DU(1)*C(1) - - The remaining dependencies - - C(1) depends on X(2),X(1) - - - Constraints - - DF(C(1),X(1)):= - DF(C(1),X(2),2) - - - The non-vanishing commutators of the finite subgroup - - - COMM(1,3):= 2*DX(2) - - COMM(1,5):= 2*DX(1) - - COMM(1,6):= 8*DX(1)*X(1) + 4*DX(2)*X(2) - 2*DU(1)*U(1) - - COMM(2,3):= DU(1)*U(1) - - COMM(2,5):= DX(2) - - COMM(2,6):= 4*DX(2)*X(1) + 2*DU(1)*U(1)*X(2) - - COMM(3,5):= - (2*DX(2)*X(1) + DU(1)*U(1)*X(2)) - - 2 - COMM(5,6):= 8*DX(1)*X(1) - - + 8*DX(2)*X(2)*X(1) - - 2 - + 2*DU(1)*U(1)*(X(2) - 2*X(1)) -\end{verbatim} - -The message ``Constraints'' which appears after the symmetry generators -are displayed means that the function c(1) depends on x(1) and x(2) -and satisfies the diffusion equation. - -More examples which may used for test runs are given in the final -section. - -\index{ansatz of symmetry generator} -If the user wants to test a certain ansatz of a symmetry generator for -given differential equations, the correct proceeding is as follows. -Create the determining system as described above. Make the appropriate -assignments for the generator and call PRSYS() after that. The -determining system with this ansatz substituted is returned. Example: -Assume again that the determining system for the diffusion equation -has been created. To check the correctness for example of generator GEN -3 which has been obtained above, the assignments - -\begin{verbatim} - XI(1):=0; XI(2):=2*X(1); ETA(1):=X(2)*U(1); -\end{verbatim} - -have to be made. If now PRSYS() is called all GL(K) are zero -proving the correctness of this generator. - -Sometimes a user only wants to know some of the functions ZETA for for -various values of its possible arguments and given values of MM and -NN. In these cases the user has to assign the desired values of MM and -NN and may call the ZETAs after that. Example: - -\begin{verbatim} - MM:=1; NN:=2; - - FACTOR U(1,2),U(1,1),U(1,1,2),U(1,1,1); - - ON LIST; - - ZETA(1,1); - - -U(1,2)*U(1,1)*DF(XI(2),U(1)) - - -U(1,2)*DF(XI(2),X(1)) - - 2 - -U(1,1) *DF(XI(1),U(1)) - - +U(1,1)*(DF(ETA(1),U(1)) -DF(XI(1),X(1))) - - +DF(ETA(1),X(1)) - - - ZETA(1,1,1); - - -2*U(1,1,2)*U(1,1)*DF(XI(2),U(1)) - - -2*U(1,1,2)*DF(XI(2),X(1)) - - -U(1,1,1)*U(1,2)*DF(XI(2),U(1)) - - -3*U(1,1,1)*U(1,1)*DF(XI(1),U(1)) - - +U(1,1,1)*(DF(ETA(1),U(1)) -2*DF(XI(1),X(1))) - - 2 - -U(1,2)*U(1,1) *DF(XI(2),U(1),2) - - -2*U(1,2)*U(1,1)*DF(XI(2),U(1),X(1)) - - -U(1,2)*DF(XI(2),X(1),2) - - 3 - -U(1,1) *DF(XI(1),U(1),2) - - 2 - +U(1,1) *(DF(ETA(1),U(1),2) -2*DF(XI(1),U(1),X(1))) - - +U(1,1)*(2*DF(ETA(1),U(1),X(1)) -DF(XI(1),X(1),2)) - - +DF(ETA(1),X(1),2) -\end{verbatim} - -If by error no values to MM or NN and have been assigned the message - -\begin{verbatim} - ***** Number of variables not defined -\end{verbatim} - -is returned. Often the functions ZETA are desired for special values -of its arguments ETA(ALFA) and XI(K). To this end they have to be -assigned first to some other variable. After that they may be -evaluated for the special arguments. In the previous example this may -be achieved by - -\begin{verbatim} - Z11:=ZETA(1,1)$ Z111:=ZETA(1,1,1)$ -\end{verbatim} - -Now assign the following values to XI 1, XI 2 and ETA 1: - -\begin{verbatim} - XI 1:=4*X(1)**2; XI 2:=4*X(2)*X(1); - - ETA 1:=U(1)*(X(2)**2 - 2*X(1)); -\end{verbatim} - -They correspond to the generator GEN 6 of the diffusion equation which -has been obtained above. Now the desired expressions are obtained by -calling - -\begin{verbatim} - Z11; - - 2 - - (4*U(1,2)*X(2) - U(1,1)*X(2) + 10*U(1,1)*X(1) + 2*U(1)) - - Z111; - - 2 - - (8*U(1,1,2)*X(2) - U(1,1,1)*X(2) + 18*U(1,1,1)*X(1) + - 12*U(1,1)) -\end{verbatim} - - -\section{Test File} - -This appendix is a test file. The symmetry groups for various -equations or systems of equations are determined. The variable PCLASS -has the default value 0 and may be changed by the user before running -it. The output may be compared with the results which are given in the -references. - -\begin{verbatim} -%The Burgers equations - -deq 1:=u(1,1)+u 1*u(1,2)+u(1,2,2)$ - -cresys deq 1$ simpsys()$ result()$ - -%The Kadomtsev-Petviashvili equation - -deq 1:=3*u(1,3,3)+u(1,2,2,2,2)+6*u(1,2,2)*u 1 - - +6*u(1,2)**2+4*u(1,1,2)$ - -cresys deq 1$ simpsys()$ result()$ - -%The modified Kadomtsev-Petviashvili equation - -deq 1:=u(1,1,2)-u(1,2,2,2,2)-3*u(1,3,3) - - +6*u(1,2)**2*u(1,2,2)+6*u(1,3)*u(1,2,2)$ - -cresys deq 1$ simpsys()$ result()$ - -%The real- and the imaginary part of the nonlinear -%Schroedinger equation - -deq 1:= u(1,1)+u(2,2,2)+2*u 1**2*u 2+2*u 2**3$ - -deq 2:=-u(2,1)+u(1,2,2)+2*u 1*u 2**2+2*u 1**3$ - -%Because this is not a single equation the two assignments - -sder 1:=u(2,2,2)$ sder 2:=u(1,2,2)$ - -%are necessary. - -cresys()$ simpsys()$ result()$ - -%The symmetries of the system comprising the four equations - -deq 1:=u(1,1)+u 1*u(1,2)+u(1,2,2)$ - -deq 2:=u(2,1)+u(2,2,2)$ - -deq 3:=u 1*u 2-2*u(2,2)$ - -deq 4:=4*u(2,1)+u 2*(u 1**2+2*u(1,2))$ - -sder 1:=u(1,2,2)$ sder 2:=u(2,2,2)$ sder 3:=u(2,2)$ -sder 4:=u(2,1)$ - -%is obtained by calling - -cresys()$ simpsys()$ - -df(c 5,x 1):=-df(c 5,x 2,2)$ - -df(c 5,x 2,x 1):=-df(c 5,x 2,3)$ - -simpsys()$ result()$ - -% The symmetries of the subsystem comprising equation 1 -% and 3 are obtained by - -cresys(deq 1,deq 3)$ simpsys()$ result()$ - -% The result for all possible subsystems is discussed in -% detail in ``Symmetries and Involution Systems: Some -% Experiments in Computer Algebra'', contribution to the -% Proceedings of the Oberwolfach Meeting on Nonlinear -% Evolution Equations, Summer 1986, to appear. -\end{verbatim} -\end{document} +\documentstyle[11pt,reduce]{article} +\title{The Package SPDE for Determining Symmetries of Partial +Differential Equations} +\date{} +\author{Fritz Schwarz \\ GMD, Institut F1 \\ +Postfach 1240 \\ 5205 St. Augustin \\ +GERMANY \\[0.05in] +Telephone: +49-2241-142782 \\ +Email: fritz.schwarz@gmd.de} +\begin{document} +\maketitle + +The package SPDE provides a set of functions which may be applied +to determine the symmetry group of Lie- or point-symmetries of a +given system of partial differential equations. Preferably it is +used interactively on a computer terminal. In many cases the +determining system is solved completely automatically. In some +other cases the user has to provide some additional input +information for the solution algorithm to terminate. The package +should only be used in compiled form. + +For all theoretical questions, a description of the algorithm and +numerous examples the following articles should be consulted: +``Automatically Determining Symmetries of Partial Differential +Equations'', Computing vol. 34, page 91-106(1985) and vol. 36, page +279-280(1986), ``Symmetries of Differential Equations: From Sophus +Lie to Computer Algebra'', SIAM Review, to appear, and Chapter 2 +of the Lecture Notes ``Computer Algebra and Differential Equations +of Mathematical Physics'', to appear. + + +\section{Description of the System Functions and Variables} + +The symmetry analysis of partial differential equations logically +falls into three parts. Accordingly the most important functions +provided by the package are: + +\begin{table} +\begin{center} +\begin{tabular}{| c | c | }\hline +Function name & Operation \\ \hline \hline +\ttindex{CRESYS} +CRESYS(\s{arguments}) & Constructs determining system \\ \hline +\ttindex{SIMPSYS} +SIMPSYS() & Solves determining system \\ \hline +\ttindex{RESULT} +RESULT() & Prints infinitesimal generators \\ +& and commutator table \\ \hline +\end{tabular} +\end{center} +\caption{SPDE Functions} +\end{table} + +Some other useful functions for obtaining various kinds of output +are: + +\begin{table} +\begin{center} +\begin{tabular}{| c | c |} \hline +Function name & Operation \\ \hline \hline +\ttindex{PRSYS} +PRSYS() & Prints determining system \\ \hline +\ttindex{PRGEN} +PRGEN() & Prints infinitesimal generators \\ \hline +\ttindex{COMM} +COMM(U,V) & Prints commutator of generators U and V \\ \hline +\end{tabular} +\end{center} +\caption{SPDE Useful Output Functions}\label{spde:useful} +\end{table} + +There are several global variables defined by the system which should +not be used for any other purpose than that given in +Table~\ref{spde:intt} and~\ref{spde:op}. The three globals of the type +integer are: + +\begin{table} +\begin{center} +\begin{tabular}{| c | c |}\hline +Variable name & Meaning \\ \hline \hline +\ttindex{NN} +NN & Number of independent variables \\ \hline +\ttindex{MM} +MM & Number of dependent variables \\ \hline +\ttindex{PCLASS} +PCLASS=0, 1 or 2 & Controls amount of output \\ \hline +\end{tabular} +\end{center} +\caption{SPDE Integer valued globals}\label{spde:intt} +\end{table} + +In addition there are the following global variables of type +operator: + +\begin{table} +\begin{center} +\begin{tabular}{| c | c |}\hline +Variable name & Meaning \\ \hline \hline +\ttindex{X(I)} +X(I) & Independent variable $x_i$ \\ \hline +\ttindex{U(ALFA)} +U(ALFA) & Dependent variable $u^{alfa}$ \\ \hline +\ttindex{U(ALFA,I)} +U(ALFA,I) & Derivative of $u^{alfa}$ w.r.t. $x_i$ \\ \hline +\ttindex{DEQ(I)} +DEQ(I) & i-th differential equation \\ \hline +\ttindex{SDER(I)} +SDER(I) & Derivative w.r.t. which DEQ(I) is resolved \\ \hline +\ttindex{GL(I)} +GL(I) & i-th equation of determining system \\ \hline +\ttindex{GEN(I)} +GEN(I) & i-th infinitesimal generator \\ \hline +\ttindex{XI(I)} \ttindex{ETA(ALFA)} \ttindex{ZETA(ALFA,I)} +XI(I), ETA(ALFA) & See definition given in the \\ +ZETA(ALFA,I) & references quoted in the introduction. \\ \hline +\ttindex{C(I)} +C(I) & i-th function used for substitution \\ \hline +\end{tabular} +\end{center} +\caption{SPDE Operator type global variables}\label{spde:op} +\end{table} + + +The differential equations of the system at issue have to be assigned +as values to the operator deq i applying the notation which is defined +in Table~\ref{spde:op}. The entries in the third and the last line of +that Table have obvious extensions to higher derivatives. + +The derivative w.r.t. which the i-th differential equation deq i is +resolved has to be assigned to sder i. Exception: If there is a single +differential equation and no assignment has been made by the user, the +highest derivative is taken by default. + +When the appropriate assignments are made to the variable deq, the +values of NN and MM (Table~\ref{spde:useful}) are determined +automatically, i.e. they have not to be assigned by the user. + +\ttindex{CRESYS} +The function CRESYS may be called with any number of arguments, i.e. + +\begin{verbatim} + CRESYS(); or CRESYS(deq 1,deq 2,... ); +\end{verbatim} + + are legal calls. If it is called without any argument, all current +assignments to deq are taken into account. Example: If deq 1, deq 2 +and deq 3 have been assigned a differential equation and the symmetry +group of the full system comprising all three equations is desired, +equivalent calls are + +\begin{verbatim} + CRESYS(); or CRESYS(deq 1,deq 2,deq 3); +\end{verbatim} + +The first alternative saves some typing. If later in the session the +symmetry group of deq 1 alone has to be determined, the correct call +is + +\begin{verbatim} + CRESYS deq 1; +\end{verbatim} + +\ttindex{SIMPSYS} +After the determining system has bee created, SIMPSYS which has no +arguments may be called for solving it. The amount of intermediate +output produced by SIMPSYS is controlled by the global variable PCLASS +with the default value 0. \ttindex{PCLASS} With PCLASS equal to 0, no +intermediate steps are shown. With PCLASS equal to 1, all intermediate +steps are displayed so that the solution algorithm may be followed +\index{tracing ! SPDE package} through in detail. Each time the algorithm +passes through the top of the main solution loop the message + +\begin{verbatim} + Entering main loop +\end{verbatim} + +is written. PCLASS equal 2 produces a lot of LISP output and is of no +interest for the normal user. + +If with PCLASS=0 the procedure SIMPSYS terminates without any +response, the determining system is completely solved. In some cases +SIMPSYS does not solve the determining system completely in a single +run. In general this is true if there are only genuine differential +equations left which the algorithm cannot handle at present. If a case +like this occurs, SIMPSYS returns the remaining equations of the +determining system. To proceed with the solution algorithm, +appropriate assignments have to be transmitted by the user, e.g. the +explicit solution for one of the returned differential equations. Any +new functions which are introduced thereby must be operators of the +form c(k) with the correct dependencies generated by a depend +statement (see the ``REDUCE User's Guide''). Its enumeration has to be +chosen in agreement with the current number of functions which have +alreday been introduced. This value is returned by SIMPSYS too. + +After the determining system has been solved, the procedure RESULT, +which has no arguments, may be called. It displays the infinitesimal +generators and its non-vanishing commutators. + + +\section{How to Use the Package} + +In this Section it is explained by way of several examples how the +package SPDE is used interactively to determine the symmetry group of +partial differential equations. Consider first the diffusion equation +which in the notation given above may be written as + +\begin{verbatim} + deq 1:=u(1,1)+u(1,2,2); +\end{verbatim} + +It has been assigned as the value of deq 1 by this statement. There +is no need to assign a value to sder 1 here because the system +comprises only a single equation. + +The determining system is constructed by calling + +\begin{verbatim} + CRESYS(); or CRESYS deq 1; +\end{verbatim} + +The latter call is compulsory if there are other assignments to the +operator deq i than for i=1. + +The error message + +\begin{verbatim} + ***** Differential equations not defined +\end{verbatim} + +appears if there are no differential equations assigned to any deq. + +If the user wants the determining system displayed for inspection +before starting the solution algorithm he may call + +\ttindex{PRSYS} +\begin{verbatim} + PRSYS(); +\end{verbatim} + +and gets the answer + +\begin{verbatim} + GL(1):=2*DF(ETA(1),U(1),X(2)) - DF(XI(2),X(2),2) - + DF(XI(2),X(1)) + + GL(2):=DF(ETA(1),U(1),2) - 2*DF(XI(2),U(1),X(2)) + + GL(3):=DF(ETA(1),X(2),2) + DF(ETA(1),X(1)) + + GL(4):=DF(XI(2),U(1),2) + + GL(5):=DF(XI(2),U(1)) - DF(XI(1),U(1),X(2)) + + GL(6):=2*DF(XI(2),X(2)) - DF(XI(1),X(2),2) - DF(XI(1),X(1)) + + GL(7):=DF(XI(1),U(1),2) + + GL(8):=DF(XI(1),U(1)) + + GL(9):=DF(XI(1),X(2)) + +The remaining dependencies + + XI(2) depends on U(1),X(2),X(1) + + XI(1) depends on U(1),X(2),X(1) + + ETA(1) depends on U(1),X(2),X(1) +\end{verbatim} + +The last message means that all three functions XI(1), XI(2) and +ETA(1) depend on X(1), X(2) and U(1). Without this information the +nine equations GL(1) to GL(9) forming the determining system are +meaningless. Now the solution algorithm may be activated by calling + +\ttindex{SIMPSYS} +\begin{verbatim} + SIMPSYS(); +\end{verbatim} + +\ttindex{PCLASS} +If the print flag PCLASS has its default value which is 0 no +intermediate output is produced and the answer is + +\begin{verbatim} + Determining system is not completely solved + + The remaining equations are + + GL(1):=DF(C(1),X(2),2) + DF(C(1),X(1)) + + Number of functions is 16 + + The remaining dependencies + + C(1) depends on X(2),X(1) +\end{verbatim} + +With PCLASS equal to 1 about 6 pages of intermediate output are +obtained. It allows the user to follow through each step of the +solution algorithm. + +In this example the algorithm did not solve the determining system +completely as it is shown by the last message. This was to be expected +because the diffusion equation is linear and therefore the symmetry +group contains a generator depending on a function which solves the +original differential equation. In cases like this the user has to +provide some additional information to the system so that the solution +algorithm may continue. In the example under consideration the +appropriate input is + +\begin{verbatim} + DF(C(1),X(1)) := - DF(C(1),X(2),2); +\end{verbatim} + +If now the solution algorithm is activated again by + +\begin{verbatim} + SIMPSYS(); +\end{verbatim} + +the solution algorithm terminates without any further message, i.e. +there are no equations of the determining system left unsolved. To +obtain the symmetry generators one has to say finally + +\begin{verbatim} + RESULT(); +\end{verbatim} + +and obtains the answer + +\begin{verbatim} + The differential equation + + DEQ(1):=U(1,2,2) + U(1,1) + + + The symmetry generators are + + GEN(1):= DX(1) + + GEN(2):= DX(2) + + GEN(3):= 2*DX(2)*X(1) + DU(1)*U(1)*X(2) + + GEN(4):= DU(1)*U(1) + + GEN(5):= 2*DX(1)*X(1) + DX(2)*X(2) + + 2 + GEN(6):= 4*DX(1)*X(1) + + + 4*DX(2)*X(2)*X(1) + + 2 + + DU(1)*U(1)*(X(2) - 2*X(1)) + + GEN(7):= DU(1)*C(1) + + The remaining dependencies + + C(1) depends on X(2),X(1) + + + Constraints + + DF(C(1),X(1)):= - DF(C(1),X(2),2) + + + The non-vanishing commutators of the finite subgroup + + + COMM(1,3):= 2*DX(2) + + COMM(1,5):= 2*DX(1) + + COMM(1,6):= 8*DX(1)*X(1) + 4*DX(2)*X(2) - 2*DU(1)*U(1) + + COMM(2,3):= DU(1)*U(1) + + COMM(2,5):= DX(2) + + COMM(2,6):= 4*DX(2)*X(1) + 2*DU(1)*U(1)*X(2) + + COMM(3,5):= - (2*DX(2)*X(1) + DU(1)*U(1)*X(2)) + + 2 + COMM(5,6):= 8*DX(1)*X(1) + + + 8*DX(2)*X(2)*X(1) + + 2 + + 2*DU(1)*U(1)*(X(2) - 2*X(1)) +\end{verbatim} + +The message ``Constraints'' which appears after the symmetry generators +are displayed means that the function c(1) depends on x(1) and x(2) +and satisfies the diffusion equation. + +More examples which may used for test runs are given in the final +section. + +\index{ansatz of symmetry generator} +If the user wants to test a certain ansatz of a symmetry generator for +given differential equations, the correct proceeding is as follows. +Create the determining system as described above. Make the appropriate +assignments for the generator and call PRSYS() after that. The +determining system with this ansatz substituted is returned. Example: +Assume again that the determining system for the diffusion equation +has been created. To check the correctness for example of generator GEN +3 which has been obtained above, the assignments + +\begin{verbatim} + XI(1):=0; XI(2):=2*X(1); ETA(1):=X(2)*U(1); +\end{verbatim} + +have to be made. If now PRSYS() is called all GL(K) are zero +proving the correctness of this generator. + +Sometimes a user only wants to know some of the functions ZETA for for +various values of its possible arguments and given values of MM and +NN. In these cases the user has to assign the desired values of MM and +NN and may call the ZETAs after that. Example: + +\begin{verbatim} + MM:=1; NN:=2; + + FACTOR U(1,2),U(1,1),U(1,1,2),U(1,1,1); + + ON LIST; + + ZETA(1,1); + + -U(1,2)*U(1,1)*DF(XI(2),U(1)) + + -U(1,2)*DF(XI(2),X(1)) + + 2 + -U(1,1) *DF(XI(1),U(1)) + + +U(1,1)*(DF(ETA(1),U(1)) -DF(XI(1),X(1))) + + +DF(ETA(1),X(1)) + + + ZETA(1,1,1); + + -2*U(1,1,2)*U(1,1)*DF(XI(2),U(1)) + + -2*U(1,1,2)*DF(XI(2),X(1)) + + -U(1,1,1)*U(1,2)*DF(XI(2),U(1)) + + -3*U(1,1,1)*U(1,1)*DF(XI(1),U(1)) + + +U(1,1,1)*(DF(ETA(1),U(1)) -2*DF(XI(1),X(1))) + + 2 + -U(1,2)*U(1,1) *DF(XI(2),U(1),2) + + -2*U(1,2)*U(1,1)*DF(XI(2),U(1),X(1)) + + -U(1,2)*DF(XI(2),X(1),2) + + 3 + -U(1,1) *DF(XI(1),U(1),2) + + 2 + +U(1,1) *(DF(ETA(1),U(1),2) -2*DF(XI(1),U(1),X(1))) + + +U(1,1)*(2*DF(ETA(1),U(1),X(1)) -DF(XI(1),X(1),2)) + + +DF(ETA(1),X(1),2) +\end{verbatim} + +If by error no values to MM or NN and have been assigned the message + +\begin{verbatim} + ***** Number of variables not defined +\end{verbatim} + +is returned. Often the functions ZETA are desired for special values +of its arguments ETA(ALFA) and XI(K). To this end they have to be +assigned first to some other variable. After that they may be +evaluated for the special arguments. In the previous example this may +be achieved by + +\begin{verbatim} + Z11:=ZETA(1,1)$ Z111:=ZETA(1,1,1)$ +\end{verbatim} + +Now assign the following values to XI 1, XI 2 and ETA 1: + +\begin{verbatim} + XI 1:=4*X(1)**2; XI 2:=4*X(2)*X(1); + + ETA 1:=U(1)*(X(2)**2 - 2*X(1)); +\end{verbatim} + +They correspond to the generator GEN 6 of the diffusion equation which +has been obtained above. Now the desired expressions are obtained by +calling + +\begin{verbatim} + Z11; + + 2 + - (4*U(1,2)*X(2) - U(1,1)*X(2) + 10*U(1,1)*X(1) + 2*U(1)) + + Z111; + + 2 + - (8*U(1,1,2)*X(2) - U(1,1,1)*X(2) + 18*U(1,1,1)*X(1) + + 12*U(1,1)) +\end{verbatim} + + +\section{Test File} + +This appendix is a test file. The symmetry groups for various +equations or systems of equations are determined. The variable PCLASS +has the default value 0 and may be changed by the user before running +it. The output may be compared with the results which are given in the +references. + +\begin{verbatim} +%The Burgers equations + +deq 1:=u(1,1)+u 1*u(1,2)+u(1,2,2)$ + +cresys deq 1$ simpsys()$ result()$ + +%The Kadomtsev-Petviashvili equation + +deq 1:=3*u(1,3,3)+u(1,2,2,2,2)+6*u(1,2,2)*u 1 + + +6*u(1,2)**2+4*u(1,1,2)$ + +cresys deq 1$ simpsys()$ result()$ + +%The modified Kadomtsev-Petviashvili equation + +deq 1:=u(1,1,2)-u(1,2,2,2,2)-3*u(1,3,3) + + +6*u(1,2)**2*u(1,2,2)+6*u(1,3)*u(1,2,2)$ + +cresys deq 1$ simpsys()$ result()$ + +%The real- and the imaginary part of the nonlinear +%Schroedinger equation + +deq 1:= u(1,1)+u(2,2,2)+2*u 1**2*u 2+2*u 2**3$ + +deq 2:=-u(2,1)+u(1,2,2)+2*u 1*u 2**2+2*u 1**3$ + +%Because this is not a single equation the two assignments + +sder 1:=u(2,2,2)$ sder 2:=u(1,2,2)$ + +%are necessary. + +cresys()$ simpsys()$ result()$ + +%The symmetries of the system comprising the four equations + +deq 1:=u(1,1)+u 1*u(1,2)+u(1,2,2)$ + +deq 2:=u(2,1)+u(2,2,2)$ + +deq 3:=u 1*u 2-2*u(2,2)$ + +deq 4:=4*u(2,1)+u 2*(u 1**2+2*u(1,2))$ + +sder 1:=u(1,2,2)$ sder 2:=u(2,2,2)$ sder 3:=u(2,2)$ +sder 4:=u(2,1)$ + +%is obtained by calling + +cresys()$ simpsys()$ + +df(c 5,x 1):=-df(c 5,x 2,2)$ + +df(c 5,x 2,x 1):=-df(c 5,x 2,3)$ + +simpsys()$ result()$ + +% The symmetries of the subsystem comprising equation 1 +% and 3 are obtained by + +cresys(deq 1,deq 3)$ simpsys()$ result()$ + +% The result for all possible subsystems is discussed in +% detail in ``Symmetries and Involution Systems: Some +% Experiments in Computer Algebra'', contribution to the +% Proceedings of the Oberwolfach Meeting on Nonlinear +% Evolution Equations, Summer 1986, to appear. +\end{verbatim} +\end{document}