(* This is the old readme file from 1998. Needs to be updated! *) (* Read the instructions in Diffdens--Documentation.nb *) (* New code diffdens2007.m replaces diffdens2002.m *) (* ************************************************************************* *) (* *) (* Documentation file DD_READM.TXT *) (* *) (* ************************************************************************* *) (* *) (* Documentation for installing and using diffdens.m *) (* Updated: May 5, 1998 at 23:50 *) (* *) (*****************************************************************************) (* *) (* *** M A T H E M A T I C A P R O G R A M *** *) (* *) (* SYMBOLIC COMPUTATION of CONSERVED DENSITIES for SYSTEMS of *) (* EVOLUTIONARY TYPE DIFFERENTIAL DIFFERENCE EQUATIONS *) (* *) (* program name: diffdens.m *) (* *) (* purpose: computation of the conserved densities with possible *) (* compatibility conditions *) (* *) (* input to diffdens.m: system of evolution type differential difference *) (* equations of any order, any degree, polynomial *) (* type, only constant parameters, variable *) (* coefficients are NOT allowed as parameters *) (* *) (* output: density and flux of desired rank (if it exists) *) (* *) (* tested on: IBM RISC 6000, IBM Compatible PC 486, SGI Indigo2 XL *) (* *) (* language: Mathematica 3.0 (compatible with 2.2 and 2.0) *) (* *) (* authors: Unal Goktas and Willy Hereman *) (* Department of Mathematical and Computer Sciences *) (* Colorado School of Mines *) (* Golden, CO 80401-1887, USA *) (* *) (* Version 2.0: May 4, 1998 *) (* *) (* Copyright 1998 *) (* *) (*****************************************************************************) Copyright by Unal Goktas and Willy Hereman (1998): No part of the conserved density program diffdens.m may be reproduced or sold without written consent of the authors. MATHEMATICA copyright and trademark of Wolfram Research, Inc., Urbana-Champaign, Illinois, USA. We are glad to offer you the possibility to carry out the tedious calculations of conserved densities for systems of differential-difference equations by computer. -------------------------------------- The main sources of information are: 1) The research paper PHYSD98.TEX: Unal Goktas and Willy Hereman (1998), ``Computation of Conservation Laws for Nonlinear Lattices, Physica D (1998) in press. Describes the algorithm, the code, scope, limitations, usage, etc. Has several worked examples of DDE systems with and without parameters. Serves as manual for the program diffdens.m. 2) The research paper PHLETA97.TEX: Unal Goktas, Willy Hereman and Grant Erdmann (1997), ``Computation of Conserved Densities for Systems of Nonlinear Differential-difference Equations, Physics Letters A, vol. 236, pp. 30-38 (1997). Gives the algorithm and several other examples. Does not talk much about the implementation, although the examples given in the text were obtained with diffdens.m 3) Other related papers: * The research paper CPC1998.TEX: W. Hereman, U. Goktas, M. Colagrosso, and A. Miller ``Algorithmic integrability tests for nonlinear differential and lattice equations", Special Issue on `Computer Algebra in Physics Research,' Computer Physics Communications, vol. 101 (1998) submitted. * The research paper WESTER98.TEX: Unal Goktas and W. Hereman, ``Symbolic algorithms to investigate nonlinear differential and lattice equations", in: Comparative Computer Algebra, Ed.: M. Wester, Wiley, New York (1998) submitted. * The proceedings paper WP1998.TEX: Unal Goktas and W. Hereman, ``Invariants and symmetries for partial differential equations and lattices", Proc. Fourth International Conference on Mathematical and Numerical Aspects of Wave Propagation, Ed.: J. A. DeSanto, Colorado School of Mines, Golden, Colorado, June 1-5, 1998, SIAM, Philadelphia (1998) pp 403-407. ---------------------------------- Related Software A comprehensive package, called InvariantsSymmetries.m, for the computation of invariants (conservation laws) and higher-order symmetries has been added to MathSource, the program data base of Wolfram Research, Inc. The computation of conservation laws and higher-order symmetries for evolution equations is also possible via the code InvariantsSymmetries.m. The code be obtained free of cost from: U. Goktas and W. Hereman, InvariantsSymmetries.m: A Mathematica Integrability Package for the Computation of Invariants and Symmetries (1997). Available from MathSource (Item: 0208-932, Applications/Mathematics) via FTP: mathsource.wolfram.com or via Internet URL: http://www.mathsource.com/cgi-bin/MathSource/Applications/0208-932. The computation of conservation laws and higher-order symmetries for evolution equations (PDEs) is also possible via the code diffdens.m. See URL: Internet URL: http://www.mines.edu/fs_home/whereman/ or FTP to CARTAN.MINES.EDU, login with anonymous, use your email address or name as password. Then change to the directory pub/software/mathematica/condens. ---------------------------------- Theoretical Background The strategy of computing conserved densities for semi-discrete systems or differential-difference equations, DDEs for short, is patterned after that for the continuous case of nonlinear systems of evolution equations. A discussion of the computation of conserved densities for the CONTINUOUS case and some examples may be found in the papers: (a) The research paper JSC1997.TEX (needs the jsc.sty file to be printed): Unal Goktas and Willy Hereman, ``Symbolic Computation of Conserved Densities for Systems of Nonlinear Evolution Equations", Journal of Symbolic Computation, vol. 24, pp. 591-621 (1997). Describes the algorithm, the code, scope, limitations, usage, etc. Has many worked examples of systems with and without parameters. Has two major applications. Serves as manual for the program condens.m Reviews other software packages, and work in progress. (b) The Master's thesis of Unal Goktas (not on the floppy) Unal Goktas (1996), ``Symbolic Computation of Conserved Densities for Systems of Nonlinear Evolution Equations". Master of Science Thesis, Colorado School of Mines, Golden, CO, U.S.A. (1996). Available in PostScript form as file condens.ps at FTP site given below. Has much more details. (c) File KDV95.TEX (on the floppy in the subdirectory condens\document): W. Hereman and W. Zhuang, ``Symbolic software for soliton theory", Proceedings of Conference KdV '95, April 1995, Amsterdam, The Netherlands, Eds.: M. Hazewinkel, H. W. Capel and E. M. de Jager, Kluwer Academic Publishers, pp. 361-378 (1995). Also: Acta Applicandae Mathematicae, vol 39, pp. 361-378 (1995) (d) File SCHAMEL.TEX (on the floppy in the subdirectory condens\document): F. Verheest and W. Hereman, ``Conservation laws and solitary wave solutions for generalized Schamel equations", Physica Scripta, vol. 50, pp. 611-614 (1994) (e) File MVDNLS.TEX (on the floppy in the subdirectory condens\document): R. Willox, W. Hereman and F. Verheest, ``Complete integrability of a modified vector derivative nonlinear Schrodinger equation", Physica Scripta, vol. 51, pp. 21-26 (1995) ------------------------ Where to get the Code The software is also available via anonymous FTP from our two FTP sites: CARTAN.MINES.EDU and FTP.MINES.EDU (or MINES.EDU for short) (1) FTP to CARTAN.MINES.EDU, login with anonymous, use your email address or name as password. Then change to the directory pub/software/mathematica/diffdens. or (2) FTP to FTP.MINES.EDU (MINES.EDU for short), login with anonymous, use your email address or name as password. Then change to the directory pub/papers/math_cs_dept/software/diffdens. Alternatively, go to the World Wide Web home page of Willy Hereman Internet URL: http://www.mines.edu/fs_home/whereman/ There is a hot link to the FTP site. ---------------------------------- What you Should Have In the directory DIFFDENS on this floppy, you should have the following files: In the subdirectory PROGRAM you will find - diffdens.m: the Mathematica source code for the program In the subdirectory DOCUMENT you will find - dd_readm.txt: the file you are reading now - PHYSD98.TEX, PHLETA.TEX, CPC1998, WESTER98.TEX, and WP1998.TEX: papers listed above - JSC1997.TEX, KDV95.TEX, SCHAMEL.TEX, and MVDNLS.TEX: these are the other four papers listed above In the subdirectory TESTDECK you will find, for example: - d_toda.m: the data file to run the Toda equation, - d_todar5.o: the output for the Toda equation (density of rank 5). and about a dozen other d_xxx.m files corresponding to other examples, all for use with diffdens.m. The data files contain either one DDE or a system of two DDEs (usually simple equations, but there are more elaborate examples, such as d_herbst.m). Examples of data files with simple differential-difference equations contain the data for the Toda equation (and some of its generalizations), the Kac-Van Moerbeke or Volterra equation, a self-dual network equation, discretizations of the KdV and modified KdV, and nonlinear Schrodinger equations. For some of them the output files are also available, some have the format xxx.o, others have the name xxx.txt. The file d_ptoda.m show how to test a conserved density (known from the literature). It is intended to demonstrate how to enter a given form of the density for the Toda equation (with parameters). That data file also shows how to enter the rank of rho, the name of the output file, and if so desired, the weights for the dependent variables. Entering the extra information in the data file allows the user to use our code less interactively. The various data files (d_xxx.m) and the program file (diffdens.m) need to be in the same directory on your mainframe or PC, where Mathematica can find them. ----------------------------------------- Installing the Program How to install and use the program. Also, how to run examples: After the files are in place on your system (that should have Mathematica, version 2.0 or higher, we used versions 2.2 and 3.0), you should try to compute a set of conserved densities for a simple DDEs first, for example, for the Toda or Volterra equation. The data files are available in the menu. For comparison the output files are also given. Our program diffdens.m is a MENU DRIVEN program, which makes its use very easy and transparent. Once Mathematica comes up, just read in the file diffdens.m as follows: In[1]:= < u[i][n_]'[t] = ... Give the i-th equation of the system in Mathematica notation. Note that there is no `== 0' at the end. Constant parameters (like aa and bb) in the equation are allowed. Note that if you request to compute a conservation law of certain rank which will only exist if parameters in the equation satisfy certain constraints, then the program will compute these constraints. Run the d_ptoda.m case to see what happens! noeqs = 2; ---> Specify the number of equations in the system. parameters = {aa,bb}; ---> Give the list of the parameters in the system. If there are none, set parameters = {}. weightpars = {}; ---> Give the list of the parameters that are assumed to have weights. Note that weighted parameters are not listed in parameters, which is the list of parameters without weight. (* user can supply the rank of rho and a name for the output file *) (* rhorank = 3; *) ---> Optional, give the desired rank of the density. Useful if you want to work with the program less interactively (in batch mode). name = "Toda Lattice (parameterized)"; ---> Pick a short name for the system. The quotes are essential. (* myfile = "ptodar3.o"; *) ---> Optional, give a name of the output file. Useful for less interactive use of the program. (* user can give the weights of u[1], u[2] *) (* weightu[1] = 1; weightu[2] = 2; *) ---> Optional, specify a choice for some or all of the weights. The program then skips the computation of the weights, but still checks for consistency. Particularly useful if there are several free weights and non-interactive use is preferred. formrho = 0; (* or alternatively formrho = {} *) ---> Since the form of the density rho is set to zero, the program will automatically compute it. (* user can give the form of rho. Here, for density of rank 3: *) (* formrho = c[1]*u[1][n][t]^3+c[2]*u[1][n][t]*u[2][n-1][t]+ c[3]*u[1][n][t]*u[2][n][t]; *) ---> Alternatively, one could give a form of the density. The density must be given in expanded form and with coefficients c[i]. If rho is given, the program skips both the computation of the weights and the form of the density. Instead, the code uses what is given and computes the coefficients c[i]. This option allows one, for example, to test densities from the literature. (* bla bla bla ..... *) ---> Anything within (* and *) are comments, they are ignored by Mathematica. ---------------------------------- Running your own Examples If you want to run your own example you will have to prepare a data file and give its name when prompted in the program menu. The form of the density is computed based on the choice of the rank, rather than on the degree of rho. During the execution of the program, the user must enter the desired rank of rho. The rank of rho should be an integer multiple of the lowest weight of the dependent variables (and parameters). However, a fractional rank are allowed (if the lowest weights is fractional). After the computation is finished, the density rho is available. Type rho to see the explicit form. The density can also be displayed in a nicer subscript notation via subscriptform[rho]. The `system' for the unknown coefficients c[i] is also available. The flux j_n is NOT (automatically) available since it is usually not needed. If the system for the c[i] is free of parameters and more than 50 equations it is also suppressed. If rho depends on arbitrary coefficients c[i], it can be further split into independent pieces via the function split. Type either split[rho] or split[subscriptform[rho]. ----------------------------- Free Weights (i) If there is one free weight, the program will automatically pick a positive (most likely integer) weight. (ii) If for some reason that free weight could not be determined automatically, the program would still prompt you for a value. Once you know what the missing information is, it can be added to the data file, like this: weightu[1] = 1; (* determination of a free weight *) Make sure that for the given equation or system all the weights can be determined automatically if you want to use the program in batch mode. (ii) If there two or more free weights, the program will ask for information. ---------------------------------------- Another Interesting Example Run the file d_herbst.m for to learn how to break up densities in independent pieces. See the paper ghlatex.tex for some of the results. ------------------------------------- Extra Information: Scope and Limitations Our program can handle systems of first order DDEs that are polynomial in the dependent variables. Only one independent variable (t) is allowed. No terms in the DDEs should have coefficients that explicitly depend on t or n. The program only computes polynomial conserved densities in the dependent variables and their shifts, without explicit dependencies on t or n. Theoretically, there is no limit on the number of DDEs. In practice, for large systems, the computations may take a long time or require a lot of memory. The computational speed depends primarily on the amount of memory. By design, the program constructs only densities that are uniform in rank. The uniform rank assumption for the monomials in rho_n allows one to compute independent conserved densities piece by piece, without having to split linear combinations of conserved densities. Due to the superposition principle, a linear combination of conserved densities of unequal rank is still a conserved density. This situation arises frequently when parameters with weight are introduced in the DDEs. The input systems may have one or more parameters, which are assumed to be nonzero. If a system has parameters, the program will attempt to compute the compatibility conditions for these parameters such that densities (of a given rank) exist. The assumption that all parameters in the given DDE must be nonzero is necessary. As a result of setting parameters to zero in a given system of evolution equations, the weights and the rank of rho_n might change. In general, the compatibility conditions for the parameters could be highly nonlinear, and there is no general algorithm to solve them. The program automatically generates the compatibility conditions, and solves them for parameters that occur linearly. Gr\"obner basis techniques could be used to reduce complicated nonlinear systems into equivalent, yet simpler, non-linear systems. For DDEs with parameters and when the system for the coefficients c_i is complicated, the program saves that system and its coefficient matrix, etc., in the file worklog.m. Independent from the program, the worklog files can later be analyzed with Mathematica functions. The assumption that the DDEs are uniform in rank is not very restrictive. If the uniform rank condition is violated, the user can introduce one or more parameters with weights. This also allows for some flexibility in the form of the densities. Although built up with terms that are uniform in rank, the densities do not have to be uniform in rank with respect to the dependent variables alone. Conversely, when the uniform rank condition is fulfilled, the introduction of extra parameters (with weights) in the given DDE leads to a linear combination of conservation laws, not to new ones. In cases where it is not clear whether or not parameters with weight should be introduced, one should start with parameters without weight. If this causes incompatibilities in the assignment of weights (due to non-uniformity), the program may provide a suggestion. Quite often, it recommends that one or more parameters be moved from the list `parameters' into the list `weightpars' of weighted parameters. For systems with two or more free weights, the user will be prompted to enter values for the free weights. If only one weight is free, the program will automatically compute some choices for the free weight, and eventually continue with the lowest integer or fractional value. The program selects this value for the free weight; it is just one choice out of possibly infinitely many. If the algorithm fails to determine a suitable value, the user will be prompted to enter a value for the free weight. Negative weights are not allowed. Zero weights are allowed, but at least one of the dependent variables must have positive weight. The code checks this condition, and if it is violated the computations are aborted. Note that fractional weights and densities of fractional rank are permitted. Our program is a tool in the search of the first half-dozen conservation laws. An existence proof (showing that there are indeed infinitely many conservation laws) must be done analytically. If our program succeeds finding a large set of independent conservation laws, there is a good chance that the system of DDEs has infinitely many conserved densities. If the number of conserved densities is 3 or less, the DDE may have other than polynomial conserved densities, or may not be integrable (in the chosen coordinate representation). -------------------------- The file WORKLOG.M For DDEs with parameters and when the system for the coefficients c[i] is complicated, the program saves in a `worklog.m' file the following: - the name of the output file, - the given system of DDEs, - the rank of rho, - the form of rho, - the system for the coefficients c[i], - the coefficient matrix of that system, - the lists of unknown coefficients c[i] and parameters p[i] Independent from the program, the worklog files can later be analyzed with Mathematica functions. If there are parameters in the problem, then the worklog files are automatically saved if the number of equations, the number of unknowns and parameters adds up to 20 or more. ---------------------------------------- Example of WORKLOG.M file This example of a WORKLOG.M file, corresponds to the discretization of the KdV equation due to Herbst (d_herbst.m), with three parameters, and the computation of density of rank 3/2. The file is called sampwork.m on the floppy. myfile = "d_herbr3.o" rhorank = 3/2 formrho = aa^2*c[1]*u[1][n][t] + aa*bb*c[2]*u[1][n][t] + bb^2*c[3]*u[1][n][t] + aa*c[4]*u[1][n][t]^2 + bb*c[5]*u[1][n][t]^2 + c[6]*u[1][n][t]^3 + aa*c[7]*u[1][n][t]*u[1][1 + n][t] + bb*c[8]*u[1][n][t]*u[1][1 + n][t] + c[9]*u[1][n][t]^2*u[1][1 + n][t] + c[10]*u[1][n][t]*u[1][1 + n][t]^2 + bb*c[11]*u[1][n][t]*u[1][2 + n][t] + c[12]*u[1][n][t]*u[1][1 + n][t]*u[1][2 + n][t] aa = 1 bb = 1 system = {(2*dd*hh^2*c[4] + 2*dd*hh^2*c[5] + 18*c[6] - dd*hh^2*c[7] - dd*hh^2*c[8] - 6*c[9])/hh == 0, dd*hh*(3*c[6] - c[9]) == 0, dd*hh*(3*c[6] + c[9] - 2*c[10]) == 0, (c[9] - c[10])/(dd*hh^3) == 0, (c[9] - c[10])/hh == 0, dd*hh*(c[9] - c[10]) == 0, dd*hh*(-3*c[6] + 2*c[9] - c[10]) == 0, dd*hh*(-3*c[6] + c[10]) == 0, (-2*dd*hh^2*c[4] - 2*dd*hh^2*c[5] - 18*c[6] + dd*hh^2*c[7] + dd*hh^2*c[8] + 6*c[10])/hh == 0, (6*c[9] - dd*hh^2*c[11])/(dd*hh^3) == 0, (6*c[9] - dd*hh^2*c[11])/hh == 0, (-6*c[10] + dd*hh^2*c[11])/(dd*hh^3) == 0, (-6*c[10] + dd*hh^2*c[11])/hh == 0, (-2*dd*hh^2*c[4] - 2*dd*hh^2*c[5] - 36*c[6] + dd*hh^2*c[7] + dd*hh^2*c[8] + 30*c[10] - 18*c[12])/(dd*hh^3) == 0, (12*c[10] + dd*hh^2*c[11] - 18*c[12])/(dd*hh^3) == 0, (-2*dd*hh^2*c[4] - 2*dd*hh^2*c[5] - 18*c[6] + dd*hh^2*c[7] + dd*hh^2*c[8] + 12*c[10] + dd*hh^2*c[11] - 12*c[12])/(dd*hh^3) == 0, (-2*dd*hh^2*c[4] - 2*dd*hh^2*c[5] + 18*c[6] + dd*hh^2*c[7] + dd*hh^2*c[8] + 6*c[9] - 6*c[10] - 6*c[12])/hh == 0, (12*c[10] - dd*hh^2*c[11] - 6*c[12])/hh == 0, (dd*hh^2*c[11] - 6*c[12])/(dd*hh^3) == 0, (dd*hh^2*c[11] - 6*c[12])/hh == 0, (3*c[6] - c[12])/hh == 0, dd*hh*(3*c[6] - c[12]) == 0, (c[9] - c[12])/hh == 0, dd*hh*(c[9] - c[12]) == 0, dd*hh*(c[10] - c[12]) == 0, (-c[10] + c[12])/hh == 0, (2*dd*hh^2*c[4] + 2*dd*hh^2*c[5] - 18*c[6] - dd*hh^2*c[7] - dd*hh^2*c[8] + 6*c[9] - 6*c[10] + 6*c[12])/hh == 0, (-12*c[9] + dd*hh^2*c[11] + 6*c[12])/hh == 0, (2*dd*hh^2*c[4] + 2*dd*hh^2*c[5] + 18*c[6] - dd*hh^2*c[7] - dd*hh^2*c[8] - 12*c[9] - dd*hh^2*c[11] + 12*c[12])/(dd*hh^3) == 0, (2*dd*hh^2*c[4] + 2*dd*hh^2*c[5] + 36*c[6] - dd*hh^2*c[7] - dd*hh^2*c[8] - 30*c[9] + 18*c[12])/(dd*hh^3) == 0, (-12*c[9] - dd*hh^2*c[11] + 18*c[12])/(dd*hh^3) == 0} (* coefmatrix = ... suppressed *) unknownlist = {c[1], c[2], c[3], c[4], c[5], c[6], c[7], c[8], c[9], c[10], c[11], c[12]} parameters = {hh, dd} ------------------------------------- Conclusions and Future Work We offer the scientific community a Mathematica package to carry out the tedious calculations of conserved densities for systems of nonlinear DDEs. The code diffdens.m, together with several data and output files, is available via anonymous FTP. For lattices with parameters, the code automatically determines the compatibility conditions on these parameters so that a sequence of polynomial conserved densities might exist. The existence of a large number of conservation laws is an indicator of integrability of the lattice. Therefore, by generating the compatibility conditions, one can analyze classes of parameterized DDEs and filter out the candidates for complete integrability. Future generalizations of the algorithm will exploit other symmetries in the hope to find conserved densities of non-polynomial form. ------------------------------------- Contact Information To learn about new updates of the program, or in case of trouble, contact me. By phone: (303) 273-3881 (office, with voice mail) or 3860 (secretary), or (303) 440-6089 (home, with answering service); By fax: (303) 273-3875 (mention for Dr. Hereman) By email: whereman@mines.edu By mail: Dr. Willy Hereman Associate Professor Department of Mathematical and Computer Sciences Colorado School of Mines Golden, Colorado 80401-1887, USA Any comments about the program are welcomed by the authors. Good luck! Willy Hereman Golden, May 5, 1998. (* ************************* END of DD_READM.TXT ******************** *)