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]]}]]\)