# DSolve with Absolute Value

When playing around with DSolve, I enter the following:

  DSolve[{Derivative[y][x] == x + Abs[x]*y[x]}, y[x], x]


The output is:

$$y(x)\to e^{\frac{1}{2} (x \left| x\right| -1)} \int_1^x K e^{\frac{1}{2} (1-K \left| K\right| )} \, dK+c_1 e^{\frac{1}{2} (x \left| x\right| -1)}$$

I would have expected a conditional which accounts for $x \le 0$ and $x \gt 0$ or something along those lines.

How is one supposed to interpret the output that is being produced? Is it a bug or am I not reading it correctly?

Testing the solution numerically shows the solution appears to be valid:

{sol} = DSolve[{Derivative[y][x] == x + Abs[x]*y[x]}, y, x]

SeedRandom;
RandomReal[{-2, 2}, 10]
Table[
Block[{C},
C = 1;
Derivative[y][x] == x + Abs[x]*y[x] /.
(sol /. Integrate -> NIntegrate) /. Abs' -> Sign],
{x, %}]
(*
{0.609871, 0.532281, 0.731252, 0.265407, 1.74081, 1.90475,
-1.04619, 0.550249, -1.59561, 0.582099}

{True, True, True, True, True, True, True, True, True, True}
*)


In response to Amzoti's comment, I'm not so sure about there being a nice solution, if x is assumed to be complex instead of real, which is how it is treated in Mathematica. If we specify that x is real, we do get a nice solution (and much more quickly):

Assuming[{x ∈ Reals},
{sol} = DSolve[{Derivative[y][x] == x + Abs[x]*y[x]}, y, x]
];
y[x] /. sol // PiecewiseExpand • It may be valid, but it is also quite ugly. A nice closed form solution without integrals is possible and that is how one would do it by hand. (+1) Feb 17, 2015 at 13:51
• @Amzoti Thanks. See update. Feb 17, 2015 at 14:00
• That is what I would have expected and I forgot to take into account reals only, so thanks! I am surprised Mathematica does not respond that way by default with a statement, if $x \in \mathbb{R}$ or something along those lines. Feb 17, 2015 at 14:04