# Using Series with Refine or Assuming to restrict the power

I have a system of differential equations which contain a singular point. To avoid the singular point, I am expanding the coefficients and solutions in a power series around that point.

Due to the physical problem, these coefficients have expansions

$$f_1(t) = \frac{n+1}{\Gamma_1 t}\left(1 - \frac{(3k^n)}{n+1} t^{n+1}\right)$$

$$f_2(t) = (3k^n)\left(1 +(n-3) t + \frac{2(3k^n)}{(n+1)(n+2)} t^{n+1}\right)$$

$$f_3(t) = \frac{A_s}{t}\left(1 - \frac{(3k^n)}{n+1} t^{n+1}\right)$$

$$f_4(t) = 1 - 3t + \frac{3k^n}{n+1} t^{n+1}$$

which contain inverse powers, small powers, and powers at $$n+1$$, where $$n$$ is an exponent from the physical problem itself.

The solutions to the dif. eqs. are suspected to be a power series of the form

$$y_i(t) = y_{i0} + y_{i1}t + \cdots + y_{in} t^n + y_{i,n+1} t^{n+1} + \cdots,$$

where $$y_i$$ is one of the solutions.

I define all the functions as series expansions, I put them into the diff. eqs., and I try want to solve order-by-order using, for instance

SeriesCoefficient[ode1[l, t], {t, 0, -1}]==0


Mathematica won't handle that very well, but for good reason. Depending on the value of $$n$$, the powers $$t^n, t^{n+1}$$ might enter at any given order. So I try to help Mathematica out by letting it know that $$n>1$$, so that powers of $$n$$ or higher can be ignored at this order. So I write

Refine[SeriesCoefficient[ode1[l, t], {t, 0, -1}], n >= 1] == 0


However, Mathematica still isn't happy and still won't produce a result, even though it should now know to ignore powers $$t^n$$ or higher.

Refine[SeriesCoefficient[ode1[l, t], {t, 0, -1}], n ==2] == 0


works. It produces a result at the correct order and without $$t^n$$ terms. The problem with this is that $$n$$ also enters at the coefficient-level, and I don't want a "2" in the answer it gives, but "n".

How can I use Refine with Series and SeriesCoefficient to let Mathematica know that a variable power $$n$$ is larger than some value so can be left out of low-order results?

(*coefficient functions*)
r[t_] := R (1 - t);
f1[t_] := (n + 1)/(G t) (1 - (3 k^n)/(n + 1) t^(n + 1));
f2[t_] := (3 k^n) t^n (1 - (3 - n) t + (2 (3 k^n))/((n + 1) (n + 2)) t^(n + 1));
f3[t_] := (n - (n + 1)/G)/t (1 - (3 k^n)/(n + 1) t^(n + 1));
f4[t_] := 1 - 3 t + (3 k^n)/(n + 1) t^(n + 1);

(*solutions*)
y1[t_] := W[0] + W[1] t + W[n] t^n + W[n + 1] t^(n + 1) + W[2 n + 1] t^(2 n + 1);
y2[t_] := X[0] + X[1] t + X[n] t^n + X[n + 1] t^(n + 1) + X[2 n + 1] t^(2 n + 1);
y3[t_] := Y[0] + Y[1] t + Y[n] t^n + Y[n + 1] t^(n + 1) + Y[2 n + 1] t^(2 n + 1);
y4[t_] := Z[0] + Z[1] t + Z[n] t^n + Z[n + 1] t^(n + 1) + Z[2 n + 1] t^(2 n + 1);

(*the first ode*)
ode1[l_, t_] := -(r[t]/R) D[y1[t], t]*(-1) +(f1[t] - (l + 1)) y1[t] + (l (l + 1)/(f4[t]*w^2) - f1[t]) y2[t] + f1[t] y3[t];


Could use Series to some modest degree, then Normal, then wipe out terms with factors of t to some power involving n (this assumes it is known it will always be a positive times n). After that, SeriesCoefficient should be fine for handling what remains.

That example:

ee = Expand[Normal[Series[ode1[l, t], {t, 0, 2}]]] /.
t^j_ /; ! FreeQ[j, n] :> 0;
SeriesCoefficient[ee, {t, 0, -1}]

(* Out[979]= (W[0] + n W[0] - X[0] - n X[0] + Y[0] + n Y[0])/G *)

• I've tried Normal@Series before and it didn't do anything useful. I don't know what your /.t^j_/; ! FreeQ[j,n]:>0 part does. But, it seems to work! Thanks! Commented Mar 4, 2019 at 20:15
• It removes (that is, zeros) any power of t that contains n. Basically a way of saying "these terms are too small for retaining, replace them with zero". Commented Mar 4, 2019 at 21:53
• At least in this case, Expand and Normal don't seem needed. I obtain the same result without them. Commented Mar 4, 2019 at 22:28
• @MarcoB It is probably safe to not expand (or use Normal) except when symbolic powers might cancel. And in such cases one would require extra code to not remove negative symbolic powers for example. Commented Mar 4, 2019 at 23:17