please forgive me for repeating this again, but i like to go over and over an idea until i understand it in the simplest way possible for me.
the point here is to find an inverse for an invertible operator acting on a finite dimensional space, by finding a polynomial that annihilates it.
The first step in solving Ly = f this way is to identify the correct finite dimensional space, by looking for a polynomial annihilator of f, say P(D). This of course is only possible if f is a product of exponentials, polynomials and sins and cosines. E.g. if f = x^n e^(bx) then (Db)^(n+1) works, and if f = sin or cos, then D^2 +1 works.
Now that P is found, the appropriate finite dimensional space is V = ker(P), but with this method there is no need to even know exactly what functions make up this space, unlike in the annihilator method. The only thing one needs to know is what polynomial P annihilates f.
Then assuming that the polynomial operator L(D) has no linear factors in common with P(D), it follows that L is invertible on V. Hence to invert L on V, we only need to find an appropriate polynomial annihilating L on V.
Since L(D) is a polynomial in D, it suffices to find an annihilator of each linear factor (Da) of L separately. But since we have a polynomial P(D) which equals zero on V, we can find a polynomial vanishing on any linear polynomial of form Da by re  expanding P(D) as P(Da+a).
The fact that Da is not factor of P(D) guarantees that the resulting polynomial in Da will have non zero constant term, [if I am not wrong]. This is the key point.
Although all polynomials L(D) do theoretically factor into complex linear factors, the method is easier when the factors are simple integer factors.
So to sum up, the annihilator P(D) of f, defines a space V = kerP(D), on which P annihilates D, hence re expands to yield a polynomial annihilating any operator of form Da. This allows one to invert on V, all polynomials L(D) which are relatively prime to P(D).
If L does have linear factors in common with P, it is easy to invert those factors by hand first, and eliminate them. E.g. to solve
(Da) y = x^k e^(ax), one simply integrates on the polynomial factor
i.e. then y ={x^(k+1)/[k+1]} e^(ax).
this is no harder than solving Dy = x^k, by y = x^(k+1)/[k+1].
here is a worked example: to solve (Da)y = xe^(bx), the annihilator of the RHS is (Db)^2, which re expands as (Da+ab)^2
= (Da)^2 + 2(ab)(Da) + (ab)^2, where the constant term (ab)^2 is non zero if and only if a differs from b.
Then (ab)^2 = (Da)^2  2(ab)(Da) = [(Da)  2(ab)](Da), so
(Da)^(1) = [1/(ab)^2] [aD 2(ab)]
= [1/(ab)^2] [ (2ba)  D].
E.g. to solve (D1) y = xe^3x, we have (D3)^2 = 0 = (D12)^2
= (D1)^2 4(D1) + 4, so 4 = 4(D1)  (D1)^2 = (D1)[4  (D1)]
= (D1)[5D]. So (D1)^(1) = (1/4)[5D]. Since a = 1, b = 3, this agrees with the general formula [1/(ab)^2] [ (2ba)  D] above.
Hence y = (1/4)[5D](xe^(3x)) = (1/4)[ 5xe^(3x)  3xe^(3x)  e^(3x)]
= (1/4) [ 2xe^(3x)  e^(3x)].
Checking: (D1)y = (D1)(1/4) [ 2xe^(3x)  e^(3x)]
= (1/4) (D1)[ 2xe^(3x)  e^(3x)]
= (1/4) [ 2e^(3x) + 6xe^(3x)  3e^(3x) 2xe^(3x) + e^(3x)
= (1/4) [4xe^(3x)] = xe^(3x), as desired.
