Description
-
The
initialdata
function determines the initial data required to obtain a formal power series solution for a PDE or ODE system at a point (see
rtaylor
). The input system must be in standard or involutive form, so all equations must be of the form
derivative = expression
, and there must be no additional relations between the dependent variables that are not accounted for by the equations of the system. It can be used on any PDE or ODE system in isolated form, as well as for a single case result output by
rifsimp
. In general, all integrability conditions (equality of mixed partials) must be satisfied to obtain an accurate answer, so it is best to use
rifsimp
to simplify the system before calculation of the initial data.
-
The optional
vars
argument allows specification of the variables to compute the initial data of. This option is useful for
classification
problems, where different dependent variables play different roles in the system. This option also provides a way to specify the variables of a problem and their dependencies (in the event that one of the dependent variables does not appear in the
Solved
list, for example).
-
The output is given in table form with the
Finite
entry containing the required zero dimensional initial data (constants), and the
Infinite
entry containing the required higher dimensional data (functions).
-
When the input to
initialdata
is a
rifresult
, then additional information is provided on output. As well as the infinite and finite initial data, the resulting table may contain a
Pivots
and/or
Constraint
entry (if these entries are present in the
rifresult
). These returned lists of equations are given in terms of the initial data.
-
When
Constraint
equations are present in the result, these equations must be satisfied by the initial data for the underlying system to be 'well posed'. These
Constraint
s must be accounted for manually.
-
Notes:
-
When not using the
rifresult
form of the
initialdata
call, any nonlinear constraints must be converted to initial data form and imposed manually.
-
The initial data required for a system is independent of the right hand side of the solved form equations, so for the examples below we may simply ignore the right hand side.
-
Background Information
: Formal Power Series and the
initialdata
algorithm
-
Being able to obtain a formal power series solution of a PDE or ODE system at a point essentially means that the values of all derivatives of the solution at that point are known, or can be found through differential relations from the system.
-
As a simple example, consider the ODE in
u(x)
,
u'' = u u'
(where prime notation is used to denote differentiation). Here the initial data would simply be
u(x0)
and
u'(x0
). With this data and the ODE, we could then determine
u''(x0) = u(x0) u'(x0)
, and from the derivative of the ODE, we could obtain
u'''(x0) = u'(x0)^2+u(x0) u''(x0)
, and so on.
-
Knowledge of all derivatives then allows us to write
u(x) = u(x0)+(x-x0) u'(x0)+(x-x0)^2 u(x0) u'(x0)/2+`...`
to any desired order.
-
As an example of the
initialdata
algorithm in two dimensions, consider the following system:
> sys:=[diff(f(x,y),x,x,x)=0,diff(f(x,y),x,y)=0];
3 2
d d
sys := [--- f(x, y) = 0, ----- f(x, y) = 0]
3 dy dx
dx
> initialdata(sys);
table([Finite = [D[1](f)(x[0], y[0]) = _C1, D[1, 1](f)(x[0], y[0]) = _C2],
Infinite = [f(x[0], y) = _F1(y)]
])
-
In this case we have one arbitrary function and two arbitrary constants. Plots can be used to visualize how the
initialdata
algorithm calculates this data. Consider an integer-valued graph where the x-axis represents differentiation by
x
, and the y-axis represents differentiation by
y
. Looking at
f[xxx]
from our original system, we can place dots at that value and at all of its derivatives:
> d1:=[3,0],[4,0],[3,1],[4,1],[3,2],[4,2],[3,3],[4,3],[3,4],[4,4]:
> plot([d1], x=-0.1..4.1, y=-0.1..4.1, style=point,
xtickmarks=[0,1,2,3,4], ytickmarks=[0,1,2,3,4]);
4 + H H
|
|
|
3 + H H
|
|
|
2 + H H
|
|
|
1 + H H
|
|
|
-+--------+--------+--------*--------*-
| 1 2 3 4
-
Note, for example, that the point (4,1) corresponds to
f[xxxxy]
, which can be obtained from the differentiation of
f[xxx]
with respect to
x
and
y
. Adding in all derivatives that are known from the
f[xy]
equation gives the following graph:
> d2:=[1,1],[2,1],[3,1],[4,1],[1,2],[2,2],[3,2],[4,2],[1,3],[2,3],
[3,3],[4,3],[1,4],[2,4],[3,4],[4,4]:
> plot([d1,d2], x=-0.1..4.1, y=-0.1..4.1, style=point,
xtickmarks=[0,1,2,3,4], ytickmarks=[0,1,2,3,4]);
4 + A A A A
|
|
|
3 + A A A A
|
|
|
2 + A A A A
|
|
|
1 + A A A A
|
|
|
-+--------+--------+--------*--------*-
| 1 2 3 4
-
Now the objective is simply to fill in all missing points. From our graph we can see that all points of the form
(0,i)
are missing, which explains the arbitrary function of
y
in the answer. This function describes the data for all
y
derivatives of
f
. We still require the points (1,0) and (2,0), which correspond to the arbitrary constants present in the answer for the values of
f[x]
and
f[xx]
, as given in the
Finite
list.
Examples
>
with(Rif):
sys1:=[diff(f(x,y,z),x,x)=0,diff(f(x,y,z),y)=0,diff(f(x,y,z),z)=0];
This system is fully specified if the following derivatives are known.
>
initialdata(sys1);
For this next system, the initial data contains a number of arbitrary functions of one variable.
>
sys2:=[diff(f(x,y,z),x,y)=0,diff(f(x,y,z),x,z)=0,
diff(f(x,y,z),y,z)=0];
>
initialdata(sys2);
For the next system, the initial data contains a number of arbitrary functions of two variables.
>
sys3:=[diff(f(x,y,z),x,y,z)=0];
>
initialdata(sys3);
Of course, we must include the one-dimensional heat equation.
>
sys4:=[diff(u(x,t),t)=diff(u(x,t),x,x)];
>
initialdata(sys4);
This example is a system that contains mixed data:
>
sys5:=[diff(f(x,y,z),x,y,y)=0,diff(f(x,y,z),x,z)=0,diff(f(x,y,z),y,z,z)=0];
>
initialdata(sys5);
And an example of use of initialdata with a nonlinear rif result:
>
sys6:=[diff(u(x),x,x)^2*u(x)+diff(u(x),x)^3];
>
rif6:=rifsimp(sys6);
>
initialdata(rif6);
where it is understood that the selected initial data must obey the nonlinear constraint (so in truth we only have two free parameters) and must not violate the pivots (so
_C3<>0
, and as a result
_C2<>0
).