# Problem 17

The matlab command hilb(n) computes the Hilbert matrix of size $$n \times n$$. What are the eigenvalues and eigenvectors of this matrix, for various values of $$n$$? What can you say about the condition number?

## Solution

### Matlab

Computing the eigenvalues and eigenvectors of a matrix is performed via eig:

[V,E] = eig( hilb(3) );


Show the eigenvalues:

diag(E)
ans =

0.0026873
0.1223271
1.4083189


And the eigenvectors:

V
V =

-0.12766   0.54745   0.82704
0.71375  -0.52829   0.45986
-0.68867  -0.64901   0.32330


The condition number of a matrix is computed with the command cond:

for i=1:10
printf( "%d : %.6e\n", i, cond(hilb(i)) )
end


Output:

1 : 1.000000e+00
2 : 1.928147e+01
3 : 5.240568e+02
4 : 1.551374e+04
5 : 4.766073e+05
6 : 1.495106e+07
7 : 4.753674e+08
8 : 1.525758e+10
9 : 4.931538e+11
10 : 1.602442e+13


### Mathematica

There is a built-in command called HilbertMatrix:

HilbertMatrix[3] // MatrixForm


Compute the eigenvalues and eigenvectors of the matrix (output is numerical):

Eigensystem[HilbertMatrix[3]] // N
Eigensystem[HilbertMatrix[4]] // N


How long does it take for $$n=10$$:

Timing[Eigensystem[HilbertMatrix[10]]][[1]]


A table of condition numbers, $$n$$ goes from 1 to 10:

Table[LinearAlgebraMatrixConditionNumber[HilbertMatrix[n]], {n, 1, 10}]
`