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 :)