sympy/sympy — pull request #1883 by Manoj-Kumar-S (2013-03-11 11:45:34+00:00)
Title: Separable reduced equations first implementation

Solves an equation that can be reduced to the separable form.

The general form of this equation is y' + (y/x)*H(x^n*y) = 0
This can be solved by substituting u(y) = (x^n * y)

The equation then reduces to the separable form
u'*(1/(u*(power - H(u)))) - (1/x) = 0 (see the docstring of ode_separable())

Examples
========

>>> from sympy import Function, Derivative, pprint
>>> from sympy.solvers.ode import dsolve, classify_ode
>>> from sympy.abc import x
>>> f = Function('f')
>>> d = f(x).diff(x)
>>> eq = (x - x**2*f(x))*d - f(x)
>>> dsolve(eq, hint = 'separable_reduced')
[f(x) == (-sqrt(C1*x**2 + 1) + 1)/x, f(x) == (sqrt(C1*x**2 + 1) + 1)/x]
>>> pprint(dsolve(eq, hint = 'separable_reduced'))
___________ ___________
/ 2 / 2
- \/ C1*x + 1 + 1 \/ C1*x + 1 + 1
[f(x) = --------------------, f(x) = ------------------]
x x

References
==========

- Joel Moses, "Symbolic Integration - The Stormy Decade",
Communications of the ACM, Volume 14, Number 8, August 1971, pp. 558