MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Diagonalizing a non-Hermitian Matrix

  • To: mathgroup at
  • Subject: [mg58773] Re: [mg58741] Diagonalizing a non-Hermitian Matrix
  • From: Pratik Desai <pdesai1 at>
  • Date: Sun, 17 Jul 2005 13:03:20 -0400 (EDT)
  • References: <>
  • Sender: owner-wri-mathgroup at

Ituran wrote:

>I have the following problem. There is a given non-Hermitian matrix M.
>Let's take an example in 2x2 dimension M={{1,2+4*I},{2-5*I,1}}.
>To diagonalize it we need 2x2 unitary matrices U and V such that
>U.M.Vdag = Md =Diag(3.8304,6.0273).
>Here Vdag = Transpose[Conjugate[V]]. To find U and V,
>we can work with the absolute square of the above eq, i.e,
>V.(Mdag.M).Vdag = U.(M.Mdag).Udag = M_D^2 = Diag(14.672,36.328).
>Again Mdag = Transpose[Conjugate[M]] and similarly for Udag.
>To find V, I can write the equation
>for the ith row of V;
>V_ij(Mdag.M)_jk = (M_D^2)_ii V_ik (no sum over i), k=1,2 in this case.
>(Mdag.M)_11 V_i1 + (Mdag.M)_21 V_i2 = (M_D^2)_ii V_i1,   k=1
>(Mdag.M)_12 V_i1 + (Mdag.M)_22 V_i2 = (M_D^2)_ii V_i2,   k=2
>Thus, to find the elements of V in the ith row(for both i=1 and 2)
>{valV,vecV} = Eigensystem[Transpose[Mdag.M]]
>where V = vecV (No transpose!).
>similarly for U
>Of course, both vecV[[]] and vecU[[]] need to be normalized. I found
>V = {{-0.21954 + 0.49397*I,0.84130},{0.34169 - 0.76879I, 0.54056}}
>U ={{-0.34169 + 0.76879I*I,0.54056},{0.21954 - 0.49397*I,0.84130}}
>and they perfectly satisfy
>V.(Mdag.M).Vdag = U.(M.Mdag).Udag = Diag(14.672,36.328).
>However, when I check U.M.Vdag, I am getting
>U.M.Vdag = Diag(-3.8250 + 0.2031*I,6.0240 - 0.2031*I)
>where the absolute value of the entries are equal to
>the corresponding eigenvalues. The minus sign in
>front of 3.8250 is not a problem since U and and V
>are not unique(they contains some arbitrary phases
>which be used to get Md with nonnegative entries).
>So, the problem here is the existence of imaginary parts and
>I have no idea why I am getting such an answer. For example, for a
>Hermitian M (take 2-4*I instead of 2-5*I in (2,1) element of M),
>there is no such problem. What am I missing? Any idea?
>I am using Mathematica 4.0 in Windows 2K.
>Thanks a lot in advance,
If you are only seeking SingularValueDecomposition of the matrix why not 
use the built in function SingularValueDecomposition

Clear[matU, matD, matV, M]
M = {{1, 2 + 4*I}, {2 - 5*I, 1}}
{matU, matD, matV} = SingularValueDecomposition[N[M]]
matU.matD.Conjugate[Transpose[matV]] // Chop // MatrixForm
M // MatrixForm
matU.Conjugate[Transpose[matU]] // Chop
matV.Conjugate[Transpose[matV]] // Chop

Hope this helps

Pratik Desai

Pratik Desai
Graduate Student
Department of Mechanical Engineering
Phone: 410 455 8134

  • Prev by Date: Re: Notebook Style problems?
  • Next by Date: Directed Graph from Adjacency Matrix
  • Previous by thread: Diagonalizing a non-Hermitian Matrix
  • Next by thread: Re: Re: Diagonalizing a non-Hermitian Matrix