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, Γ > 
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.

  • $\begingroup$ 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. $\endgroup$ – bill s Mar 19 '18 at 1:10
  • $\begingroup$ Try ω /. Solve[Denominator[Simplify[ComplexExpand[Abs[f[ω]]^2, TargetFunctions -> {Re, Im}]]] == 0, ω] for a quicker way to get the poles. $\endgroup$ – J. M. will be back soon Mar 19 '18 at 2:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.