Re: Generalized Eigenvector and Singular Value Decompositions
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg322] Re: [mg304] Generalized Eigenvector and Singular Value Decompositions
- From: Mark Kotanchek <mek at guinan.arl.psu.edu>
- Date: Mon, 12 Dec 94 15:11:50 -0500
Howdy,
Just thought I'd comment on Richard's post since I disagree concerning the
need for computational efficiency and suspect he looked at an orthogonal
problem....
[munch]
However:
> 1) the SVD of a 6x6 complex-valued matrix requires
> 0.8 seconds on my NeXTstation -- which is IMHO
> excessive;
If it takes 2 hours to do a large matrix, then you may have a
complaint. Taking 0.8 seconds to do anything is not a valid
complaint, especially given the quirks of timing. My
NeXTstation yield 0.15 seconds for 10 repetitions of applying
SingularValues to a random 6x6 matrix as measured by the Timing
command. On the other hand, doing it just once gives 0.4 seconds
(no output) or 1.8 second (with output) through the in-window
time display. They are all measuring different things, none of
them particularly useful except for comparisons between
machines.
While a random REAL matrix can be handled with reasonable efficiency by
Mathematica -- as witnessed by the time required for the SVD of a sequence of
10 6x6 matrices,
In[42]:=
matSet = Table[Table[Random[Real,{-10,10}],{6},{6}],{10}];
SingularValues/@matSet; // Timing
Out[43]=
{0.116667 Second, Null}
dropping into the complex domain is a TOTALLY different story....
In[44]:=
matSet = Table[Table[Random[Complex,{-10(1+I),10(1+I)}],{6},{6}],{10}];
SingularValues/@matSet; // Timing
Out[45]=
{9.33333 Second, Null}
These numbers are consistent with watch timings. Since I occasionally am
working with sequences of 500+ complex-valued matrices, we can start to get
up into semi-serious amounts of time on my NeXTstation (running Mma 2.2).
To some extent, this problem is consistent with my perceived bias of Mma
towards real arithmetic in both numerical and symbolic computations. IMHO, a
factor of 80 penalty in working with complex-valued rather than real-valued
data is not a good thing.
Given my orientation towards signal processing, the complex domain is an
appropriate place to be. A couple respondees to my original post suggested
that I use MATLAB -- which, unfortunately, is not available for NEXTSTEP.
Since I'm not about to give up NEXTSTEP (display Postscript, real OS, other
apps, etc.), I'm faced with the option of using Mma or Octave. Since I like
Mma's flexibility w.r.t. data structures and I've got a sizable number of
packages developed, I'd prefer to use Mma.
In sum, I'll stand by my opinion that Mma needs improved matrix algebra
numerics -- both in terms of computational efficiency and in terms of
functions (e.g., generalized eigendecompositions, etc.). An ability to
declare variables as being matrices, positive-definite, Hermitian, vectors,
etc. would also be useful from a symbolic perspective.
IMHO, of course,
Mark.
---
Mark Kotanchek
Signal Processing Dept - 363 ASB
Applied Research Lab/Penn State
P.O. Box 30
State College, PA 16804
e-mail: kotanchek at psu.edu (NeXTmail)
TEL: (814)863-0682
FAX: (814)863-0753