Inconsistent pole/roots decomposition

I have the following function f of ω:

f[ω_] := (
2 Sqrt[Γ] (4*
g2^2 + (κ1 - 2*I*ω) (κ2 - 2*I*ω)))/(
4*g2^2 (Γ -
2*I*ω) + (4*
g1^2 + (Γ - 2*I*ω) (κ1 -
2*I*ω)) (κ2 - 2*I*ω))


And I intend to find the poles/roots of the denominator of the norm-squared of f:

M = FullSimplify[f[ω]*Conjugate[f[ω]],
Assumptions -> {Γ ∈
Reals, κ1 ∈ Reals, κ2 ∈ Reals,
g1 ∈ Reals,
g2 ∈ Reals, ω ∈ Reals, Γ >
0}]
wroots1 = x /. Solve[(Denominator[M] /. {\[Omega] -> x}) == 0, x]//FullSimplify


The code takes a really long time to compile at this point. Should one inspect the poles of M, one would find 6 poles in total. And hence wroots1 gives a long list of 6 poles.

However if I want to check if the decomposition of poles actually worked, I can do:

(ω - wroots1[[1]])*(ω - wroots1[[2]])*(ω -
wroots1[[3]])*(ω - wroots1[[4]])*(ω -
wroots1[[5]])*(ω - wroots1[[6]]) - Denominator[M] // Expand


And this should give me 0. But upon running, that is clearly not the case: it returns a really long non-zero value that is a function of ω. This shouldn't be the case if the factoring of the poles worked correctly.

I would appreciate any help that I can get. Thank you in advance.

• I'd suggest trying it with a 2-pole transfer function first. If that works, then increase the number of poles. If it doens't work, then likely there is something more basic that's wrong. – bill s Mar 19 '18 at 1:10
• Try ω /. Solve[Denominator[Simplify[ComplexExpand[Abs[f[ω]]^2, TargetFunctions -> {Re, Im}]]] == 0, ω] for a quicker way to get the poles. – J. M. will be back soon Mar 19 '18 at 2:14