3
$\begingroup$

I am trying to diagonalize the following matrix \begin{equation} \left(\begin{array}{cccc} { \frac{1-K\left(x_{2}^{2}+x_{3}^{2}\right)}{1-K|x|^{2}}} & { \frac{K x_{1} x_{2}}{1-K |x|^{2} }} & { \frac{K x_{1} x_{3}}{1-K|x|^{2}}} \\ { \frac{K x_{1} x_{2}}{1-K|x|^{2}}} & { \frac{1-K\left(x_{1}^{2}+x_{3}^{2}\right)}{1-K|x|^{2}}} & { \frac{K x_{2} x_{3}}{1-K|x|^{2}}} \\ {\frac{K x_{1} x_{3}}{1-K|x|^{2}}} & { \frac{K x_{2} x_{3}}{1-K|x|^{2}}} & { \frac{1-K\left(x_{1}^{2}+x_{2}^{2}\right)}{1-K|x|^{2}}} \end{array}\right) \end{equation} with a quick substitution of the variables from $x_{1},x_{2},x_{3} \rightarrow x,y,z$. My attempt is as follows,

B = Norm[{x, y, z}];
r = 1 - K*B^{2}
A = 
  {{(1 - K (y^{2} + z^{2}))/r, (K*x*y)/r, (K*x*z)/r}, 
   {(K*x*y)/r, (1 - K (x^{2} + z^{2}))/r, (K*y*z)/r}, 
   {(K*x*z)/r, (K*y*z)/r, (1 - K (x^{2} + y^{2}))/r}};
A //  MatrixForm
evecs = Eigenvectors[A];
Inverse[Transpose[evecs]].A.Transpose[evecs] // Chop // MatrixForm;

After attempting to find the eigenvectors of the above matrix I get an error saying

Eigenvectors:Argument$ "at position 1 is not a non-empty square matrix.

Did I make a mistake when writing the matrix? I apologize as I have near to no experience typing in Mathematica, hence, I am not even sure if Mathematica can perform such symbolic calculations as I was told that it could. Any help would be greatly appreciated.

$\endgroup$
6
$\begingroup$

Just remove all the extra {} stuff you have in exponents. i.e. do not write x^{2} but use x^2 etc.. for all the other places.

B = Norm[{x, y, z}]
r = 1 - K*B^2
A = {
   {(1 - K (y^2 + z^2))/r, (K*x*y)/r, (K*x*z)/r},
   {(K*x*y)/r, (1 - K (x^2 + z^2))/r, (K*y*z)/r},
   {(K*x*z)/r, (K*y*z)/r, (1 - K (x^2 + y^2))/r}
   };
A // MatrixForm
evecs = Eigenvectors[A];
Inverse[Transpose[evecs]].A.Transpose[evecs] // Chop // MatrixForm

Btw, to get rid of all the Abs stuff which makes the norm hard to read, replace your first line with this

Compare:

 B = Norm[{x, y, z}]

Mathematica graphics

And

 B = Assuming[Element[{x, y, z}, Reals], Simplify@Norm[{x, y, z}]]

Mathematica graphics

| improve this answer | |
$\endgroup$
  • $\begingroup$ Thank you so much!! This works $\endgroup$ – lastgunslinger Feb 6 at 2:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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