I tried to NDSolve the PDE system: $$\partial_t y = x\partial_z w \quad\quad \partial_t w = \partial_z y \quad \quad \partial_z x=w $$ for $$(t,z)\in[0,1]\times[-1,0]$$ with initial conditions $$x(0,z)=x_0(z)\quad\quad w(0,z)=-sin^2(z\pi)\quad\quad y(0,z)=1$$ where $x_0(z)$ is the solution of $$x_0'(z)=w(0,z)\quad\quad x_0(0)=0$$ and boundary conditions $$ x(t,0)=0 \quad\quad w(t,0)=w(t,-1)=0 $$
From a mathematical point of view the initial and boundary conditions provided above are sufficient.
However mathematica warns that "an insufficient number of boundary conditions have been specified" and as a result "Artificial boundary effects may be present in the solution".
So there must be something wrong with my code
(*Constructing initial conditions*)
wo[z_] := -Sin[z*π]^2
yo[z_] := 1
s = NDSolve[{x'[z] == wo[z], x[0] == 0}, {x}, {z, 0, -1}]
xo[z_] := First[x[z] /. s]
(*Evolution of initial conditions towards t=1*)
equations := {D[yt[t, z], t] == xt[t,z]*D[wt[t, z], z],
D[wt[t, z], t] == D[yt[t, z], z],
D[xt[t, z], z] == wt[t, z], wt[0, z] == wo[z], yt[0, z] == yo[z],
wt[t, 0] == 0, wt[t, -1] == 0, xt[t, 0] == 0, xt[0, z] == xo[z]}
system = NDSolve[equations, {wt , yt, xt}, {z, 0, -1}, {t, 0, 1}]
I get three errors (NDSolve::pdord
, NDSolve::bcart
, NDSolve::ndcf
), the second being "insufficient number of boundary conditions," but
I cannot see what went wrong. Can anyone help?
yt
? Also you may want to look at the DAE tutorial. Perhaps you can find an idea there, not sure though. $\endgroup$yt
should not need a boundary condition inz
. However, it is possible that Mathematica is confused by this problem and, therefore, is incorrectly asking for the boundary condition. I would try decomposing the PDEs into coupled sets of ODEs int
and solving the resulting third-order system. See the introduction to reference.wolfram.com/language/tutorial/…. As an aside, you will obtain better accuracy by solving forxo
usingDSolveValue
instead ofNDSolve
. Finally, it is better not to useSetDelayed
whenSet
will do. $\endgroup$