Open yuri-karadzhov opened 13 years ago
**Status:** Duplicate
**Mergedinto:** 2250
Original comment: http://code.google.com/p/sympy/issues/detail?id=2249#c1 Original author: https://code.google.com/u/asmeurer@gmail.com/
Apparently this is actually separate from issue #5349 .
Status: Accepted
Mergedinto:
Referenced issues: #5349 Original comment: http://code.google.com/p/sympy/issues/detail?id=2249#c2 Original author: https://code.google.com/u/asmeurer@gmail.com/
After the changes it will be possible to solve special Riccati euation
a*y'+b*y**2+c*x**alpha=0
where a, b, c != 0 and there's two infinite series for alpha when the equation is integrable in elementary functions.
Original comment: http://code.google.com/p/sympy/issues/detail?id=2249#c3 Original author: https://code.google.com/u/110328265044803872166/
**Status:** Valid
Original comment: http://code.google.com/p/sympy/issues/detail?id=2249#c4 Original author: https://code.google.com/u/asmeurer@gmail.com/
Currently this equation is matched by the 1st_power_series
solver but it just returns oo
. The lie_group
solver also matches but then fails with NotImplementedError
:
In [21]: a, b, c, alpha = symbols('a, b, c, alpha')
In [22]: x = Symbol('x')
In [23]: y = Function('y')
In [24]: eq = a*y(x).diff(x) + b*y(x)**2 + c*x**alpha
In [25]: eq
Out[25]:
d 2 α
a⋅──(y(x)) + b⋅y (x) + c⋅x
dx
In [26]: dsolve(eq)
Out[26]: y(x) = ∞
In [27]: classify_ode(eq, y(x))
Out[27]: ('1st_power_series', 'lie_group')
In [28]: dsolve(eq, hint='lie_group')
---------------------------------------------------------------------------
NotImplementedError
It looks like Ricatti equations can always be reduced to linear ODEs by substitution: https://en.wikipedia.org/wiki/Riccati_equation I think it would be useful if the ODE module actually implemented substitutions explicitly since it would make it very easy to implement solvers for equations like this.
I think the substitution would be helpful if we implement the Kovacic algorithm. That way, any Riccati equation could be transformed to a linear second order equation which can then be solved by Kovacic. Another thing we could also use is the fact that knowing a particular solution gives the second solution very easily. But this would be a lot of special case code.
We should definitely implement the Kovacic algorithm and make sure all cases of the Riccati equation are covered.
Right now the most immediately useful thing would be to fix #17590.
The solver for special Riccati equation integrable series will be added to sympy.
Original issue for #5348: http://code.google.com/p/sympy/issues/detail?id=2249 Original author: https://code.google.com/u/110328265044803872166/