|
|
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.