function MaxTrace()
1. Introduction
Suppose $f(x,y)$ is a symmetric function of two variables defined on a square $[a, b] \times [a, b]$. We consider the problem of maximizing $$ trace(G^T \kern -2pt f \kern 1pt G) ,\ \ \ \ \ (1) $$ over all $\infty \times k$ quasimatrices $G$ defined on $[a, b]$ with orthonormal columns, i.e., $$ G^T \kern -1pt G = I_k, $$ where $I_k$ is the $k \times k$ identity matrix.
We can solve this problem via the spectral decomposition $$ f(x,y) = \sum_{i=1}^{\infty} \lambda_i \, q_i(x)\,q_i(y), $$ where $\lambda_1 \geq \lambda_2 \geq \dots$ are eigenvalues and $q_1, q_2, \dots$ are orthonormal eigenfunctions of $f$ when viewed as a the kernel of an integral operator. A solution to the maximum trace problem consists of the eigenfunctions corresponding to the $k$ largest eigenvalues of $f$, $$ G(x) = [~q_1(x)\ | \ q_2(x) \ | \ \cdots \ | \ q_k(x)~]. $$ This is a continuous analogue of the maximum trace problem for symmetric matrices [1], which can be solved via the Courant-Fischer eigenvalue characterization [3].
For illustration, we look at four symmetric bivariate functions in Chebfun. The function U = ev(f, k)
in the following computes eigenvectors corresponding to the first $k$ (algebraically) largest eigenvalues of the symmetric chebfun2 object f
. In order to compute the spectral decomposition of a symmetric function with a finite numerical rank, we apply the trick used in [2].
2. Example: square peg
This is the approximate characteristic function of a square.
f = cheb.gallery2('squarepeg')
f = chebfun2 object domain rank corner values [ -1, 1] x [ -1, 1] 1 [9.1e-13 9.1e-13 9.1e-13 9.1e-13] vertical scale = 1
Since $f$ is a symmetric rank 1 function, it only makes sense to solve (1) for $k = 1$. We plot the 2D function $f$
k = 1; U = ev(f, k); plot(f), colormap(summer), zlim([0 1])
We also plot the 1D function $U$ which solves (1).
plot(U)
3. Example: tilted peg
Next, we try a tilted variant of the square peg with rank 100. This is like the function cheb.gallery2('tiltedpeg')
, except with the tilting angle modified to make $f$ symmetric. We solve (1) for $k = 4$ and plot the four columns of our solution.
ff = @(x,y)1./((1+(x+y).^20).*(1+(y-x).^20)) f = chebfun2(ff); k = 4; U = ev(f, k); clf, plot(U) x = chebfun('x'); one = 1 + 0*x; for j = 1:k plot3(j*one, x, U(:,j),'linewidth',1.6), hold on end title('4 eigenfunctions of the tiltedpeg'), axis tight view([-43 48]), hold off, box on
ff = @(x,y)1./((1+(x+y).^20).*(1+(y-x).^20))
4. Example: waffle
This is another symmetric function. It has horizontal and vertical ridges and we solve (1) for $k = 5$.
[f, ff] = cheb.gallery2('waffle') k = 5; U = ev(f, k); for j = 1:k plot3(j*one, x, U(:,j),'linewidth',1.6), hold on end title('5 eigenfunctions of the waffle'), axis tight view([-37 59]), hold off, box on
f = chebfun2 object domain rank corner values [ -1, 1] x [ -1, 1] 29 [0.0032 0.0032 0.0032 0.0032] vertical scale = 1 ff = @(x,y)1./(1+1e3*((x.^2-.25).^2.*(y.^2-.25).^2))
5. Example: multiquadric
Our last test case is a multiquadric kernel for $k = 5$.
c = 0.6; mq = @(x,y) sqrt((x.^2+y.^2) + c^2); f = chebfun2(mq) k = 5; U = ev(f, k); for j = 1:k plot3(j*one, x, U(:,j),'linewidth',1.6), hold on end title('5 eigenfunctions of the multiquadric'), axis tight view([-37 59]), hold off, box on
f = chebfun2 object domain rank corner values [ -1, 1] x [ -1, 1] 11 [ 1.5 1.5 1.5 1.5] vertical scale = 1.5
Let's compare the optimal solution to (1) for our multiquadric with the value of the objective function for another orthonormal quasimatrix $U2$, the first 5 Legendre polynomials computed via QR factorization of the Vandermonde quasimatrix:
optimal = trace(U'*f*U) U2 = qr(x.^(1:k)); leg_trace = trace(U2'*f*U2)
optimal = 2.024827967723096 leg_trace = 1.596796281773389
function U = ev(f, k) % U = EV(F, K) returns eigenfunctions corresponding to K algebraically % largest eigenvalues of a symmetric chebfun2 object F. [U,S,V] = svd(f); s = zeros(size(U,2),1); for i=1:size(U,2) s(i) = U(:,i)'*V(:,i); % inner product of eigenfunctions end Lambda = sign(s).*diag(S); % eigenvalues of f [~, idx] = sort(Lambda); ind = flip(idx(end-k+1:end)); % indices of the k largest eigenvals U = U(:, ind); % corresponding eigenfunctions end
References
-
S. Boyd, Low rank approximation and extremal gain problems, Lecture notes for Introduction to Linear Dynamical Systems, Stanford University, 2015.
-
B. Hashemi, Nearest positive semidefinite kernel, Chebfun Example, Feb. 2016. http://www.chebfun.org/examples/approx2/NearestPSDKernel.html
-
E. Kokiopoulou, J. Chen, and Y. Saad, Trace optimization and eigenproblems in dimension reduction problems, Numerical Linear Algebra with Applications 18 (2011) 565-602.
end