# Utterly confounding behaviour in Mathematica 9 DSolve

I've been baffled by a lot of the behaviours of Mathematica 9 — so much that I regret upgrading my copy of Mathematica 8 (I would downgrade but I'm currently on vacation). Here is an example:

DSolve[{x^2*y''[x] + x*y'[x] - y[x] == 0}, y[x], x]


should return the simple answer of C1*x + C2/x. In fact, this is what Wolfram Alpha returns and also Mupad (a Maple within Matlab). However, Mathematica returns Yes, I know you can simplify this for real output, but it baffles me why it doesn't do it in the first place. Moreover, once your differential equations become messy, this can be hard to do. I have encountered other examples where the output from Mathematica's DSolve seems to very strange indeed. This isn't an isolated example, and I encounter examples of these very simple DEs that Mathematica fails to simplify in any sort of obvious way.

I don't remember these difficulties in Mathematica 8 or previous versions. Does anybody know what is an easy fix or what's going on? I have also documented similar bugs in the series expansions here and here.

• These are not bugs. The output is correct. As Vitaliy points out, you simply need to constrain your problem appropriately. Early versions of Mathematica played fast and loose with real functions and real expressions -- leading to actual bugs/errors. Instead, this has been fixed by respecting the complex nature of many things (e.g. series/convergence). This makes certain tricks impossible if you fail to indicate to Mathematica that you are assuming all the variables in play are real. Aug 26 '14 at 17:25

Assuming[x \[Element] Reals, DSolve[{x^2*y''[x] + x*y'[x] - y[x] == 0}, y[x], x]]