> I have some problems when using eigenvals.dfw which are shown in
>the attached file. I hope somebody will tell me what I am doing wrong.
[on approx_eigenvector]
Hi!
Maybe, all what follows is only nonsense, but...
1. The help on approx_eigenvector says that you cannot use
an *exact* eigenvalue (see below) for the second argument.
2. See the file vector.mth for the approx_eigenvector
definition.
This is very strange and unclear function. Use with
care, and, IMHO, better not use at all.
As I see it, the eigenvalue problem is
For a given matrix A find a vector x and
a scalar mu that
A*x=mu*x
When you know mu, you can write it as
(A-mu*E)*x=0,
with E being the identity matrix. Now, it might be
x=(A-mu*E)^(-1)*0,
but this formula uses a reverse matrix, and more over, as
det(A-mu*E)=0,
there is no reverse at all.
The function approx_eigenvector obtains the result by
applying row_reduce to (A-mu*E)*x=0, i.e.
ROW_REDUCE(A-mu*E,l).
But it is not al the truth, what is l?? We say l to be a
"random" vector. mu cannot be an eigenvalue of A, but only
approximation to it.
So (A-mu*E)^(-1)*l is an approximation to an
eigenvector of A. And finally this vector (woe to it!) is
normalized by the sign function:
SIGN([a,b,..])=
[a/sqrt(a^2+b^2+..),b/sqrt(a^2+b^2+..),..],
that is, SIGN(x)=x/|x|, where x is a vector.
My sketch for the proof follows.
Let x and mu are exact and
A*x=mu*x.
Let x~=(A-mu~*E)^(-1)*l/|(A-mu~*E)^(-1)*l|, where l is a
random vector as above, and mu~-mu=delta, |delta|<<1.
Then we try to show that x~ is approximatly eigenvector:
epsilon=(A-mu*E)*x~=
(A-mu~*E+(mu~-mu)*E)*(A-mu~*E)^(-1)*l/|(A-mu~*E)^(-1)*l|=
=(l+delta*(A-mu~*E)^(-1)*l)/|(A-mu~*E)^(-1)*l|
And finally
|epsilon|<=|l|/|(A-mu~*E)^(-1)*l|+|delta|.
At this point I cannot do the next step, why
|epsilon|<<1 ?!
Where is an approximation?
Aleskey
PS. If A has different eigenvalues mu(i), i.e.
i=/=j --> mu(i) =/= mu(j),
then
(A-mu~*E)^(-1)= sum(G(i)/(mu~-mu(i)),i) =~=
=~= G(k)/|delta|,
where mu(k)=mu, and G(i) are defined by A only. In this
case,
|epsilon|<=(|l|/|G(k)*l|+1)*|delta|<<1,
when |delta|<< 1/(1+|l|/|G(k)l|). So approximation
conditions can be satisfied by choosing mu~ (all other
values are given, l being the function approx_eigenvector's
constant). The case of general matrix is obscure to me.
|