crack.tex 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796
  1. \documentclass[12pt]{article}
  2. %Sets size of page and margins
  3. \oddsidemargin 10mm \evensidemargin 10mm
  4. \topmargin 0pt \headheight 0pt \headsep 0pt
  5. \textheight 23.5cm \textwidth 15cm
  6. \title{The computer algebra package {\sc Crack}}
  7. \author{Thomas Wolf \\
  8. School of Mathematical Sciences \\
  9. Queen Mary and Westfield College \\
  10. University of London \\
  11. London E1 4NS \\
  12. T.Wolf@maths.qmw.ac.uk
  13. \\ \\
  14. Andreas Brand \\Fakult\"{a}t f\"{u}r Mathematik und
  15. Informatik \\Friedrich Schiller Universit\"{a}t Jena \\ 07740 Jena
  16. \\ Germany \\ maa@hpux.rz.uni-jena.de
  17. }
  18. \begin{document}
  19. \maketitle
  20. \tableofcontents
  21. \section{The purpose of {\sc Crack}}
  22. The package {\sc Crack} attempts the solution of an overdetermined
  23. system of ordinary or partial differential
  24. equations (ODEs/PDEs) with at most polynomial nonlinearities.
  25. Under `normal circumstances' the number of DEs which describe physical
  26. processes matches the number of unknown functions which are involved.
  27. Moreover none of those equations can be solved or integrated and
  28. integrability conditions yield only identities. Although applying
  29. the package
  30. {\sc Crack} to such problems
  31. directly will not be of much help usually, it is possible to
  32. investigate difficult DE-systems indirectly by
  33. studying analytic properties which would be useful for their
  34. solution. In this way overdetermined PDE-systems result.
  35. Applications of {\sc Crack} include a program {\sc Conlaw}
  36. for the computation of conservation laws of DEs, a program
  37. {\sc LiePDE} for the computation of infinitesimal symmetries of DEs
  38. and a program {\sc ApplySym} for the computation of symmetry and
  39. similarity variables from infinitesimal symmetries.
  40. \section{Technical details}
  41. \subsection{System requirements}
  42. The required system is {\sc Reduce}, version
  43. 3.6., strictly speaking the PSL version of {\sc Reduce} as distributed by
  44. the Konrad Zuse Institut / Berlin. Work on compatibility issues
  45. aims to provide a CSL {\sc Reduce} compatible version of {\sc Crack}
  46. in near future (by the end of 1998).
  47. Memory requirements depend crucially on the
  48. application.
  49. The {\tt crack.rlg} file is produced from running
  50. {\tt crack.tst} in a 4MB session running {\sc Reduce}, version 3.6 under
  51. {\sc Linux}. On the other hand
  52. it is not difficult to formulate problems that
  53. consume any amount of memory.
  54. \subsection{Installation}
  55. In a running {\sc Reduce} session either do \\
  56. \verb+ in "crack.red"$ + \\
  57. or, in order to speed up computation, either compile it with
  58. \verb+ on comp$ + \\
  59. before the above command, or, generate a fast-loading compiled
  60. file once with \\
  61. \verb+ faslout "crack"$ + \\
  62. \verb+ in "crack.red"$ + \\
  63. \verb+ faslend$ + \\
  64. and load that file to run {\sc Crack} with \\
  65. \verb+ load crack$ +
  66. \subsection{Updates / web demos}
  67. %{\sc Crack} can be run from a web demo
  68. A web demo under the address
  69. \verb+http://cathode.maths.qmw.ac.uk/demo.html+
  70. that was created by Francis Wright and Arrigo Triulzi
  71. allows to run problems of restricted size.
  72. The latest version is available from \\
  73. \verb+ftp://ftp.maths.qmw.ac.uk/pub/tw/crack/+.
  74. Publications related to {\sc Crack} can be found under \\
  75. \verb+http://www.maths.qmw.ac.uk/~tw/public2.html#2+.
  76. \subsection{The files}
  77. The following files are provided with {\sc Crack}
  78. \begin{itemize}
  79. \item {\tt crack.red} contains read-in statements of a number
  80. of files {\tt cr*.red}.
  81. \item {\tt crack.tst} contains test-examples.
  82. \item {\tt crack.rlg} contains the output of {\tt crack.tst}.
  83. \item {\tt crack.tex} is this manual.
  84. \end{itemize}
  85. \subsection{The call}
  86. {\sc Crack} is called by
  87. \begin{tabbing}
  88. {\tt crack}(\=\{{\it equ}$_1$, {\it equ}$_2$, \ldots , {\it equ}$_m$\}, \\
  89. \>\{{\it ineq}$_1$, {\it ineq}$_2$, \ldots , {\it ineq}$_n$\}, \\
  90. \>\{{\it fun}$_1$, {\it fun}$_2$, \ldots , {\it fun}$_p$\}, \\
  91. \>\{{\it var}$_1$, {\it var}$_2$, \ldots , {\it var}$_q$\});
  92. \end{tabbing}
  93. $m,n,p,q$ are arbitrary.
  94. \begin{itemize}
  95. \item
  96. The {\it equ}$_i$ are identically vanishing partial differential expressions,
  97. i.e.\
  98. they represent equations $0 = {\it equ}_i$, which are to be solved for the
  99. functions ${\it fun}_j$ as far as possible, thereby drawing only necessary
  100. conclusions and not restricting the general solution.
  101. \item
  102. The {\it ineq}$_i$ are algebraic or differential expressions which must
  103. not vanish identically for
  104. any solution to be determined, i.e. only such solutions are computed for which
  105. none of the expressions {\it ineq}$_i$ vanishes identically in all independent
  106. variables.
  107. \item
  108. The dependence of the (scalar) functions ${\it fun}_j$ on independent
  109. variables must be defined beforehand with {\tt DEPEND} rather than
  110. declaring these functions
  111. as operators. Their arguments may themselves only be identifiers
  112. representing variables, not expressions.
  113. Also other unknown functions not in ${\it fun}_j$ must not be represented
  114. as operators but only using {\tt DEPEND}.
  115. \item
  116. The functions ${\it fun}_j$ and their derivatives may only occur polynomially.
  117. \item
  118. The ${\it var}_k$ are further independent variables, which are not
  119. already arguments
  120. of any of the ${\it fun}_j$. If there are none then the fourth argument is
  121. the empty list \{\}, although it does no harm to include arguments of
  122. functions ${\it fun}_j$.
  123. \item
  124. The dependence of the ${\it equ}_i$ on the independent variables and on
  125. constants and functions other than ${\it fun}_j$ is arbitrary.
  126. \item
  127. {\sc Crack} can be run in automatic batch mode (by default) or
  128. interactively with the switch {\tt OFF BATCH\_MODE}.
  129. \end{itemize}
  130. \subsection{The result}
  131. The result is a list of solutions
  132. \[ \{{\it sol}_1, \ldots \} \]
  133. where each solution is a list of 4 lists:
  134. \begin{tabbing}
  135. \{\=\{${\it con}_1, \; {\it con}_2, \ldots , \; {\it con}_q$\}, \\
  136. \>\{${\it fun}_a={\it ex}_a, \;\;
  137. {\it fun}_b={\it ex}_b, \ldots , \;\; {\it fun}_p={\it ex}_p$\},\= \\
  138. \>\{${\it fun}_c, \;\; {\it fun}_d, \ldots , \;\; {\it fun}_r$\}, \> \\
  139. \>\{{\it ineq}$_1$, {\it ineq}$_2$, \ldots , {\it ineq}$_s$\}. \> \}
  140. \end{tabbing}
  141. For example, in the case of a linear system as input, there is
  142. at most one solution ${\it sol}_1$.
  143. If {\sc Crack} finds a contradiction as e.g. $0=1$ then there exists no
  144. solution and it returns the empty list \{\}. If {\sc Crack}
  145. can factorize algebraically a non-linear equation then factors are set
  146. to zero individually and different sub-cases are studied through
  147. {\sc Crack} calling itself recursively.
  148. If during such a recursive call a contradiction results,
  149. then this sub-case will not have a solution but other sub-cases still
  150. may have solutions.
  151. The empty list is also returned if no solution exists
  152. which satisfies the inequalities
  153. {\it ineq}$_i \neq 0.$
  154. The expressions ${\it con}_i$ (if there are any), are the
  155. remaining necessary and sufficient conditions for the functions
  156. ${\it fun}_c,\ldots,{\it fun}_r$ in the third list. Those
  157. functions can be original functions from the equations to be
  158. solved (of the second argument of the call of {\sc Crack}) or new
  159. functions or constants which arose from integrations.
  160. The dependence of new functions on variables is declared with {\tt DEPEND}
  161. and to visualize this dependence the algebraic mode function
  162. ${\tt FARGS({\it fun}_i)}$ can be used.
  163. If there are no ${\it con}_i$ then all equations are solved and the
  164. functions in the third list are unconstrained. The elements of the fourth
  165. list are the expressions who have been assumed to be unequal zero
  166. in the derivation of this solution.
  167. The second list contains
  168. equations ${\it fun}_i={\it ex}_i$ where each ${\it fun}_i$ is an
  169. original function and ${\it ex}_i$ is the computed expression
  170. for ${\it fun}_i$.
  171. \subsection{Interactive mode, flags, parameters and the list of procedures}
  172. Under normal circumstances one will try to have problems solved
  173. automatically by {\sc Crack}. An alternative is to input
  174. {\tt OFF BATCH\_MODE;} before calling {\sc Crack} and solve problems
  175. interactively. In interactive mode it is possible to
  176. \begin{itemize}
  177. \item inspect data, like equations and their properties, unknown
  178. functions, variables, identities, a statistics,
  179. \item save, change, add or drop equations,
  180. \item inspect and change flags and parameters which govern individual
  181. modules as well as their interplay,
  182. \item specify how to proceed, like doing
  183. \begin{itemize}
  184. \item one automatic step,
  185. \item one specific step,
  186. \item a number of automatic steps,
  187. \item a specific step as often as possible.
  188. \end{itemize}
  189. \end{itemize}
  190. To get interactive help one enters `h' or `?'.
  191. Flags and parameters are stored as symbolic fluid variables
  192. which means that they can be accessed by {\tt lisp( ... )},
  193. like {\tt lisp( print\_:=5 );} before calling {\sc Crack}.
  194. {\tt print\_}, for example, is a measure of the maximal
  195. length of expressions still to be printed on the screen
  196. (the number of factors in terms).
  197. A complete list of flags and parameters is given at the beginning of
  198. the file {\tt crinit.red}.
  199. One more parameter shall be mentioned, which is the list of modules/procedures
  200. called {\tt proc\_list\_}. In interactive mode this list can be looked
  201. at with {\tt `p'} or be changed with {\tt `cp'}. This list defines
  202. in which order the different modules/procedures are tried whenever
  203. {\sc Crack} has to decide of what to do next. There are exceptions
  204. to this rule possible. Some procedures, say
  205. $P_1$, require after their execution another
  206. specific procedure, say $P_2$, to be executed, independent of whether
  207. $P_2$ would be next according to {\tt proc\_list\_}. This is managed by $P_1$
  208. writing after its completion the procedure $P_2$
  209. into a hot-list. This list is dealt with in the {\tt `to\_do'} step which
  210. comes always first in {\tt proc\_list\_}.
  211. A way to have the convenience of running {\sc Crack} automatically
  212. and still being able to break the fixed rhythm prescribed by {\tt
  213. proc\_list\_} is to have the entry {\tt stop\_batch} in {\tt proc\_list\_}
  214. and have {\sc
  215. Crack} started in automatic batch mode. Then execution is continuing
  216. until none of the procedures which come before {\tt stop\_batch} are
  217. applicable any more so that {\tt stop\_batch} is executed next which will
  218. stop automatic execution and go into interactive mode. This allows
  219. either to continue the computation interactively, or to change the
  220. {\tt proc\_list\_} with {\tt `cp'} and to continue in automatic mode.
  221. The default value of {\tt proc\_list\_} does not include all possible
  222. modules because not all are suitable for any kind of overdetermined
  223. system to be solved. The complete list is shown in interactive mode
  224. under {\tt `cp'}. A few basic modules are described in the following
  225. section. The efficiency of {\sc Crack} in automatic mode is very much
  226. depending on the content of {\tt proc\_list\_} and the sequence of its
  227. elements. Optimizing {\tt proc\_list\_} for a given task needs
  228. experience which can not be formalized in a few simple rules and will
  229. therefore not be explained in more detail here. The following remarks
  230. are only guidelines.
  231. \begin{description}
  232. \item[{\tt to\_do :}] hot list of steps to be taken next, should
  233. always come first,
  234. \item[{\tt subst\_level\_? :}] substitutions of functions by
  235. expressions differing by their maximal allowed size and other
  236. properties,
  237. \item[{\tt separation :}] what is described as direct separation in the
  238. next section,
  239. \item[{\tt gen\_separation :}] what is as indirect separation in the
  240. next section, only to be used for linear problems,
  241. \item[{\tt quick\_integration :}] integration of very specific short equations,
  242. \item[{\tt full\_integration :}] integration of equations which have
  243. the chance to lead to a substitution,
  244. \item[{\tt integration :}] any integration,
  245. \item[{\tt factorization :}] splitting the computation into the
  246. investigation of different subcases resulting from the algebraic
  247. factorization of an equation, only useful for non-linear problems,
  248. \item[{\tt undetlinode :}] parametric solution of single under determined
  249. linear ODE (with non-constant coefficients), only applicable for
  250. linear problems,
  251. \item[{\tt length\_reduction\_1 :}] length reduction by algebraic
  252. combination, only for linear problems,
  253. \item[{\tt length\_reduction\_2 :}] length reduction by differential
  254. reduction,
  255. \item[{\tt decoupling :}] steps towards the computation of a
  256. differential Gr\"{o}bner Basis,
  257. \item[{\tt add\_differentiated\_pdes :}] only useful for non-linear
  258. differential equations with leading derivative occuring non-linearly,
  259. \item[{\tt add\_diff\_star\_pdes :}] for the treatment of non-linear
  260. indirectly separable equations,
  261. \item[{\tt multintfac :}] to find integrating factors of for a system
  262. of equations (very slow),
  263. \item[{\tt alg\_solve\_deriv :}] to be used for equations quadratic in
  264. the leading derivative,
  265. \item[{\tt alg\_solve\_system :}] to be used if a (sub-)system of
  266. equations shall be solved for a set of functions or their derivatives
  267. algebraically,
  268. \item[{\tt subst\_derivative :}] substitution of a derivative of a
  269. function everywhere by a new function if such a derivative exists
  270. \item[{\tt undo\_subst\_derivative :}] undo the above substitution.
  271. \end{description}
  272. \section{Contents of the {\sc Crack} package}
  273. The package {\sc Crack} contains a number of modules.
  274. The basic ones are for computing a pseudo differential Gr\"{o}bner
  275. Basis (using integrability conditions in a systematic way), integrating
  276. exact PDEs, separating PDEs, solving DEs containing functions of only
  277. a subset of all variables and solving standard ODEs (of Bernoulli or
  278. Euler type, linear, homogeneous and separable ODEs). These facilities
  279. will be described briefly together with examples. The test file
  280. {\tt crack.tst} demonstrates these and others.
  281. \subsection{Pseudo Differential Gr\"{o}bner Basis}
  282. This module (called `decoupling' in {\tt proc\_list\_})
  283. reduces derivatives in equations by using other equations and it applies
  284. integrability conditions to formulate additional equations which are
  285. subsequently reduced, and so on.
  286. %How this could work is demonstrated in the following example.
  287. %The integrability condition for the system
  288. %\[ \begin{array}{cccl}
  289. %f = f(x,y), \; \; & f,_{x} & = & 1 \\
  290. % & f,_{y} & = & (f-x-1/y)x - 1/y^2
  291. %\end{array} \]
  292. %provides an algebraic condition for the function $f$
  293. %which turns out not only to be necessary but also sufficient to solve both
  294. %equations:
  295. %\begin{eqnarray*}
  296. % 0 = f,_{xy} - f,_{yx} & = & - xf,_x - f + 2x + 1/y \\
  297. % & = & - f + x + 1/y \; \; \; \; \; \;
  298. % \mbox{(with $f,_x$ from above)}
  299. %\end{eqnarray*}
  300. %\[ \rightarrow f = x + 1/y. \]
  301. A general algorithm to bring a system of PDEs into a standard form
  302. where all integrability conditions are satisfied by applying
  303. a finite number of additions, multiplications and differentiations
  304. is based on the general theory of involutive systems \cite{Riq,Th,Ja}.
  305. Essential to this theory is a total ordering of partial derivatives
  306. which allows assignment to each PDE of a {\em Leading Derivative}
  307. (LD) according to a chosen ordering of functions
  308. and derivatives. Examples for possible orderings are
  309. \begin{itemize}
  310. \item lex.\ order of functions $>$ lex.\ order of variables,
  311. \item lex.\ order of functions $>$ total differential order $>$ lex.\
  312. order of variables,
  313. \item total order $>$ lex.\ order of functions $>$ lex.\ order of variables
  314. \end{itemize}
  315. or mixtures of them by giving weights to individual functions and variables.
  316. Above, the `$>$' indicate ``before'' in priority of criteria. The principle
  317. is then to
  318. \begin{itemize}
  319. \item take two equations at a time and differentiate them as often as
  320. necessary to get equal LDs,
  321. \item regard these two equations as algebraic equations in
  322. the common LD and calculate the remainder w.r.t.\ the LD, i.e.\ to
  323. generate an equation without the LD by the Euclidean algorithm, and
  324. \item add this equation to the system.
  325. \end{itemize}
  326. Usually pairs of equations are taken first, such that only one must be
  327. differentiated. If in such a generation step one of both equations is not
  328. differentiated then it is called a
  329. simplification step and this equation will be replaced by the new equation.
  330. The algorithm ends if each combination of two equations yields only equations
  331. which simplify to an identity modulo the other equations.
  332. A more detailed description is given e.g. in \cite{Alex,Reid1}.
  333. Other programs implementing this algorithm are described e.g. in
  334. \cite{FS,Alex,Fush,Reid1} and \cite{Mans}.
  335. In the interactive mode of {\sc Crack} it is possible to change the
  336. lexicographical ordering of variables, of functions, to choose between
  337. `total differential order' ordering of variables or lexicographical
  338. ordering of variables and to choose whether lexicographical ordering
  339. of functions should have a higher priority than the ordering of the
  340. variables in a derivative, or not.
  341. An example of the computation of a differential Gr\"{o}bner Basis is
  342. given in the test file {\tt crack.tst}.
  343. \subsection{Integrating exact PDEs}
  344. The technical term `exact' is adapted for PDEs from exterior calculus and
  345. is a small abuse of language but it is useful to characterize the kind of PDEs
  346. under consideration.
  347. The purpose of the integration module in {\sc Crack} is to decide
  348. whether a given differential
  349. expression $D$ which involves unknown functions $f^i(x^j),\;\; 1\leq i\leq m$
  350. of independent variables $x^j, 1\leq j\leq n$
  351. is a total derivative of another expression $I$
  352. w.r.t. some variable $x^k, 1\leq k\leq n$
  353. \[ D(x^i,\; f^j,\; f^j,_p,\; f^j,_{pq}, \ldots)
  354. = \frac{d I(x^i,\; f^j,\; f^j,_p,\; f^j,_{pq}, \ldots)}{d x^k}. \]
  355. The index $k$ is
  356. reserved in the following for the integration variable $x^k.$
  357. With an appropriate function of integration $c^r,$
  358. which depends on all variables except $x^k$ it is no loss of generality
  359. to replace $0 = D$ by $0 = I + c^r$ in a system of equations.
  360. Of course there
  361. always exists a function $I$ with a total derivative equal to $D$ but
  362. the question is whether for \underline{arbitrary} $f^i$ the integral
  363. $I$ is functionally dependent only on the $f^i$ and their derivatives,
  364. and \underline{not on integrals of $f^i.$} \\
  365. \underline{Preconditions:} \\
  366. $D$ is a polynomial in the $f^i$ and their derivatives. The number of
  367. functions and variables is free.
  368. For deciding the existence of $I$ only, the explicit occurrence of the
  369. variables $x^i$ is arbitrary. In order to actually
  370. calculate $I$ explicitly, $D$ must have the property that all terms in $D$
  371. must either contain an unknown function of $x^k$ or
  372. must be formally integrable w.r.t. $x^k.$
  373. That means if $I$ exists then
  374. only a special explicit occurrence of $x^k$ can prevent the
  375. calculation of $I$
  376. and furthermore only in those terms which do not contain
  377. any unknown function of $x^k.$
  378. If such terms occur in $D$ and $I$ exists then $I$ can still be expressed
  379. as a polynomial in the $f^i, f^i,_j, \ldots$ and terms containing
  380. indefinite integrals with integrands explicit in $x^k.$ \\
  381. \underline{Algorithm:} \\
  382. Successive partial integration of the term with the highest
  383. $x^k$-derivative of any $f^i.$ By that the
  384. differential order w.r.t. $x^k$ is reduced
  385. successively. This procedure is always applicable because steps involve only
  386. differentiations and the polynomial
  387. integration $(\int h^n\frac{\partial h}{\partial x}dx =
  388. h^{n+1}/(n+1))$ where $h$ is a partial derivative of some function
  389. $f^i.$ For a more detailed description see \cite{WoInt}.\\
  390. \underline{Stop:} \\
  391. Iteration stops if no term with any $x^k$-derivative of any $f^i$ is left.
  392. If in the remaining un-integrated terms any $f^i(x^k)$ itself occurs,
  393. then $I$ is not expressible with $f^i$ and its derivatives only. In
  394. case no $f^i(x^k)$ occurs then any remaining terms can contain $x^k$ only
  395. explicitly. Whether they can be integrated depends on their formal
  396. integrability. For their integration the {\sc Reduce} integrator is
  397. applied. \\
  398. \underline{Speed up:} \\
  399. The partial integration as described above preserves derivatives with
  400. respect to other variables. For example, the three terms $f,_x, f
  401. f,_{xxx}, f,_{xxy}$ can not combine somehow to the same terms in the
  402. integral because if one ignores $x$-derivatives then it is clear that
  403. $f, f^2$ and $f,_y$ are like three completely different expressions
  404. from the point of view of $x$-integrations.
  405. This allows the following drastic speed up
  406. for large expressions. It is possible to partition the complete sum of
  407. terms into partial sum such that each of the partial sum has to be
  408. integrable on its own. That is managed by generating a label for each
  409. term and collecting terms with equal label into partial sums. The
  410. label is produced by dropping all $x$-derivatives from all functions
  411. to be computed and dropping all factors which are not powers of derivatives of
  412. functions to be computed.
  413. The partitioning into partial sums has two effects. Firstly, if the
  414. integration of one partial sum fails then the remaining sums do not have
  415. to be tried for integration. Secondly, doing partial integration for
  416. each term means doing many subtractions. It is much faster to subtract
  417. terms from small sums than from large sums.
  418. \underline{Example :} \\
  419. We apply the above algorithm to
  420. \begin{equation}
  421. D := 2f,_yg' + 2f,_{xy}g + gg'^3 + xg'^4 + 3xgg'^2g'' = 0
  422. \label{D}
  423. \end{equation}
  424. with $f = f(x,y), \, g = g(x), \, '\equiv d/dx.$
  425. Starting with terms containing $g$
  426. and at first with the highest derivative $g,_{xx},$ the steps are
  427. \[
  428. \begin{array}{rcccl}
  429. \int 3xgg,_x^2g,_{xx} dx
  430. & = & \int d(xgg,_x^3)
  431. & - & \int \left( \partial_x(xg) g,_x^3\right) dx \\ \\
  432. & = & xgg,_x^3 & - & \int g,_x^3(g + xg,_x) dx,
  433. \end{array} \]
  434. \[ I := I + xgg,_x^3 \]
  435. \[ D := D - g,_x^3(g + xg,_x) - 3xgg,_x^2g,_{xx} \]
  436. The new terms $- g,_x^3(g + xg,_x)$ are of lower order than $g,_{xx}$
  437. and so in the expression $D$ the maximal order of $x$-derivatives
  438. of $g$ is lowered. The conditions that $D$ is exact are the following.
  439. \begin{itemize}
  440. \item The leading derivative must occur linearly before each partial
  441. integration step.
  442. \item After the partial integration of the terms with first order
  443. $x$-derivatives of $f$ the remaining $D$ must not contain $f$
  444. or other derivatives of $f$, because such terms cannot
  445. be integrated w.r.t.\ $x$ without specifying $f$.
  446. \end{itemize}
  447. The result of $x$- and $y$-integration in the above example is
  448. (remember $g=g(x)$)
  449. \begin{equation}
  450. 0 = 2fg + xygg,_x^3 + c_1(x) + c_2(y) \; \; (=I). \nonumber
  451. \end{equation}
  452. {\sc Crack} can now eliminate $f$ and substitute
  453. for it in all other equations. \\
  454. \underline{Generalization:} \\
  455. If after applying the above basic algorithm, terms are left which contain
  456. functions of $x^k$ but each of these functions depends only on a subset of
  457. all $x^i, 1\leq i\leq n,$ then a generalized version of the above algorithm
  458. can still provide a formal expression for the integral $I$
  459. (see \cite{WoInt}). The price consists of
  460. additional differential conditions, but they are equations in less variables
  461. than occur in the integrated equation. Integrating for example
  462. \begin{equation}
  463. \tilde{D} = D + g^2(y^2 + x\sin y + x^2e^y) \label{Dnew}
  464. \end{equation}
  465. by introducing as few
  466. new functions and additional conditions as possible gives as the integral
  467. $\tilde{I}$
  468. \begin{eqnarray*}
  469. \tilde{I} & = & 2fg + xygg,_{x}^{3} + c_1(x) + c_2(y) \\
  470. & & + \frac{1}{3}y^3c_3'' - \cos y(xc_3'' - c_3)
  471. + e^y(x^2c_3'' - 2xc_3' + 2c_3)
  472. \end{eqnarray*}
  473. with $c_3 = c_3(x), \, '\equiv d/dx$ and the single additional
  474. condition $g^2 = c_3'''.$
  475. The integration of the new terms of (\ref{Dnew}) is
  476. achieved by partial integration again, for example
  477. \begin{eqnarray*}
  478. \int g^2x^2 dx & = & x^2\int g^2 dx - \int (2x\!\int g^2 dx) dx \\
  479. & = & x^2\int g^2 dx - 2x\int\!\!\int g^2 dx
  480. + 2 \int\!\!\int\!\!\int g^2 dx \\
  481. & = & x^2c_3'' - 2xc_3' + 2c_3.
  482. \end{eqnarray*}
  483. \underline{Characterization:} \\
  484. This algorithm is a decision algorithm which does not involve any
  485. heuristic.
  486. After integration the new equation is still a polynomial
  487. in $f^i$ and in the new constant or function of integration.
  488. Therefore the algorithms for bringing the system into standard form can still
  489. be applied to the PDE-system
  490. after the equation $D = 0$ is replaced by $I = 0.$
  491. The complexity of algorithms for bringing a PDE-system into a standard
  492. form depends nonlinearly on the order of these equations because of
  493. the nonlinear increase of the number of different leading derivatives
  494. and by that the number of equations generated intermediately by such
  495. an algorithm. It therefore in general pays off to integrate equations
  496. during such a standard form algorithm.
  497. If an $f^i,$ which depends on all variables, can be eliminated after an
  498. integration, then depending on its length
  499. it is in general helpful to substitute $f^i$ in other equations and
  500. to reduce the number of equations and functions by one. This is especially
  501. profitable if the replaced expression is short and
  502. contains only functions of less variables than $f^i.$ \\
  503. \underline{Test:} \\
  504. The corresponding test input is
  505. \begin{verbatim}
  506. depend f,x,y;
  507. depend g,x;
  508. crack({2*df(f,y)*df(g,x)+2*df(f,x,y)*g+g*df(g,x)**3
  509. +x*df(g,x)**4+3*x*g*df(g,x)**2*df(g,x,2)
  510. +g**2*(y**2+x*sin y+x**2*e**y)},
  511. {},{f,g},{});
  512. \end{verbatim}
  513. The meaning of the {\sc Reduce} command {\tt depend} is to declare that $f$
  514. depends in an unknown way on $x$ and $y$. For more details on the
  515. algorithm see \cite{WoInt}.
  516. \subsection{Direct separation of PDEs}
  517. As a result of repeated integrations the functions in the
  518. remaining equations have less and less variables. It therefore may happen
  519. that after a substitution an equation results where at least one variable
  520. occurs only explicitly and not as an argument of an unknown function.
  521. Consequently all coefficients of linearly independent expressions in this
  522. variable can be set to zero individually. \\
  523. {\em Example:} \\
  524. $f = f(x,y), \;\; g = g(x), \;\; x,y,z$ are independent variables.
  525. The equation is
  526. \begin{equation}
  527. 0 = f,_y + z(f^2+g,_x) + z^2(g,_x+yg^2) \label{sep}
  528. \end{equation}
  529. $x$-separation? $\rightarrow$ no \\
  530. $y$-separation? $\rightarrow$ no \\
  531. $z$-separation? $\rightarrow$ yes: $0 \,=\, f,_y \,=\, f^2+g,_x \,=\,
  532. g,_x+yg^2$ \\
  533. $y$-separation? $\rightarrow$ yes: $0 = g,_x = g^2\;\;$
  534. (from the third equation from the $z$-separation)
  535. If $z^2$ had been replaced in (\ref{sep}) by a third
  536. function $h(z)$ then direct separation would not have been possible.
  537. The situation changes if $h$ is a parametric function which is
  538. assumed to be independently given and which should not be
  539. calculated, i.e.\ $f$ and $g$ should be calculated for any
  540. arbitrary given $h(z)$. Then the same separation could have been
  541. done with an extra treatment of the special case $h,_{zz} = 0,$
  542. i.e.\ $h$ linear in $z$. This different treatment of unknown functions
  543. makes it necessary to input explicitly the functions to be
  544. calculated as the third argument to {\sc Crack}. The input
  545. in this case would be
  546. \begin{verbatim}
  547. depend f,x,y;
  548. depend g,x;
  549. depend h,z;
  550. crack({df(f,y)+z*f**2+(z+h)*df(g,x)+h*y*g**2},{},{f,g},{z});
  551. \end{verbatim}
  552. The fourth parameter for {\sc Crack} is necessary to make clear that
  553. in addition to the variables of $f$ and $g$, $z$ is also an independent
  554. variable.
  555. If the flag {\tt independence\_} is not {\tt nil} then {\sc Crack} will
  556. stop if linear independence of the explicit expressions of the
  557. separation variable (in the example $1,z,z^2$) is not clear and ask
  558. interactively whether separation should be done or not.
  559. \subsection{Indirect separation of PDEs}
  560. For the above direct separation a precondition is that at least one
  561. variable occurs only explicitly or as an argument of parametric
  562. functions. The situation where each variable is an argument of at least
  563. one function but no function contains all independent variables of an
  564. equation needs a more elaborate treatment.
  565. The steps are these
  566. \begin{itemize}
  567. \item A variable $x_a$ is chosen which occurs in as few functions as possible.
  568. This variable will be separated directly later which
  569. requires that all unknown functions $f_i$ containing $x_a$ are to be
  570. eliminated. Therefore, as long as $F:=\{f_i\}$ is not empty do the following:
  571. \begin{itemize}
  572. \item Choose the function $f_i(y_p)$ in $F$ with the smallest number of
  573. variables $y_p$ and with $z_{ij}$ as those variables on which $f_i$ does
  574. not depend.
  575. \item Identify all different products $P_{ik}$ of powers of
  576. $f_i$-derivatives and of $f_i$ in the equation.
  577. Determine the $z_{ij}$-dependent factors $C_{ik}$ of the coefficients
  578. of $P_{ik}$ and store them in a list.
  579. \item For each $C_{il}$ ($i$ fixed, $l=1,\ldots)$ choose a $z_{ij}$ and :
  580. \begin{itemize}
  581. \item divide by $C_{il}$ the equation and all following elements
  582. $C_{im}$ with $m>l$ of this list, such that these elements are
  583. still the actual coefficients in the equation after the division,
  584. \item differentiate the equation and the $C_{im}, m>l$ w.r.t.\ $z_{ij}$
  585. \end{itemize}
  586. \end{itemize}
  587. \item The resulting equation no longer contains any unknown function of $x_a$
  588. and can be separated w.r.t.\ $x_a$ directly in case $x_a$ still occurs
  589. explicitly. In both cases the equation(s) is (are) free of $x_a$ afterwards
  590. and inverting the sequence of integration and multiplication
  591. of all those equations (in case of direct separability) will also result
  592. in an equation(s) free of $x_a.$ More exactly, the steps are
  593. \begin{itemize}
  594. \item multiplication of the equation(s) and the $C_{im}$ with
  595. $m<l$ by the elements
  596. of the $C_{ik}$-lists in exactly the inverse order,
  597. \item integration of these exact PDEs and the $C_{im}$ w.r.t.\ $z_{ij}$.
  598. \end{itemize}
  599. \item The equations originating that way are used to evaluate those
  600. functions which do not depend on $x_a$ and which survived in the above
  601. differentiations. Substituting these functions in the original equation,
  602. may enable direct separability w.r.t. variables on which the $f_i$
  603. do not depend on.
  604. \item The whole procedure is repeated for another variable $x_b$ if the
  605. original DE could not be separated directly and still has the property that
  606. it contains only functions of a subset of all variables in the equation.
  607. \end{itemize}
  608. The additional bookkeeping of coefficients $C_{ik}$ and their updating by
  609. division, differentiation, integration and multiplication is done to use
  610. them as integrating factors for the backward integration.
  611. The following example makes this clearer. The equation is
  612. \begin{equation}
  613. 0 = f(x) g(y) - \frac{1}{2}xf'(x) - g'(y) - (1+x^2)y. \label{isep}
  614. \end{equation}
  615. The steps are (equal levels of indentation in the example correspond to
  616. those in the algorithm given above)
  617. \begin{itemize}
  618. \item $x_1:=x, \, F=\{f\}$
  619. \begin{itemize}
  620. \item Identify $f_1:=f, \; \; \; \; \; y_1:=x, \; \; \; \; \; z_{11}:=y$
  621. \item and $P_1=\{f',f\}, \; \; \; \; \; C_1=\{1,g\}$
  622. \begin{itemize}
  623. \item Divide $C_{12}$ and
  624. (\ref{isep}) by $C_{11}=1$ and differentiate w.r.t. $z_{11}=y:$
  625. \begin{eqnarray}
  626. 0 & = & fg' - g'' - (1+x^2) \label{isep2} \\
  627. C_{12} & = & g' \nonumber
  628. \end{eqnarray}
  629. \item Divide (\ref{isep2}) by $C_{12}=g'$ and differentiate w.r.t. $z_{11}=y:$
  630. \[ 0 = - (g''/g')' - (1+x^2)(1/g')' \]
  631. \end{itemize}
  632. \end{itemize}
  633. \item Direct separation w.r.t.\ $x$ and integration:
  634. \[\begin{array}{rclclcl}
  635. x^2: 0 & = & (1/g')' & \Rightarrow & c_1g' = 1 & \Rightarrow &
  636. g = y/c_1 + c_2 \\
  637. x^0: 0 & = & (g''/g')' & \Rightarrow & c_3g' = g'' & \Rightarrow &
  638. c_3 = 0
  639. \end{array} \]
  640. \item Substitution of $g$ in the original DE
  641. \[0 = (y/c_1+c_2)f - \frac{1}{2}xf' - 1/c_1 - (1+x^2)y \]
  642. provides a form which allows {\sc Crack} standard methods to succeed
  643. by direct separation w.r.t.\ $y$
  644. \[\begin{array}{rclcl}
  645. y^1: 0 & = & f/c_1 - 1 - x^2 & \Rightarrow & f' = 2c_1x \\
  646. y^0: 0 & = & c_2f - \frac{1}{2}xf' - 1/c_1 & \Rightarrow & 0 =
  647. c_2c_1(1+x^2) - c_1x^2 - 1/c_1
  648. \end{array}\]
  649. and direct separation w.r.t.\ $x$:
  650. \begin{eqnarray*}
  651. x^0: 0 & = & c_2c_1 - c_1 \\
  652. x^2: 0 & = & c_2c_1 - 1/c_1 \\
  653. & \Rightarrow & 0 = c_1 - 1/c_1 \\
  654. & \Rightarrow & c_1 = \pm 1 \Rightarrow c_2 = 1.
  655. \end{eqnarray*}
  656. \end{itemize}
  657. We get the two solutions $f = 1 + x^2, g = 1 + y$ and
  658. $f = - 1 - x^2, g = 1 - y.$ The corresponding input to {\sc Crack} would be
  659. \begin{verbatim}
  660. depend f,x;
  661. depend g,y;
  662. crack({f*g-x*df(f,x)/2-df(g,y)-(1+x**2)*y},{},{f,g},{});
  663. \end{verbatim}
  664. \subsection{Solving standard ODEs}
  665. For solving standard ODEs the package {\sc ODESolve} by Malcalm MacCallum and
  666. Francis Wright
  667. \cite{Mal} is applied. This package is distributed with {\sc Reduce}
  668. and can be used independently of {\sc Crack}. The syntax of
  669. {\sc ODESolve} is quite similar to that of {\sc Crack} \\
  670. \verb+depend+ {\it function}, {\it variable}; \\
  671. \verb+odesolve(+ODE, {\it function}, {\it variable}); \\
  672. In the present form (1998) it solves standard first order ODEs
  673. (Bernoulli and Euler type, with separable variables, $\ldots$) and linear
  674. higher order ODEs with constant coefficients.
  675. An improved version is currently under preparation by Francis Wright.
  676. The applicability of {\sc ODESolve} is
  677. increased by a {\sc Crack}-subroutine which recognizes such PDEs in which
  678. there is only one unknown function of all variables and all occurring
  679. derivatives of this function
  680. are only derivatives w.r.t. one variable of only one partial derivative.
  681. For example the PDE for $f(x,y)$
  682. \[ 0 = f,_{xxy} + f,_{xxyy} \]
  683. can be viewed as a first order ODE in $y$ for $f,_{xxy}.$
  684. \section{Acknowledgement}
  685. Francis Wright contributed a module that provides simplifications
  686. of expressions involving symbolic derivatives and integrals. Also, {\sc Crack}
  687. makes extensive use of the {\sc Reduce} program {\sc ODESolve} written
  688. by Malcolm MacCallum and Francis Wright.
  689. Arrigo Triulzi provided a module to support the use of different total
  690. orderings of derivatives in doing pseudo differential Gr\"{o}bner
  691. basis computations.
  692. Work on this package has been supported by the Konrad Zuse
  693. Institut/Berlin through a fellowship of T.W.. Winfried
  694. Neun and Herbert Melenk are thanked for many discussions and
  695. constant support.
  696. Anthony Hearn provided free copies of {\sc Reduce} to us as a
  697. {\sc Reduce} developers group which also is thankfully acknowledged.
  698. \begin{thebibliography}{99}
  699. \bibitem{Riq} C. Riquier, Les syst\`{e}mes d'\'{e}quations aux d\'{e}riv\'{e}es
  700. partielles, Gauthier--Villars, Paris (1910).
  701. \bibitem{Th} J. Thomas, Differential Systems, AMS, Colloquium
  702. publications, v. 21, N.Y. (1937).
  703. \bibitem{Ja} M. Janet, Le\c{c}ons sur les syst\`{e}mes d'\'{e}quations aux
  704. d\'{e}riv\'{e}es, Gauthier--Villars, Paris (1929).
  705. \bibitem{Topu} V.L. Topunov, Reducing Systems of Linear Differential
  706. Equations to a Passive Form, Acta Appl. Math. 16 (1989) 191--206.
  707. \bibitem{Alex} A.V. Bocharov and M.L. Bronstein, Efficiently
  708. Implementing Two Methods of the Geometrical Theory of Differential
  709. Equations: An Experience in Algorithm and Software Design, Acta. Appl.
  710. Math. 16 (1989) 143--166.
  711. \bibitem{Reid1} G.J. Reid, A triangularization algorithm which
  712. determines the Lie symmetry algebra of any system of PDEs, J.Phys. A:
  713. Math. Gen. 23 (1990) L853-L859.
  714. \bibitem{FS} F. Schwarz, Automatically Determining Symmetries of Partial
  715. Differential Equations, Computing 34, (1985) 91-106.
  716. \bibitem{Fush} W.I. Fushchich and V.V. Kornyak, Computer Algebra
  717. Application for Determining Lie and Lie--B\"{a}cklund Symmetries of
  718. Differential Equations, J. Symb. Comp. 7, (1989) 611--619.
  719. \bibitem{Mans} E.L. Mansfield,
  720. The differential algebra package diffgrob2, Mapletech 3, (1996) 33-37 .
  721. \bibitem{Ka} E. Kamke, Differentialgleichungen, L\"{o}sungsmethoden
  722. und L\"{o}sungen, Band 1, Gew\"{o}hnliche Differentialgleichungen,
  723. Chelsea Publishing Company, New York, 1959.
  724. \bibitem{Wo} T. Wolf, An Analytic Algorithm for Decoupling and Integrating
  725. systems of Nonlinear Partial Differential Equations, J. Comp. Phys.,
  726. no. 3, 60 (1985) 437-446 and, Zur analytischen Untersuchung und exakten
  727. L\"{o}sung von Differentialgleichungen mit Computeralgebrasystemen,
  728. Dissertation B, Jena (1989).
  729. \bibitem{WoInt} T. Wolf, The Symbolic Integration of Exact PDEs,
  730. preprint, (1991).
  731. \bibitem{WM} M.A.H. MacCallum, F.J. Wright, Algebraic Computing with REDUCE,
  732. Clarendon Press, Oxford (1991).
  733. \bibitem{Mal} M.A.H. MacCallum, An Ordinary Differential Equation
  734. Solver for REDUCE, Proc. ISAAC'88, Springer Lect. Notes in Comp Sci.
  735. 358, 196--205.
  736. \bibitem{Step} H. Stephani, Differential equations, Their solution using
  737. symmetries, Cambridge University Press (1989).
  738. \bibitem{LIEPDE} T. Wolf, An efficiency improved program {\sc LiePDE}
  739. for determining Lie - symmetries of PDEs, Proceedings of the workshop on
  740. Modern group theory methods in Acireale (Sicily) Nov. (1992)
  741. \bibitem{Karp} V.I. Karpman, Phys. Lett. A 136, 216 (1989)
  742. \bibitem{Cham} B. Champagne, W. Hereman and P. Winternitz, The computer
  743. calculation of Lie point symmetries of large systems of differential
  744. equation, Comp. Phys. Comm. 66, 319-340 (1991)
  745. \end{thebibliography}
  746. \end{document}