Re: Numerical Left Eigenvectors
- To: mathgroup at smc.vnet.net
- Subject: [mg6395] Re: [mg6369] [mg6369] Numerical Left Eigenvectors
- From: seanross at worldnet.att.net
- Date: Sat, 15 Mar 1997 01:21:14 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Gregory Dwyer wrote: > > Greetings - > > When I use the "eigenvector" function to numerically calculate > eigenvectors, Mathematica seems to assume that I always want right > eigenvectors. Is there some way to numerically calculate left eigenvectors? > > Thanks. > > Greg Dwyer. > Entomology, UMASS Amherst > dwyer at ent.umass.edu I tried the following code in mathematica 3.0. It looks bad in the email browser, but if you copy it into a notebook it should become transparent. Anyway, it confirms that Matrix.columnvector = rowvector.Transpose[Matrix] which means that the "right eigenvectors" of a matrix are equal to the transpose of the "left eigenvectors" of its transpose. The test matrix I used was a 5 x 5 which should be large enough to avoid any special cases that commonly occur in the smaller ones. Thus, the statement Eigenvectors[Transpose[matrix]] should return your "left" eigenvectors. This, of course, assumes that I guessed correctly what you meant by left and right eigenvectors and they are: Matrix.righteigenvector=constant.righteigenvector lefteigenvector.Matrix=constant.lefteigenvector In[1]:= \!\(\* RowBox[{ RowBox[{"A", "=", RowBox[{"(", GridBox[{ {"a11", "a12", "a13", "a14", "a15"}, {"a21", "a22", "a23", "a24", "a25"}, {"a31", "a32", "a33", "a34", "a35"}, {"a41", "a42", "a43", "a44", "a45"}, {"a51", "a52", "a53", "a54", "a55"} }], ")"}]}], ";", "\n", RowBox[{"x", "=", RowBox[{"(", GridBox[{ {"x1"}, {"x2"}, {"x3"}, {"x4"}, {"x5"} }], ")"}]}], ";"}]\) In[4]:= MatrixForm[Dot[A,x]] Out[4]//MatrixForm= \!\(\* TagBox[ RowBox[{"(", GridBox[{ {\(a11\ x1 + a12\ x2 + a13\ x3 + a14\ x4 + a15\ x5\)}, {\(a21\ x1 + a22\ x2 + a23\ x3 + a24\ x4 + a25\ x5\)}, {\(a31\ x1 + a32\ x2 + a33\ x3 + a34\ x4 + a35\ x5\)}, {\(a41\ x1 + a42\ x2 + a43\ x3 + a44\ x4 + a45\ x5\)}, {\(a51\ x1 + a52\ x2 + a53\ x3 + a54\ x4 + a55\ x5\)} }], ")"}], (MatrixForm[ #]&)]\) In[9]:= MatrixForm[Dot[Flatten[Transpose[x]],Transpose[A]]] Out[9]//MatrixForm= \!\(\* InterpretationBox[ RowBox[{"(", GridBox[{ {\(a11\ x1 + a12\ x2 + a13\ x3 + a14\ x4 + a15\ x5\)}, {\(a21\ x1 + a22\ x2 + a23\ x3 + a24\ x4 + a25\ x5\)}, {\(a31\ x1 + a32\ x2 + a33\ x3 + a34\ x4 + a35\ x5\)}, {\(a41\ x1 + a42\ x2 + a43\ x3 + a44\ x4 + a45\ x5\)}, {\(a51\ x1 + a52\ x2 + a53\ x3 + a54\ x4 + a55\ x5\)} }], ")"}], MatrixForm[ { Plus[ Times[ a11, x1], Times[ a12, x2], Times[ a13, x3], Times[ a14, x4], Times[ a15, x5]], Plus[ Times[ a21, x1], Times[ a22, x2], Times[ a23, x3], Times[ a24, x4], Times[ a25, x5]], Plus[ Times[ a31, x1], Times[ a32, x2], Times[ a33, x3], Times[ a34, x4], Times[ a35, x5]], Plus[ Times[ a41, x1], Times[ a42, x2], Times[ a43, x3], Times[ a44, x4], Times[ a45, x5]], Plus[ Times[ a51, x1], Times[ a52, x2], Times[ a53, x3], Times[ a54, x4], Times[ a55, x5]]}]]\)