[DM15] Eigenvalues and eigenvectors of symmetric matrices

Contributed software for the DM10, DM11, DM12, DM15 and DM16 goes here.

Please prefix the subject of your post with the model of the calculator that your program is for.
Post Reply
rawi
Posts: 102
Joined: Sat Dec 28, 2019 4:50 am
Location: Bavaria, Germany

[DM15] Eigenvalues and eigenvectors of symmetric matrices

Post by rawi »

Code: Select all

01 f LBL A
02 f RESULT B
03 RCL DIM A
04 1
05 f DIM B
06 x<>y
07 EEX
08 3
09 /
10 +
11 STO I
12 f MATRIX 1
13 f LBL 0
14 f RAN#
15 STO B
16 1
17 STO+ 0
18 f ISG I
19 GTO 0
20 RCL MATRIX B
21 ENTER
22 f MATRIX 8
23 /
24 0
25 STO I
26 f LBL 1
27 g CF 0
28 f RESULT C
29 RCL MATRIX A
30 RCL MATRIX B
31 *
32 f RESULT D
33 RCL MATRIX B
34 f MATRIX 5
35 f MATRIX 1
36 RCL D
37 g TEST 2
38 g SF 0
39 RCL MATRIX C
40 ENTER
41 f RESULT B
42 f MATRIX 8
43 /
44 g LST X
45 g F? 0
46 CHS
47 RCL I
48 x<>y
49 STO I
50 -
51 g ABS
52 EEX
53 8
54 CHS
55 g TEST 8
56 GTO 1
57 RCL MATRIX B
58 RCL I
59 f MATRIX 1
60 R/S
61 RCL MATRIX B
62 f MATRIX 4
63 f RESULT C
64 RCL MATRIX B
65 ENTER
66 f MATRIX 5
67 RCL MATRIX A
68 RCL MATRIX C
69 RCL I
70 *
71 f RESULT A
72 -
73 GTO A
USAGE INSTRUCTIONS:
Store Matrix in Matrix A
Start program: GSB A
When execution stops, the first eigenvalue is shown.
x<>y -> The eigenvector to the eigenvalue is shown. Eigenvectors are normalized to the length of 1.
R/S continues the procedure for the next eigenvalue/eigenvector.

EXAMPLE:
Matrix A:
1 -0.36 0.12
-0.36 1 0.09
0.12 0.09 1
Store Matrix A
Activate user-Mode
Start program: GSB A

First stop:
1.3614 (greatest absolute eigenvalue)
x<>y -> b 3 1
RCL B: 0,7149
RCL B: -0.6962
RCL B: 0,0641
R/S -> Second stop:
1,0521 (second eigenvalue)
x<>y -> b 3 1
RCL B: -0.1934
RCL B: -0.2851
RCL B: -0.9388
R/S -> Third stop:
0.5866 (last eigenvalue)
x<>y -> b 3 1
RCL B: 0,6719
RCL B: 0,6588
RCL B: -0,3385

METHOD:
The program generates a random vector x and computes b = A*x. The length of b is calculated, and b is normalized and replaces x. This is repeated until the length of b changes less than 1E-8. Then the length l of b is an estimate of the biggest eigenvalue, and x is an estimate of the corresponding eigenvector. Then l*x*x’ is subtracted from Matrix A, and the procedure is repeated.
Remark: Since random numbers are used, your result can differ in the fourth decimal place of the elements of the eigenvectors.^^ 2

MEMORY NEEDED:
Matrices: 2*n^2+n+1, plus register I.
DM 15L can handle matrices up to 8X8.

Edit: The program shortened by 2 lines, added line numbers, and more explanations.
Post Reply