## Output from imleig.sas

Source
0 Graphs

```NOTE: Capture of log output started.
```
```NOTE: %INCLUDE (level 1) file n:\psy6140\examples\iml\imleig.sas is file
n:\psy6140\examples\iml\imleig.sas.```
```360  +title 'IMLEIG: Eigenvalues and Eigenvectors';
361  +    *  ------  ---------------------------- ;
362  +proc iml;```
`IML Ready`
```363  +   reset print log fuzz fw=5;
364  +*[Johnson and Wichern, EX.2.9],;
365  +A={13 -4 2, -4 13 -2, 2 -2 10};```
```                A             3 rows      3 cols    (numeric)

13    -4     2
-4    13    -2
2    -2    10

```
`366  +call eigen(values, vectors, A);`
```                VALUES        3 rows      1 col     (numeric)

18
9
9

VECTORS       3 rows      3 cols    (numeric)

0.667 0.383  0.64
-0.67  0.69 0.282
0.333 0.615 -0.71

```
```367  +*-- Properties of eigenvalues;
368  +*-- 1. trace(A) = sum of eigenvalues;
369  +r = sum(values);```
```                R             1 row       1 col     (numeric)

36

```
`370  +r = sum(vecdiag(A));`
```                R             1 row       1 col     (numeric)

36

```
```371  +*-- 2. ssq(A) = ssq(eigenvalues);
372  +print (ssq(A)) '=' (ssq(values));```
```                             #TEM1001   #TEM1002
486 =      486
```
```373  +*-- 3. det(A) = product of eigenvalues;
374  +print (det(A)) '=' (values[#]);```
```                             #TEM1001   #TEM1002
1458 =     1458
```
```375  +*-- 4. rank a = number non-zero latent values;
376  +r = echelon(A);```
```                R             3 rows      3 cols    (numeric)

1     0     0
0     1     0
0     0     1

```
`377  +rank = (((echelon(A)^=0)[,+]) ^=0)[+,];`
```                RANK          1 row       1 col     (numeric)

3

```
`378  +rank = sum(values ^= 0);`
```                RANK          1 row       1 col     (numeric)

3

```
```379  +*-- 5. eigenvalues of inv(A) = 1/eigenvalues of A, same vectors;
380  +AI = inv(A);```
```                AI            3 rows      3 cols    (numeric)

0.086 0.025 -0.01
0.025 0.086 0.012
-0.01 0.012 0.105

```
`381  +call eigen(val, vec, AI);`
```                VAL           3 rows      1 col     (numeric)

0.111
0.111
0.056

VEC           3 rows      3 cols    (numeric)

-0.24 0.707 0.667
0.236 0.707 -0.67
0.943     0 0.333

```
```382  +* similar relation for other powers: roots(A##n) = (roots(A) ## n);
383  +call eigen(val, vec, A*A);```
```                VAL           3 rows      1 col     (numeric)

324
81
81

VEC           3 rows      3 cols    (numeric)

0.667 0.745 -0.02
-0.67 0.608 0.431
0.333 -0.27 0.902

```
`384  +call eigen(val, vec, A*A*A);`
```                VAL           3 rows      1 col     (numeric)

5832
729
729

VEC           3 rows      3 cols    (numeric)

0.667 0.745 -0.02
-0.67  0.61 0.428
0.333 -0.27 0.904

```
```386  +*-- SPECTRAL DECOMPOSITION WITH ROOTS AND VECTORS;
387  +A={13 -4 2, -4 13 -2, 2 -2 10};```
```                A             3 rows      3 cols    (numeric)

13    -4     2
-4    13    -2
2    -2    10

```
`388  +call eigen(L, V, A);`
```                L             3 rows      1 col     (numeric)

18
9
9

V             3 rows      3 cols    (numeric)

0.667 0.383  0.64
-0.67  0.69 0.282
0.333 0.615 -0.71

```
```389  +*-- 1. A * V[,I] = L[I]  #  V[,I];
390  +r = A * V[,1];```
```                R             3 rows      1 col     (numeric)

12
-12
6

```
`391  +r = L[1] # V[,1];`
```                R             3 rows      1 col     (numeric)

12
-12
6

```
`392  +print A '*' (V[,1]) '=' (A*V[,1]) '=' (L[1]) '#' (V[,1]);`
```            A               #TEM1001   #TEM1003   #TEM1004   #TEM1005
13    -4     2 *    0.667 =       12 =       18 #    0.667
-4    13    -2      -0.67        -12                 -0.67
2    -2    10      0.333          6                 0.333
```
`393  +r = A * V;`
```                R             3 rows      3 cols    (numeric)

12 3.443 5.757
-12 6.209  2.54
6 5.531 -6.43

```
`394  +r = V  *  diag(L);`
```                R             3 rows      3 cols    (numeric)

12 3.443 5.757
-12 6.209  2.54
6 5.531 -6.43

```
`395  +print A '*' V  '='  V '*' (diag(L)) ;`
```    A                   V                   V               #TEM1001
13    -4     2 * 0.667 0.383  0.64 = 0.667 0.383  0.64 *    18     0     0
-4    13    -2   -0.67  0.69 0.282   -0.67  0.69 0.282       0     9     0
2    -2    10   0.333 0.615 -0.71   0.333 0.615 -0.71       0     0     9
```
```396  +* V diagonalizes A: V'AV = diagonal;
397  +r = t(V) * A * V;```
```                R             3 rows      3 cols    (numeric)

18     0     0
0     9     0
0     0     9

```
```398  +*-- 2. Eigenvectors are orthogonal and unit length: V'V=I;
399  +r = t(V) * V;```
```                R             3 rows      3 cols    (numeric)

1     0     0
0     1     0
0     0     1

```
```400  +* 3. SPECTRAL DECOMPOSITION: A = sum of rank 1 products;
401  +A1 = L[1] # V[,1] * t(V[,1]);```
```                A1            3 rows      3 cols    (numeric)

8    -8     4
-8     8    -4
4    -4     2

```
`402  +A2 = L[2] # V[,2] * t(V[,2]);`
```                A2            3 rows      3 cols    (numeric)

1.317 2.376 2.116
2.376 4.283 3.816
2.116 3.816 3.399

```
`403  +A3 = L[3] # V[,3] * t(V[,3]);`
```                A3            3 rows      3 cols    (numeric)

3.683 1.624 -4.12
1.624 0.717 -1.82
-4.12 -1.82 4.601

```
`404  +r = A1 + A2 + A3;`
```                R             3 rows      3 cols    (numeric)

13    -4     2
-4    13    -2
2    -2    10

```
`405  +r = ssq(A);`
```                R             1 row       1 col     (numeric)

486

```
`406  +r = ssq(A1) || ssq(A2) || ssq(A3);`
```                R             1 row       3 cols    (numeric)

324    81    81

```
```407  +*-- Each root is sum of squares accounted for;
408  +r = L##2;```
```                R             3 rows      1 col     (numeric)

324
81
81

```
```409  +*--The first i roots and vectors give a rank i approximation;
410  +r = echelon(A1+A2);```
```                R             3 rows      3 cols    (numeric)

1     0 0.895
0     1 0.395
0     0     0

```
`411  +r = ssq(A1+A2);`
```                R             1 row       1 col     (numeric)

405

```
`412  +quit;`
`Exiting IML.`
```NOTE: The PROCEDURE IML used 0.33 seconds.

```
`413  +`
`NOTE: %INCLUDE (level 1) ending.`