|
[My second reply, from a different angle:]
In article <3AE00C0C.68C53E6C@srt.tu-darmstadt.de>,
Alexander Baehr <abaehr@srt.tu-darmstadt.de> wrote:
:
:Hello everybody,
:
:here's the problem matrix:
:
: -300 1 0
:A = -30000 0 -1
: -10^6 0 0
:
:
:It is the result of an eigenvalue assignment to a control system, so I'm
:not guilty for it.
:
:MATLAB computes a triple eigenvalue (eig(A)) at -100, but a conditional
:number (cond(A)) of 10^6. Also, the solution function x(t) for
:
:dx/dt = A * x
:x(0) = x0
:
:shows a large overshoot in all three dimensions, which normally
:indicates complex eigenvalues.
:
:Has anybody got an idea where the computation problem is? Has anybody
:software that computes different eigenvalues?
A typo, presumably in A(3,1): the triple eigenvalue
(-100) comes from
A =
[ -300 1 0
-30000 0 -1
1000000 0 0 ]
Now A = (-100)*I + B, where I = eye(3,3),
B =
[ -200 1 0
-30000 100 -1
1000000 0 100 ]
is a nilpotent matrix:
B^2 =
[ 10000 -100 -1
2000000 -20000 -200
-100000000 1000000 10000 ]
and B^3 = zeros(3,3).
The (fundamental) solution of
dF(t)/dt = A*F(t), F(0)=I
is
F(t) = exp(t*A)
= exp(-100*t) * (I + t * B + (t^2/2) * B^2)
and now you can see where the "overshoot" comes from.
About perturbations: If B is nilpotent of index p,
that is, B^(p-1) is not 0 but B^p = 0, then (some)
eigenvalues of B+H for small "generic" H lie
approximately at the vertices of a regular p-gon
centered at 0, of radius of order of magnitude
(norm(H))^(1/p). This can be explained more
precisely using Weierstrass's Preparation Theorem.
(OK, numerical perturbations coming from rounding and
truncation are hardly "generic", but MATLAB experiments
with high-order nilpotents with integer entries do
exhibit this regularity.)
Hence an explanation why, in the presence of approximate
calculations, some computed eigenvalues of an allegedly
nilpotent (or shifted nilpotent) matrix end up being
non-real.
Hope some of it helps,
ZVK(Slavek).
|