I'm trying to get the normal modes of a system of springs and dasphots using the basic dynamic equations for a linear, damped elastic structure:

$ M \ddot{u}(t) + C \dot{u}(t) + K u(t) = f(t) $

to get the normal modes, the following QEP (quadratic eigenvalue problem) must be solved

$ (\lambda^2M+\lambda C+K)\bar{\psi}$ = 0

This problem can be solved by linearization, converting it in a generalized eigenvalue problem, that leads in general to complex eigenvectors.

How can I convert this complex eigenvectors to real ones, representing the real displacements of each mode of the structure? Is there any library that implements this functionality?

  • $\begingroup$ "We can then take the first $n$ components of $z$ as the eigenvector $x$ of the original quadratic $Q ( λ )$" from Wikipedia $\endgroup$
    – nicoguaro
    Sep 13, 2018 at 14:49
  • $\begingroup$ @nicoguaro Yes, but that gives complex eigenvectors, I'm talking of a way of transforming those into real ones. $\endgroup$
    – Msegade
    Sep 13, 2018 at 16:24
  • $\begingroup$ Even in the linear eigenvalue problem you (might) have complex eigenvectors. $\endgroup$
    – nicoguaro
    Sep 13, 2018 at 16:57
  • 4
    $\begingroup$ You can't "convert" complex eigenvectors to real. The eigenvectors are complex because you have damping in your model. If you want to calculate traditional vibration modes for this model, set the damping matrix to zero. $\endgroup$ Sep 13, 2018 at 18:59
  • $\begingroup$ @BillGreene But I want vibration modes that take damping into consideration. With traditional modes I get an eigenvector that I can represent (say for example (1, -1) in a 2DOF system. With complex eigenvectors it gives something like (1+2j, 0.5 -1j) which I cannot represent. I'm looking for a way to make sense of this eigenvectors by transforming them into real modes. $\endgroup$
    – Msegade
    Sep 17, 2018 at 16:36

1 Answer 1


When you find the eigenvalues $\lambda_n$ and corresponding eigenvectors $u_n$, some of them might be pairs of complex-conjugated eigenvectors $u_n=v_n\pm iw_n$ that correspond to complex-conjugated eigenvalues $\lambda_n=a_n\pm ib_n$.

In general, the modes associated with an eigenvalue and its eigenvector can be found as $$x_n(t)=e^{\lambda_n t}\,u_n$$ Now for the case of complex-conjugated pairs of eigenvalues and vectors, choose only one pair of them and substitute them in the above relation. For instance, let's take $$\lambda_n=a_n+ib_n,$$ $$u_n=v_n+iw_n$$ Notice that you could just as well choose the eigenvalue and vector with the "$-$" instead of the "$+$". Then plugging them in the relation for the mode $x_n(t)$ and simplifying (use Euler's formula for complex numbers and do some algebra) you find that $$x_n(t)=e^{(a_n+ib_n)t}\,(v_n+iw_n)\Rightarrow$$ $$\Rightarrow x_n(t)=e^{a_nt}[\cos(b_nt)v_n-\sin(b_nt)w_n]+ie^{a_nt}[\sin(b_nt)v_n+\cos(b_nt)w_n]$$

In this way, you've decomposed the mode into its real and imaginary parts. For a linear eigenvalue problem, both the real and the imaginary part are each real solutions of the problem; so you find two real solutions that represent real displacement modes of your structure. You should redo the simplifying in the above relation, just to be sure I haven't missed anything there!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.