✓ Maple : cpu = 0.073 (sec), leaf count = 35
This is Riccati first order non-linear ODE.
Let
Hence
Equating this to RHS of (1) gives
Simplifying
Second order ODE with variable coefficients. Since coefficients are variables and not constants, a power series method is the standard way to continue. When I tried solving this now pretending the coefficients are constants in time, using the standard auxiliary equation method, the solution did verify OK. I need to look more into this. For now, this is solved using standard method for solving second order ODE with constant coefficients.
Hence
Therefore
Verification
restart; book:=diff(y(x),x)+f(x)*(2*a*y(x)+b+y(x)^2)=0; eqU:=diff(u(x),x$2)+diff(u(x),x)*(- diff(f(x),x)/f(x)+2*a*f(x))+u(x)*f(x)^2*b=0; solU:=dsolve(eqU,u(x)); my_sol:=diff(rhs(solU),x)/(rhs(solU)*f(x)); odetest(y(x)=my_sol,book); 0