2.20.5 Problem 38

2.20.5.1 Maple
2.20.5.2 Mathematica
2.20.5.3 Sympy

Internal problem ID [13485]
Book : Handbook of exact solutions for ordinary differential equations. By Polyanin and Zaitsev. Second edition
Section : Chapter 1, section 1.2. Riccati Equation. subsection 1.2.8-2. Equations containing arbitrary functions and their derivatives.
Problem number : 38
Date solved : Friday, December 19, 2025 at 04:57:37 AM
CAS classification : [_Riccati]

\begin{align*} y^{\prime }&=\frac {f^{\prime }\left (x \right ) y^{2}}{g \left (x \right )}-\frac {g^{\prime }\left (x \right )}{f \left (x \right )} \\ \end{align*}
Unknown ode type.
2.20.5.1 Maple. Time used: 0.007 (sec). Leaf size: 58
ode:=diff(y(x),x) = y(x)^2*diff(f(x),x)/g(x)-diff(g(x),x)/f(x); 
dsolve(ode,y(x), singsol=all);
 
\[ y = \frac {-g \left (x \right ) f \left (x \right ) \int \frac {f^{\prime }\left (x \right )}{g \left (x \right ) f \left (x \right )^{2}}d x -g \left (x \right ) f \left (x \right ) c_1 -1}{f \left (x \right )^{2} \left (\int \frac {f^{\prime }\left (x \right )}{g \left (x \right ) f \left (x \right )^{2}}d x +c_1 \right )} \]

Maple trace

Methods for first order ODEs: 
--- Trying classification methods --- 
trying a quadrature 
trying 1st order linear 
trying Bernoulli 
trying separable 
trying inverse linear 
trying homogeneous types: 
trying Chini 
differential order: 1; looking for linear symmetries 
trying exact 
Looking for potential symmetries 
trying Riccati 
trying Riccati sub-methods: 
   trying Riccati_symmetries 
   trying Riccati to 2nd Order 
   -> Calling odsolve with the ODE, diff(diff(y(x),x),x) = (diff(diff(f(x),x),x 
)*g(x)-diff(f(x),x)*diff(g(x),x))/g(x)/diff(f(x),x)*diff(y(x),x)+1/g(x)*diff(f( 
x),x)*diff(g(x),x)/f(x)*y(x), y(x) 
      *** Sublevel 2 *** 
      Methods for second order ODEs: 
      --- Trying classification methods --- 
      trying a symmetry of the form [xi=0, eta=F(x)] 
      checking if the LODE is missing y 
      -> Heun: Equivalence to the GHE or one of its 4 confluent cases under a \ 
power @ Moebius 
      -> trying a solution of the form r0(x) * Y + r1(x) * Y where Y = exp(int\ 
(r(x), dx)) * 2F1([a1, a2], [b1], f) 
      -> Trying changes of variables to rationalize or make the ODE simpler 
      <- unable to find a useful change of variables 
         trying a symmetry of the form [xi=0, eta=F(x)] 
         trying 2nd order exact linear 
         trying symmetries linear in x and y(x) 
         trying to convert to a linear ODE with constant coefficients 
         trying 2nd order, integrating factor of the form mu(x,y) 
         trying a symmetry of the form [xi=0, eta=F(x)] 
         checking if the LODE is missing y 
         -> Heun: Equivalence to the GHE or one of its 4 confluent cases under \ 
