Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: Re: Diagonalizing a non-Hermitian Matrix

Pratik Desai wrote:

>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
I am sorry, I did not read the part where you mentioned you are using 
version 4.0. The SVD functionality is for version 5.0 and up
I think JordanDecomposition is more what you are looking for

M = {{1, 2 + 4*I}, {2 - 5*I, 1}}
{matu, matd} = JordanDecomposition[N[M]]
matu.matd.Inverse[matu] // Chop // MatrixForm
Inverse[matu].N[M].matu // Chop // MatrixForm

I notice in your diagonal matrix the eigenvalues are real, I think that 
is wrong your eigenvalues must be complex
As to the actual implimentation of your code in mathematica, that would 
be really interesting if it is possible.

Best Regards

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

  • Prev by Date: Re: How to create a new Form
  • Next by Date: How to create a new Form
  • Previous by thread: Re: Diagonalizing a non-Hermitian Matrix
  • Next by thread: Re: Diagonalizing a non-Hermitian Matrix