# How to obtain the orthogonal matrix that diagonalize a symmetric matrix [closed]

I have a real symmetric matrix H which is in symbolic form, I need a matrix P that can diagonalize H; also P is orthogonal and its columns are the eigenvectors of H.

How can I doing this in mathematica? Below is my sample matrix.

 H = {{λ - u, -t, -Δ, 0},
{-t, -λ - u, 0, -Δ},
{-Δ, 0, -λ + u,  t},
{0, -Δ, t, λ + u}} // MatrixForm

-

## closed as off-topic by m_goldberg, Michael E2, ubpdqn, bobthechemist, C. E.Mar 8 '14 at 21:33

This question appears to be off-topic. The users who voted to close gave this specific reason:

• "This question arises due to a simple mistake such as a trivial syntax error, incorrect capitalization, spelling mistake, or other typographical error and is unlikely to help any future visitors, or else it is easily found in the documentation." – m_goldberg, Michael E2, ubpdqn, bobthechemist, C. E.
If this question can be reworded to fit the rules in the help center, please edit the question.

Try searching the documentation. – b.gatessucks Mar 7 '14 at 12:39
This question is not trival I think. The Eigenvetors only give the eigenvetors of my matrix. However, they do not form a orthogonal matrix P. @SimonWoods – buzhidao Mar 7 '14 at 13:18
@b.gatessucks How to do this neatly also ensure P is an orthogonal matrix? As the answer below, you can easily check that column 3 and column 4 are not orthogonal(their inner product is not zero). Though you can normalize each row to make any two rows are orthogonal, but how can you ensure any columns are orthogonal at the same time? – buzhidao Mar 7 '14 at 13:41
@SimonWoods After doing P = Transpose[Eigenvectors[H]] as you suggested, a normalization procedure of each column in P should also be done. After that, P will be an orthogonal matrix with its columns are the eigenvectors of H. Am I right? – buzhidao Mar 7 '14 at 14:29

H = {{λ - u, -t, -Δ, 0},
{-t, -λ - u, 0, -Δ},
{-Δ, 0, -λ + u,  t},
{0, -Δ, t, λ + u}};
P=Transpose[Eigenvectors[H]] // Simplify;


Now you have to orthogonalize the matrix:

POrt = P.Inverse[Sqrt[Simplify[Transpose[P].P]]];

-
Please look my question details. @bcp >Require "P is orthogonal" – buzhidao Mar 7 '14 at 13:12
I corrected the answer... – bcp Mar 7 '14 at 13:50
Thanks, this should work in principle. – buzhidao Mar 7 '14 at 14:15