Im just validating my own Code of a Givens-Rotation in Matlab. Therefore i let matlab compute the Eigenvalues after each Givens-Rotation. I am wondering why the Eigenvalues computed by matlab are different after each Iteration? (I thought a Givens-Rotation should not Change the Eigenvalues of a Matrix?)

Does it mean that my Givens-Rotation is incorrect?

EDIT: Just a small Example: $$T=\begin{bmatrix}1&2&3&4\\5&6&7&8\\9&10&11&1\\13&14&15&16\end{bmatrix}$$ Givens-Rotation $G$ of $T$ (formatted appropriate with Identity-Matrix): $$G = planerot(T(3:4,1)) = \begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&0.5692&0.8222\\0&0&-0.8222&0.5692\end{bmatrix}$$ Result: $$T1 = G*T = \begin{bmatrix}1.0000&2.0000&3.0000&4.0000\\5.0000&6.0000&7.0000&8.0000\\15.8114&17.2028&18.5942&19.9856\\0.0000&-0.2530&-0.5060&-0.7589\end{bmatrix}$$

Eigenvalues: $$eig(T) = \begin{bmatrix}36.2094\\-2.2094\\-0.0000\\-0.0000\end{bmatrix}$$ $$eig(T1) = \begin{bmatrix}26.6718\\-1.8365\\-0.0000\\-0.0000\end{bmatrix}$$

Why does eig(T1) differs from eig(T)? Is this normal after a Givens-Rotation?

EDIT 2: After the Comments of Surb and Carlos Laguillo it seems okay that the Eigenvalues changes in the process of achieving a triangular form. But i compared these realizings with some matlab functions (hess and schur). Both functions generates some Zeros in my Matrix while always preserving the original Eigenvalues:

T1 = hess(T);
T2 = schur(T);
eig(T1) =    36.2094

eig(T2) =    36.2094

So, how can i can compute such forms using the givens-rotation without having my Eigenvalues changed?

  • $\begingroup$ Have a look here: mathworld.wolfram.com/RotationMatrix.html about eigenvalues of rotation matrices: some may depend on the angle so composing a rotation with itself will just change your rotation angles and it is ok if you get different eigenvalues. Although, to be honest, I don't know "Givens-Rotations". $\endgroup$ – Surb Jun 16 '15 at 16:41
  • $\begingroup$ Im not sure if we talk about the same Topic. In my Case i compute a Givens-Rotation which is used to generate a Zero in a Matrix of which i want to calculate the Eigenvalues: $$[G] = GetGivensRotation(A);\\A1 = G*A$$ Is it okay that the Eigenvalues of A and A1 differ? $\endgroup$ – Roland Jun 16 '15 at 16:50
  • $\begingroup$ Yes, it is okay. $\endgroup$ – Carlos Laguillo Jun 16 '15 at 16:56
  • $\begingroup$ I just inserted an example in my original post. I always thought These Kind of similarity-Transformation should Keep the Eigenvalues as i am using them to compute the Eigenvalues? Why is it allowed that These values can Change? $\endgroup$ – Roland Jun 16 '15 at 17:05
  • $\begingroup$ I just compared your Statement with the results of the built-in functions hess and schur in matlab. By using them my Eigenvalues stay the same. So, how i can i achieve such a behaviour in my own functions? Wheres the difference? $\endgroup$ – Roland Jun 16 '15 at 18:59

Your Answer

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

Browse other questions tagged or ask your own question.