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. – user21 Nov 27 '18 at 08:47ytshould 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 intand solving the resulting third-order system. See the introduction to https://reference.wolfram.com/language/tutorial/NDSolveMethodOfLines.html. As an aside, you will obtain better accuracy by solving forxousingDSolveValueinstead ofNDSolve. Finally, it is better not to useSetDelayedwhenSetwill do. – bbgodfrey Nov 27 '18 at 12:16