Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I have a matrix and am trying to find the normalised eigenvectors of it. I am using the Eigensystem command and am getting a result.

There is a normalize command, but as far as I can see this involves applying it to each vector individually. Is there by any chance an option that anyone has come across so that Mathematica does this automatically?

Many thanks!

share|improve this question

closed as off-topic by Michael E2, Jens, Öskå, Pickett, Nasser Jun 12 at 11:30

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." – Michael E2, Jens, Öskå, Pickett, Nasser
If this question can be reworded to fit the rules in the help center, please edit the question.

If you use something like Normalize[{{1, 2}, {4, 5}}, Norm] do you get what you need? –  kguler Jun 11 at 21:16
They are all normalized so that the norm is 1 ! Try this k = {{300, 100}, {100, 200}}; m = {{4, 1.}, {1, 3}}; {lam, phi} = Eigensystem[{k, m}]; Norm[phi[[;; , #]]] & /@ Range[2] and you will get {1,1} –  Nasser Jun 11 at 21:18
Mathematica already does this automatically, so there is no need to call any additional commands. When you call Eigensystem, the eigenvalues are already normalized. –  DumpsterDoofus Jun 11 at 21:22
If you're not getting normalized eigenvectors, then you're apparently trying to get exact (symbolic) eigenvectors. In that case, beware of a known bug in Eigensystem. –  Jens Jun 12 at 6:09

1 Answer 1

From the documentation of Eigenvectors:

  • For approximate numerical matrices m, the eigenvectors are normalized.

  • For exact or symbolic matrices m, the eigenvectors are not normalized.

You can always Map Normalize to the list of vectors to normalize them in one go, though for symbolic expressions this will look ugly, as it explicitly divides with the norm.

Example: This is a matrix of exact numbers, so the eigenvectors returned by Eigenvectors won't be normalized:

mat = RandomInteger[5, {3, 3}]
(* {{1, 4, 2}, {2, 5, 4}, {0, 2, 2}} *)

But we can map Normalize to each vector in one go:

Normalize /@ Eigenvectors[mat]
(* {{2/Sqrt[5 + 1/16 (3 + Sqrt[73])^2], (3 + Sqrt[73])/(
  4 Sqrt[5 + 1/16 (3 + Sqrt[73])^2]), 1/Sqrt[
  5 + 1/16 (3 + Sqrt[73])^2]}, {-(2/3), -(1/3), 2/3}, {2/Sqrt[
  5 + 1/16 (-3 + Sqrt[73])^2], (3 - Sqrt[73])/(
  4 Sqrt[5 + 1/16 (-3 + Sqrt[73])^2]), 1/Sqrt[
  5 + 1/16 (-3 + Sqrt[73])^2]}} *)
share|improve this answer

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