MathOverflow is a question and answer site for professional mathematicians. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Hi, I am interested in how to numerically track spectrum curves of a parameter dependent linear operator.

Given a linear operator in square matrix form $M(t)$, where the matrix is smooth dependent of parameter $t\in[0,\infty]$. We also could know any order derivatives $M^{(k)}(t)$, whether analytic or not.

Based on some perturbation theory, we may compute the derivatives of eigenvalues and eigenvectors of $M$ in theory. The main challenge is the treatment of repeated eigenvalues(or its derivatives). The general idea in literature, is to find a canonical form of eigenvectors $\{X_i\}$, such that $X_i$ is corresponding to the repeated eigenvalues of $M^{(0)},...,M^{(k-1)}$ and distinct eigenvalue of $M^{(k)}$. Thus the derivative of eigenvalue is given as

$\lambda'_i = X^T_i M' X_i$

However, in numerical setting, non pair of eigenvalues are exactly the same, and the situation turn to be difficult when I would like to compute and observe the evolving of eigenvalues w.r.t parameter $t$ in its domain.

For example, at $t=0$, suppose all eigenvalues are distinct. But during the $t$ evolves, the curves corresponding to distinct eigenvalue could intersect. I found it is still hard to handle the problem of numerical tracking, namely to find $n$ distinct smooth curves in $t$ domain which represent the spectrum of $M(t)$.

Here are some basic ideas:

In numerically sense if I have the eigenvalues $\lambda_{i}(t_j)$ and $\lambda_{i_q}(t_{j+1})$, $i=1,...,n$(the matrix dimension) for $t_{j+1} = t_j + \Delta t$(where $\Delta t$ should be reasonably small), computed by some standard numerical routines(such as the ones implemented in SLEPc), How could I figure out the permutation $i_p$ which indicates the correspondence between two consecutive group of eigenvalues.

Since the standard routines for eigenvalue problem only solve a static matrix $M$, the eigenvectors computed does not have the canonical form described previously. By providing all eigenpairs of $M(t_j)$, $M(t_{j+1})$ and any derivatives of $M(t)$, is it possible to establish the eigenpair correspondence(maybe a probability sense in term of $\Delta t$).

Or alternatively, by providing the eigenpairs of $M(t_j)$, is there a way to compute eigenpairs of $M(t_{j+1})$ in a sense to establish those correspondence implicitly.

The problem is only challenged when two curves intersect(enough close at some $t$ comparing to $\Delta t$), otherwise I would simply assign the correspondence by comparing eigenvalues or inner product of eigenvectors of two consecutive eigen group.

Due to my limited knowledge, I hope there are other people encountering the same problem, whether from theoretical interest or application background. All comments which may provide related informations are welcome.

share|cite|improve this question

I faced this problem a few years ago. In that case, I obtained a satisfactory approach along the lines of one of your suggestions. Specifically, I found that the eigenvectors changed relatively slowly with $t$. So I could associate the corresponding eigenvalue curves after an intersection with the right ones before an intersection by considering the similarity of the corresponding eigenvectors. I found that the inner-product $X^T_i Y_j$, where $X_i$ is one of the eigenvectors after the intersection and $Y_j$ is one of the eigenvectors after the intersection was a good measure of their similarity.

By the way, you might get more answers by posting this on

share|cite|improve this answer
Yes, I adopted those strategies earlier. But in my cases, it is not satisfied when two spectrum curves intersect. Because, the eigenvectors computed are not numerical stable when their eigenvalues are close. – bobye Feb 9 '12 at 7:02

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.