The upper Hessenberg matrix

was introduced by Frank in 1958 as a test matrix for eigensolvers.

## Determinant

Taking the Laplace expansion about the first column, we obtain , and since we have .

In MATLAB, the computed determinant of the matrix and its transpose can be far from the exact values of :

>> n = 20; F = anymatrix('gallery/frank',n); >> [det(F), det(F')] ans = 1.0000e+00 -1.4320e+01 >> n = 49; F = anymatrix('gallery/frank',n); det(F) ans = -1.406934439401568e+45

This behavior illustrates the sensitivity of the determinant rather than numerical instability in the evaluation and it is very dependent on the arithmetic (different results may be obtained in different releases of MATLAB). The sensitivity can be seen by noting that

which means that changing the element from 1 to changes the determinant by .

## Inverse and Condition Number

It is easily verified that

Hence is lower Hessenberg with integer entries. This factorization provides another way to see that .

From (1) we see that is singular for , which implies that

for any subordinate matrix norm, showing that the condition number grows very rapidly with . In fact, this lower bound is within a factor of the condition number for the -, -, and -norms for .

## Eigenvalues

Denote by the characteristic polynomial of . By expanding about the first column one can show that

Using (3), one can show by induction that

This means that the eigenvalues of occur in reciprocal pairs, and hence that is an eigenvalue when is odd. It also follows that is palindromic when is even and anti-palindromic when is odd. Examples:

>> charpoly( anymatrix('gallery/frank',6) ) ans = 1 -21 120 -215 120 -21 1 >> charpoly( anymatrix('gallery/frank',7) ) ans = 1 -28 231 -665 665 -231 28 -1

Since has nonzero subdiagonal entries, for any , and hence is nonderogatory, that is, no eigenvalue appears in more than one Jordan block in the Jordan canonical form. It can be shown that the eigenvalues are real and positive and that they can be expressed in terms of the zeros of Hermite polynomials. Furthermore, the eigenvalues are distinct.

If each eigenvalue of an matrix undergoes a small perturbation then the determinant, being the product of the eigenvalues, undergoes a perturbation up to about times as large. From (1) we see that a change to of order can perturb by , and it follows that some eigenvalues must undergo a large relative perturbation. The condition number of a simple eigenvalue is defined as the reciprocal of the cosine of the angle between its left and right eigenvectors. For the Frank matrix it is the small eigenvalues that are ill conditioned, as shown here for .

>> n = 9; F = anymatrix('gallery/frank',n); >> [V,D,cond_evals] = condeig(F); evals = diag(D); >> [~,k] = sort(evals,'descend'); >> [evals(k) cond_evals(k)] ans = 2.2320e+01 1.9916e+00 1.2193e+01 2.3903e+00 6.1507e+00 1.5268e+00 2.6729e+00 3.6210e+00 1.0000e+00 6.8615e+01 3.7412e-01 1.5996e+03 1.6258e-01 1.1907e+04 8.2016e-02 2.5134e+04 4.4803e-02 1.4762e+04

## Notes

Frank found that “gives our selected procedures difficulties” and that “accuracy was lost in the smaller roots”. The difficulties encountered by Frank’s codes were shown by Wilkinson to be caused by the inherent sensitivity of the eigenvalues to perturbations in the matrix.

## References

This is a minimal set of references, which contain further useful references within.

- Werner Frank, Computing Eigenvalues of Complex Matrices by Determinant Evaluation and by Methods of Danilewski and Wielandt, J. Soc. Indust. Appl. Math. 6(4), 378–392, 1958.
- Efruz Özlem Mersin and Mustafa Bahçsi, Sturm Theorem for the Generalized Frank Matrix, Hacettepe Journal of Mathematics and Statistics 50, 1002–1011, 2021.
- J. H. Wilkinson, Error Analysis of Floating-Point Computation, Numer. Math. 2(1), 319–340, 1960.
- J. H. Wilkinson, The Algebraic Eigenvalue Problem, Oxford University Press, 1965, Section 5.45.

## Related Blog Posts

This article is part of the “What Is” series, available from https://nhigham.com/index-of-what-is-articles/ and in PDF form from the GitHub repository https://github.com/higham/what-is.

Some time ago, I had devised a modified version of the Frank matrix, using the ideas in Varah’s paper (https://doi.org/10.1137/0907056). In particular, using his recipe with the Clement-Kac matrix (MATLAB’s gallery(‘clement’)), the $n\times n$ upper Hessenberg matrix with entries $h_{i,j} = j (n-j)+[i \leq j]$ (where $[p]$ is an Iverson bracket) has determinant $1$ and eigenvalues $\left(\frac{k}{2}+\sqrt{1+\frac{k^2}{4}}\right)^2$, $k=-(n-1), -(n-3), \dots, n-1$. It seems to be even more badly behaved than the original.