a power @ Moebius 
         -> trying a solution of the form r0(x) * Y + r1(x) * Y where Y = exp(\ 
int(r(x), dx)) * 2F1([a1, a2], [b1], f) 
         -> Trying changes of variables to rationalize or make the ODE simpler 
         <- unable to find a useful change of variables 
            trying a symmetry of the form [xi=0, eta=F(x)] 
         trying to convert to an ODE of Bessel type 
   -> Trying a change of variables to reduce to Bernoulli 
   -> Calling odsolve with the ODE, diff(y(x),x)-(1/g(x)*diff(f(x),x)*y(x)^2+y( 
x)-x^2*diff(g(x),x)/f(x))/x, y(x), explicit 
      *** Sublevel 2 *** 
      Methods for first order ODEs: 
      --- Trying classification methods --- 
      trying a quadrature 
      trying 1st order linear 
      trying Bernoulli 
      trying separable 
      trying inverse linear 
      trying homogeneous types: 
      trying Chini 
      differential order: 1; looking for linear symmetries 
      trying exact 
      Looking for potential symmetries 
      trying Riccati 
      trying Riccati sub-methods: 
         trying Riccati_symmetries 
      trying inverse_Riccati 
      trying 1st order ODE linearizable_by_differentiation 
   -> trying a symmetry pattern of the form [F(x)*G(y), 0] 
   -> trying a symmetry pattern of the form [0, F(x)*G(y)] 
   -> trying a symmetry pattern of the form [F(x),G(x)*y+H(x)] 
trying inverse_Riccati 
trying 1st order ODE linearizable_by_differentiation 
--- Trying Lie symmetry methods, 1st order --- 
   -> Computing symmetries using: way = 4 
   -> Computing symmetries using: way = 2 
   -> Computing symmetries using: way = 6 
[0, f(x)^2*(y+g(x)/f(x))^2] 
   <- successful computation of symmetries. 
1st order, trying the canonical coordinates of the invariance group 
<- 1st order, canonical coordinates successful
 

Maple step by step

\[ \begin {array}{lll} & {} & \textrm {Let's solve}\hspace {3pt} \\ {} & {} & \frac {d}{d x}y \left (x \right )=\frac {\left (\frac {d}{d x}f \left (x \right )\right ) y \left (x \right )^{2}}{g \left (x \right )}-\frac {\frac {d}{d x}g \left (x \right )}{f \left (x \right )} \\ \bullet & {} & \textrm {Highest derivative means the order of the ODE is}\hspace {3pt} 1 \\ {} & {} & \frac {d}{d x}y \left (x \right ) \\ \bullet & {} & \textrm {Solve for the highest derivative}\hspace {3pt} \\ {} & {} & \frac {d}{d x}y \left (x \right )=\frac {\left (\frac {d}{d x}f \left (x \right )\right ) y \left (x \right )^{2}}{g \left (x \right )}-\frac {\frac {d}{d x}g \left (x \right )}{f \left (x \right )} \end {array} \]
2.20.5.2 Mathematica. Time used: 0.208 (sec). Leaf size: 160
ode=D[y[x],x]==D[ f[x],x]/g[x]*y[x]^2-D[ g[x],x]/f[x]; 
ic={}; 
DSolve[{ode,ic},y[x],x,IncludeSingularSolutions->True]
 
\[ \text {Solve}\left [\int _1^{y(x)}\left (\frac {1}{(g(x)+f(x) K[2])^2}-\int _1^x\left (\frac {2 \left (f(K[1]) K[2]^2 f''(K[1])-g(K[1]) g''(K[1])\right )}{g(K[1]) (g(K[1])+f(K[1]) K[2])^3}-\frac {2 K[2] f''(K[1])}{g(K[1]) (g(K[1])+f(K[1]) K[2])^2}\right )dK[1]\right )dK[2]+\int _1^x-\frac {f(K[1]) y(x)^2 f''(K[1])-g(K[1]) g''(K[1])}{f(K[1]) g(K[1]) (g(K[1])+f(K[1]) y(x))^2}dK[1]=c_1,y(x)\right ] \]
2.20.5.3 Sympy
from sympy import * 
x = symbols("x") 
y = Function("y") 
f = Function("f") 
g = Function("g") 
ode = Eq(Derivative(y(x), x) - y(x)**2*Derivative(f(x), x)/g(x) + Derivative(g(x), x)/f(x),0) 
ics = {} 
dsolve(ode,func=y(x),ics=ics)
 
NotImplementedError : The given ODE Derivative(y(x), x) - y(x)**2*Derivative(f(x), x)/g(x) + Derivat
 
Python version: 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] 
Sympy version 1.14.0
 
classify_ode(ode,func=y(x)) 
 
('1st_power_series', 'lie_group')