Code covered by the BSD License  

Highlights from
majorization check

Be the first to rate this file! 0 Downloads (last 30 days) File Size: 2.99 KB File ID: #26962

majorization check

by Andrew Knyazev

 

15 Mar 2010 (Updated 16 Mar 2010)

checks if X is (weakly) majorized by Y, where X and Y must be numeric arrays.

| Watch this File

File Information
Description

MAJLE (Weak) Majorization check
S = MAJLE(X,Y) checks if the real part of X is (weakly) majorized by the real part of Y, where X and Y must be numeric (full or sparse) arrays. It returns S=0, if there is no weak majorization of X by Y, S=1, if there is a weak majorization of X by Y, or S=2, if there is a strong majorization of X by Y. The shapes of X and Y are ignored. NUMEL(X) and NUMEL(Y) may be different, in which case one of them is appended with zeros to match the sizes with the other and, in case of any negative components, a special warning is issued.
S = MAJLE(X,Y,MAJLETOL) allows in addition to specify the tolerance in all inequalities. [S,Z] = MAJLE(X,Y,MAJLETOL) also outputs a row vector Z, which appears in the definition of the (weak) majorization. In the traditional case, where the real vectors X and Y are of the same size, Z = CUMSUM(SORT(Y,'descend')-SORT(X,'descend')). Here, X is weakly majorized by Y, if MIN(Z)>0, and strongly majorized if MIN(Z)=0, see http://en.wikipedia.org/wiki/Majorization

The value of MAJLETOL depends on how X and Y have been computed, i.e., on what the level of error in X or Y is. A good minimal starting point should be MAJLETOL=eps*MAX(NUMEL(X),NUMEL(Y)). The default is 0.

One can use this function to check numerically the validity of the Schur-Horn,Lidskii-Mirsky-Wielandt, and Gelfand-Naimark theorems:
 
clear all; n=100; majleTol=n*n*eps;
A = randn(n,n); A = A'+A; eA = -sort(-eig(A)); dA = diag(A);
majle(dA,eA,majleTol) % returns the value 2
% which is the Schur-Horn theorem; and
B=randn(n,n); B=B'+B; eB=-sort(-eig(B));
eAmB=-sort(-eig(A-B));
majle(eA-eB,eAmB,majleTol) % returns the value 2
% which is the Lidskii-Mirsky-Wielandt theorem; finally
A = randn(n,n); sA = -sort(-svd(A));
B = randn(n,n); sB = -sort(-svd(B));
sAB = -sort(-svd(A*B));
majle(log2(sAB)-log2(sA), log2(sB), majleTol) % retuns the value 2
majle(log2(sAB)-log2(sB), log2(sA), majleTol) % retuns the value 2
% which are the log versions of the Gelfand-Naimark theorems

Revision: 1.0 $ $Date: 15-Mar-2010
Tested in MATLAB 7.9.0.529 (R2009b) and Octave 3.2.3.

MATLAB release MATLAB 7.9 (2009b)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Please login to add a comment or rating.
Updates
16 Mar 2010

LGLP license replaced with BSD

Tag Activity for this File
Tag Applied By Date/Time
mathematics Andrew Knyazev 16 Mar 2010 10:25:29
statistics Andrew Knyazev 16 Mar 2010 10:25:29
majorization Andrew Knyazev 16 Mar 2010 10:25:30

Contact us at files@mathworks.com