detools::pdesolve
-- solver for
partial differential equationsdetools::pdesolve
solves partial differential
equations.
detools::pdesolve(pde, indl, depl)
detools::pdesolve(df, DV)
pde |
- | the differential equation(s): either a single expression or a list of expressions. |
indl |
- | the independent variables: a list of (indexed) identifiers. |
depl |
- | the dependent variables: a list of (indexed) identifiers. |
df |
- | the differential equation(s): either a single element
of a domain in Cat::DifferentialFunction(DV) or a list of
such elements. |
DV |
- | the differential variables: a domain in
Cat::DifferentialVariable . |
a single expression or a list of expressions; each entry represents
a component of the solution. If detools::pdesolve
is not
able to solve the equation, it is returned unchanged.
detools::charSolve
, detools::detSys
, solve
detools::pdesolve
.
Currently, the main technique used is the method of characteristics.
Thus detools::pdesolve
can basically only solve some
quasi-linear first order equations. Further solution techniques will be
added in the future.The following call solves the quasi-linear equation
diff(u,t)-u*(diff(u,x)+diff(u,y))=0 with the initial
condition u(t=0)=x+y. For the input of the differential
equation a condensed notation is used (u([t])
instead of
diff(u(x,y,t),t)
etc.); the initial condition is given in
parametrized form.
>> detools::pdesolve(u([t]) - u*(u([x]) + u([y])), [t, x, y], [u], {t = 0, x = sigma, y = tau, u = sigma + tau}, {sigma, tau})
2 (t x - x - t y) u = y - x + ----------------- 2 t - 1
One can easily check by entering this expression into
the differential equations that it is indeed a solution (don't forget
to use normal
!) and
that for t=0 we have u=x+y as required by the
initial condition.