Up | Next | Prev | PrevTail | Tail |
This package computes first integrals of ordinary differential equations (ODEs) or conservation laws (CLs) of partial differential equations (PDEs) or systems of both. Four different approaches to compute CLs have been implemented in four different procedures CONLAW1…CONLAW4. All use the package CRACK to solve the overdetermined system of conditions they generate.
The procedures CONLAW1, CONLAW2, CONLAW3, CONLAW4try to find conservation laws for a given single/system of differential equation(s) (ODEs or PDEs)
All four procedures have the same syntax. They have two parameters, both lists. The first parameter specifies the equations (20.55), the second specifies the computation to be done. One can either specify an ansatz for \(P^i, Q^{\nu }\) or investigate a general situation, only specifying the order of the characteristic functions or the conserved current.
The procedures CONLAWi, \(i=1,2,3,4\), are called through
CONLAWi(problem, runmode);
where both parameters are lists.
The first parameter problem specifies the DEs to be investigated. It has the form {equations, ulist, xlist}where …
equations is a list of equations, each of the form df(ui,…)=…where the left-hand side df(ui,…)is selected such that
the right-hand side of an equation must not include the derivative on the left-hand side nor a derivative of it;
the left-hand side of any equation should not occur in any other equation nor any derivative of the left-hand side.
If CONLAW3or CONLAW4are run where no substitutions are made then the left-hand sides of equations can be df(ui,…)**n=…where nis a number. No distinction is made between equations and constraints.
ulist is a list of function names, which can be chosen freely; the number of functions and equations need not be equal.
xlist is a list of variable names, which can be chosen freely.
The second parameter runmode specifies the calculation to be done. It has the form {minord, maxord, expl, flist, inequ}where …
minord and maxord are respectively the minimum and maximum of the highest order of derivatives of \(u\)
in p_tfor CONLAW1, where tis the first variable in xlist;
in q_jfor CONLAW2, CONLAW3and CONLAW4.
expl is tor nilto indicate whether or not the characteristic functions q_ior conserved current may depend explicitly on the variables of xlist.
flist is a list of unknown functions in any ansatz for p_i, q_j, also all parameters and parametric functions in the equation that are to be calculated such that conservation laws exist; if there are no such unknown functions then flist is the empty list {}.
inequ is a list of expressions none of which may be identically zero for the conservation law to be found; if there is no such expression then inequ is an empty list {}.
The procedures CONLAWireturn a list of conservation laws {\(C_1,C_2,\ldots \)}; if no non-trivial conservation law is found they return the empty list {}. Each \(C_i\) representing a conservation law has the form {{\(P^1,P^2,\ldots \)},{\(Q^1,Q^2,\ldots \)}}.
An ansatz for a conservation law can be formulated by specifying one or more of the components \(P^i\) for CONLAW1, one or more of the functions \(Q^{\mu }\) for CONLAW2and CONLAW4, or one or more of \(P^i, Q^{\mu }\) for CONLAW3. The \(P^i\) are input as p_iwhere istands for a variable name, and the \(Q^{\mu }\) are input as q_i where istands for an index, which is the number of the equation in the input list equations with which q_iis multiplied.
There is a restriction in the structure of all the expressions for p_iand q_jthat are specified: they must be homogeneous linear in the unknown functions or constants which appear in these expressions. The reason for this restriction is not for CRACK to be able to solve the resulting overdetermined system but for CONLAWito be able afterwards to extract the individual conservation laws from the general solution of the determining conditions.
All such unknown functions and constants must be listed in flist (see above). The dependencies of such functions must be defined before calling CONLAWi. This is done with the command DEPEND, e.g.
DEPEND f,t,x,u$
to specify \(f\) as a function of \(t,x,u\). If one wants to have \(f\) as a function of derivatives of \(u(t,x)\), say \(f\) depending on \(u_{txx}\), then one cannot write
DEPEND f, df(u,t,x,2)$
but instead must write
DEPEND f, u!`1!`2!`2$
if xlist has been specified as {t,x}, because tis the first variable and xis the second variable in xlist and uis differentiated once wrt. tand twice wrt. x; we therefore get u!`1!`2!`2. The character !is the escape character to allow special characters like ` to occur in an identifier name.
It is possible to add extra conditions like PDEs for \(P^i, Q^{\mu }\) as a list cl_condiof expressions that shall vanish.
The input to each of CONLAW1, CONLAW2, CONLAW3and CONLAW4is the same apart from:
an ansatz for \(Q^{\nu }\) is ignored in CONLAW1;
an ansatz for \(P^i\) is ignored in CONLAW2and CONLAW4;
the meaning of mindensord, maxdensord is different in CONLAW1 on the one hand and CONLAW2, CONLAW3, and CONLAW4 on the other (see above).
It matters how the differential equations are input, i.e. which derivatives are eliminated. For example, the Korteweg-de Vries equation if input in the form \(u_{xxx}=-uu_x-u_t\) instead of \(u_t=-uu_x-u_{xxx}\) in CONLAW1 and choosing maxdensord=1 then \(P^i\) will be of at most first order, Div \(P\) of second order and \(u_{xxx}\) will not be substituted and no non-trival conservation laws can be found. This does not mean that one will not find low order conservation laws at all with the substitution \(u_{xxx}\); one only has to go to maxdensord=2 with longer computations as a consequence compared to the input \(u_t=-uu_x-u_{xxx}\) where maxdensord=0 is enough to find non-trivial conservation laws.
The drawback of using \(u_t=\ldots \) compared with \(u_{xxx}=\ldots \) is that when seeking all conservation laws up to some order then one has to investigate a higher-order ansatz, because with each substitution \(u_t=-u_{xxx}+\ldots \) the order increases by 2. For example, if all conservation laws of order up to two in \(Q^{\nu }\) are to be determined then in order to include a \(u_{tt}\)-dependence the dependence of \(Q^{\nu }\) on \(u_x\) up to \(u_{6x}\) has to be considered.
Although for any equivalence class of conserved currents with \(P^i\) differing only by a curl there exist characteristic functions \(Q^{\mu }\), this need not be true for any particular \(P^i\). Therefore one cannot specify a known density \(P^i\) for CONLAW3and hope to calculate the remaining \(P^j\) and the corresponding \(Q^{\mu }\) with CONLAW3. What one can do is to use CONLAW1to calculate the remaining components \(P^j\), and from this a trivial conserved density \(R\) and characteristic functions \(Q^{\nu }\) are computed such that
The \(Q^{\mu }\) are uniquely determined only modulo \(\Delta =0\). If one makes an ansatz for \(Q^{\mu }\) then this freedom should be removed by having the \(Q^{\mu }\) independent of the left-hand sides of the equations and their derivatives. If the \(Q^{\mu }\) were allowed to depend on anything, then (20.57) could simply be solved for one \(Q^{\nu }\) in terms of arbitrary \(P^j\) and other arbitrary \(Q^{\rho }\), giving \(Q^{\nu }\) that are singular for solutions of the differential equations as the expression of the differential equation would appear in the denominator of \(Q^{\nu }\).
Any ansatz for \(P^i,Q^{\nu }\) should as well be independent of the left-hand sides of equations (20.55) and their derivatives.
If in equation (20.57) the right-hand side is of order \(m\) then from the conserved current \(P^i\) a trivial conserved current can be subtracted such that the remaining conserved current is of order at most \(m\). If the right hand side is linear in the highest derivatives of order \(m\) then subtraction of a trivial conserved current can even achieve a conserved current of order \(m-1\). The relevance of this result is that if the right-hand side is known to be linear in the highest derivatives then for \(P^i\) an ansatz of order only \(m-1\) is necessary. To take advantage of this relation if the right-hand side is known to be linear in the highest derivatives, a flag quasilin_rhscan be set to t(see below).
lisp(print_ := nil/0/1/ ...)$
print_:=nilsuppresses all CRACK output; for print_:=\(n\)(\(n\) an integer) CRACK prints only equations with at most \(n\) factors in their terms.
crackhelp()$
shows other flags controlling the solution of the overdetermined PDE-system.
off batch_mode$
solves the system of conditions with CRACK interactively.
lisp(quasilin_rhs := t)$
reduces in the ansatz for \(P^i\) the order to \(m-1\) if the order of the right-hand side is \(m\). This can be used to speed up computations if the right-hand side is known to be linear in the highest derivatives (see the note above).
load_package crack, conlaw0, conlaw1$
where conlaw1can be replaced by conlaw2, conlaw3or conlaw4as appropriate.
Below a CRACK procedure nodepndis used to clean up after each run and delete all dependencies of each function in the list of functions in the argument of nodepnd. More details concerning these examples are given when running the file conlaw.tst(in the REDUCE packages/crackdirectory).
lisp(print_:=nil); % to suppress output from CRACK
A single PDE:
depend u,x,t$ conlaw1({{df(u,t)=-u*df(u,x)-df(u,x,3)}, {u}, {t,x}}, {0, 1, t, {}, {}})$ nodepnd {u}$
A system of equations:
depend u,x,t$ depend v,x,t$ conlaw1({{df(u,t)=df(u,x,3)+6*u*df(u,x)+2*v*df(v,x), df(v,t)=2*df(u,x)*v+2*u*df(v,x) }, {u,v}, {t,x}}, {0, 1, t, {}, {}})$ nodepnd {u,v}$
A system of equations with ansatz:
depend u,x,t$ depend v,x,t$ depend r,t,x,u,v,u!‘2,v!‘2$ q_1:=r*df(u,x,2)$ conlaw2({{df(u,t)=df(v,x), df(v,t)=df(u,x) }, {u,v}, {t,x}}, {2, 2, t, {r}, {r}})$ nodepnd {u,v,r}$
For the determination of parameters, such that conservation laws exist:
depend u,x,t; conlaw1({{df(u,t)=-df(u,x,5)-a*u**2*df(u,x) -b*df(u,x)*df(u,x,2)-c*u*df(u,x,3)}, {u}, {t,x}}, {0, 1, t, {a,b,c}, {}}); nodepnd {u};
For first integrals of an ODE-system including the determination of parameter values \(s,b,r\) such that conservation laws exist:
depend {x,y,z},t; depend a1,x,t; depend a2,y,t; depend a3,z,t; p_t:=a1+a2+a3; conlaw2({{df(x,t) = - s*x + s*y, df(y,t) = x*z + r*x - y, df(z,t) = x*y - b*z}, {x,y,z},{t} }, {0,0,t,{a1,a2,a3,s,r,b},{}}); nodepnd {x,y,z,a1,a2,a3};
Up | Next | Prev | PrevTail | Front |