Why desolve() can not solve an ODE while SymPy can?
For example, in sage, when I call:
x=var('x')
f=function('f')(x)
desolve(f.diff(x)^2+1,f)
It will return:
NotImplementedError: Maxima was unable to solve this ODE. Consider to set option contrib_ode to True.
However, with SymPy, when I call:
x=symbols('x')
f=symbols('f',cls=Function)
dsolve(f(x).diff(x)**2+1,f(x))
It will return the exact result:
[Eq(f(x), C1 - I*x), Eq(f(x), C1 + I*x)]
I know maybe it because sage use Maxima in desolve but not SymPy, however, I consider using both of them and merge the result is a better choice. Or if there already exists a method to use SymPy in sgae?
desolve(f.diff(x)^2+1,f,contrib_ode=True)
finds[-I*x - f(x) == _C]
"Merge the results" may be algorithmically hard. Choosing the "best" result even more so.