Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1993
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1993

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

Search the Archive

Symbolic Eigenvectors

  • To: mathgroup at yoda.physics.unc.edu
  • Subject: Symbolic Eigenvectors
  • From: Jim Ferguson <ferguson at rest.tasc.com>
  • Date: Mon, 4 Oct 93 08:30:30 -0400

Can anyone suggest a "plan of attack"?

I am given a four dimensional, symbolic, real, symmetric covariance  
matrix. This matrix represents the correlations of four, zero mean,  
normally distributed random variables. All entries in the matrix are  
real and all diagonal entries are positive.

I am trying to find the rotation matrix that will diagonalize the  
given covariance matrix. This is the same as saying that I am trying  
to find all of the eigenvectors for the covariance matrix.

I know from theory that for a real, symmetric, positive definite  
matrix there is a full set of eigenvectors and that all of the  
eigenvalues are real.

Unfortunately, I have been unable to get Mathematica to return these  
eigenvectors.

Can anyone suggest some neat mathematical or Mathematica tricks that  
will help Mathematica converge to a solution? 


Previous failed attempts:

corr=      {{a, b, c, d },
            {b, f, g, h },
            {c, g, k, l },
            {d, h, l, p } }

	(1) evectors = Eigenvectors[ corr ];

 (*Never converges...5days on a PC-386DX Mathematica 2.2 *)
 (* After 3 days on a Next Mathematica 2.1, Next auto reboots *)

eigenMatrix = corr - e IdentityMatrix[4];

	(2) Find the eigenvectors manually by solving the
	    chararteristic polynomial for eigenMatrix.

{k0,k1,k2,k3,k4} = CoefficientList[Det[eigenMatrix], e];

ev = Solve[ e^4 + c3 e^3 + c2 e^2 + c1 e + c0 == 0, e ];

ev1 = e /. ev[[1]];
ev1 = Simplify[ev1 /. {c0->k0, c1->k1, c2->k2, c3->k3}];
ev1 = Simplify[ComplexExpand[ ev1 ]];
ematrix = eigenMatrix /. e->ev1;
evec1 = NullSpace[ ematrix ];
       .
       .  Do same for the remaining three vectors
       .  if the first one ever returned

Thanks for any help,

	Jim Ferguson
	email: ferguson at rest.tasc.com














  • Prev by Date: Re: Help: how to disp. 3-D vectors
  • Next by Date: Eliminate
  • Previous by thread: Re: Help: how to disp. 3-D vectors
  • Next by thread: Eliminate