# DSolve does not give solution

No answer is given when I evaluate the following expression:

p[x_,t_]:=D[h[x, t], x]
DSolve[{
D[h[x, t], t] == 11120 D[h[x, t], {x, 2}] + 0.000625,
h[60000, t] == 10,
p[0, t] == 0,
(h[x, 0])^2 == 45100 - 0.0000125 x^2
}, h[x, t], {x, t}]


Did I go wrong somewhere?

• Does it have a symbolic solution? If not, try NDSolve. – Michael E2 Apr 6 '14 at 12:52

The main problem is your definition of p. Try, for instance, what evaluating p[0, t] gets you:

As you define it, it only works if you call it with undefined symbols. Calling it with the value of 0 in the x slot effectively evaluates

D[h[0, t], 0]


which is obviously nonsense.

It is better to define it using Derivative:

p[x_, t_] := Derivative[1, 0][h][x, t]


which doesn't depend on x being symbolic. Less elegant, but just as effective and perhaps more educational is this alternative:

p[x_, t_] := D[h[x1, t], x1] /. x1 -> x


Dsolve still doesn't solve your problem symbolically and NDSolve has problems with the way your initial and boundary conditions are specified. Rewriting the equations as follows helps:

sol = h /. First@NDSolve[{
D[h[x, t], t] == 11120 D[h[x, t], {x, 2}] + 1/1600,
h[60000, t] == 10,
p[0, t] == 0,
(h[x, 0]) == Sqrt[45100 - 1/80000 x^2]},
h, {x, 0, 60000}, {t, 0, 10}]