Eigenvectors and eigenvalues

Syntax: | `y = EIGEN(m)`

If matrix `m` is an `n` by `n` symmetric matrix, then `EIGEN(m)` returns a matrix with `n` rows and `n+1` columns. Column `n+1` contains the eigenvalues, while columns `1` through `n` are the eigenvectors of the symmetric matrix `m`. The eigenvector `x` and the eigenvalue `s` of matrix `m` satisfy the equation: `m<>x = s*x`.

One way to check a result is with the following script:

       e=EIGEN(m)
       n=vlen(m)[1]
       DO j = [1:n]
         =m<>e[*,j]-e[j,n+1]*e[*,j] ! these should be all zero (or close to zero)
       ENDDO

Example

The following commands:

       m=[[2;-1;0;0];[-1;2;-1;0];[0;-1;2;-1];[0;0;-1;2]]
       e=eigen(m)

produces:

       matrix m
            2    -1    0    0
           -1     2   -1    0
            0    -1    2   -1
            0     0   -1    2
       matrix e
         0.371748  0.601501  0.601501 -0.371748  0.381966
         0.601501  0.371748 -0.371748  0.601501  1.38197
         0.601501 -0.371748 -0.371748 -0.601501  2.61803
         0.371748 -0.601501  0.601501  0.371748  3.61803

The eigenvalues are `e[*,5] = [0.381966;1.38197;2.61803;3.61803]`

The four eigenvectors are `e[*,j]` for `j=[1:4]`