I'm working with rational functions and I want to be able to put them in a specific form and then get a list of terms in which the numerators are monomials. Take for example
r[x_, y_, z_, v_] := x/(1 + y)^2 + y/v + z
What I would like is some function rationalMonomialList
which gives me back
rationalMonomialList[r[x,y,z,v]] (* output= {y/v, x/(1 + y)^2, z} *)
for r
this is easy enough by taking
rationalMonomialList[rat_]:=
Module[{rat0=Expand[rat]},Table[rat0[[i]],{i,1,Length[rat0]}]]
which is the answer I want. This lets me write rf as \begin{equation}r(x,y,z,v)=p(x,y,z,v)+q(x,y,z,v)+s(x,y,z,f)\end{equation}
where $p$ is a polynomial, $q$ is a laurent polynomial, and $s$ is a rational function. However, there are plenty of equivalent forms for rational functions, and this obviously won't work for most of them. As a counter example, The definition above gives the following:
rationalMonomialList[Apart[r[x,y,z,v]]]
(* out= {x/(1 + y)^2, y/(v (1 + y)^2), (2 y^2)/(v (1 + y)^2), y^3/(v (1 + y)^2), z} *)
Which is not of the form given above. What's a good way to do this?