Hi Hans,
I will note that there are two ways that DSolve
(currently) can miss solutions assuming the problem is generally solvable, or at least two ways I know. The OP's example shows one way, and your example shows the other way.
In the OP's example, the general solution is "generic"; that is, it is missing a component of its boundary (in a suitable function space), which may be found by taking a limit (C[1] -> 0
in this case, but C[..] -> Infinity
seems more common in my experience).
The other way is when there is a disconnected component, and in the case of a Clairaut equation like yours, it is traditional to call it the "singular solution," which you probably know already. This is solution is not contain in the general solution or its limiting boundary (in function space), although it is the envelope of the general solution (in the xy plane). As you also may know, one can derive the singular solution without integration.
Here, as a supplement to DSolve
, is a function for deriving singular solutions. It comes from a differential equations package I wrote; the function may also be found here:
singularSolve[de_Equal, form : y_[x_] | y_, x_] :=
Module[{p, q, u, fn, rads, a, b, ode, discriminant},
fn = de /. {y[x] -> y, y'[x] -> p, Equal -> Subtract};
rads = DeleteDuplicates@Cases[fn, Power[a_, b_Rational], Infinity];
ode = First@
GroebnerBasis[
Flatten@{fn /. Power[a_, b_Rational] :> u[a, b],
rads /. Power[a_, b_Rational] :>
u[a, b]^Denominator[b] - a^Numerator[b]},
rads /. Power[a_, b_Rational] :> u[a, b]];
discriminant = Solve[{ode == 0, D[ode, p] == 0}, {y}, {p}];
Pick[Which[
MatchQ[form, y[x]], {y[x] -> (y /. #)},
MatchQ[form, y], {y -> Function @@ {{x}, y /. #}},
True, # /. p -> y'[x]] & /@ discriminant,
TrueQ@Simplify[ode == 0 /. Flatten@{#, p -> D[y /. #, x]}] & /@
discriminant]];
singularSolve[dgl, y[x], x]
(* {{y[x] -> x^2/4}} *)
The system for the envelope is given by the ODE and its partial derivative with respect to y'
(Clairaut's equation admits a simpler approach). The ode dgl
is written in the function in terms of p = y'[x]
, and the system to solve, eliminating p
, is the following:
{p^2 - p x + y == 0, 2 p - x == 0}