3.8 How to classify singular points for ODE?

Given an ode, such as \(x(1-x) y''(x)+(c-(a+b+1)x)y'(x)-a b y(x)=0\) and we want to classify the singular points (finite and infinite).

We write it as \(y''(x)+p(x) y'(x)+q(x)=0\) and then follow standard procedures. In this example, we want to classify points \(0,1,\infty \).

This small function I wrote for a HW will do this. Pass it \(p(x),q(x)\) and list of the points to classify.

checkForSingularity[p_, q_, at_List, x_] := Module[{p0, q0, t, r, r0}, 
  r = First@Last@Reap@Do[ 
       If[at[[n]] === Infinity, 
        p0 = p /. x -> (1/t); 
        p0 = (2 t - p0)/t^2; 
        q0 = (q /. x -> (1/t))/t^4; 
        r0 = checkForSingularity[p0, q0, {0}, t]; 
        Sow[Flatten[{Infinity, Rest[Flatten@r0]}]]; 
        , 
        r0 = {at[[n]], Limit[(x - at[[n]])  p, x -> at[[n]]], 
          Limit[(x - at[[n]])^2 q, x -> at[[n]]]}; 
        Sow@r0 
        ] 
       , {n, 1, Length@at} 
       ]; 
  r 
  ]
 

To use it on the above example

ClearAll[c, a, b, x]; 
m = checkForSingularity[(c - (a + b + 1) x)/(x (1 - 
        x)), (-a b)/(x (1 - x)), {0, 1, Infinity}, x]; 
Grid[Join[{{"point", "limit x p(x)", "limit x^2 q(x)"}}, m], 
 Frame -> All]
 

Gives

{{"point", "limit x p(x)", "limit x^2 q(x)"}, 
 {0,            c,                 0}, 
 {1,        1 + a + b - c,         0}, 
 {\[Infinity], 1 - a - b,        a b} 
}
 

Since all points have finite limits, then all \(0,1,\infty \) are removable singularities.

I did not test this function too much, but it works for the HW I did :)