(HP 15C) (DM15) Eigenvalues and eigenvectors of symmetric matrices
05-26-2023, 11:52 PM (This post was last modified: 06-06-2023 06:22 PM by rawi.)
Post: #1
 rawi Member Posts: 174 Joined: Nov 2019
(HP 15C) (DM15) Eigenvalues and eigenvectors of symmetric matrices
Code:
 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 computed, 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.
Since random numbers are used your results can be different in the fourth decimal place of the elements of the eigenvectors.

MEMORY:
Matrices: If n is number of rows / columns of matrix you need 2*n^2+n+1 and I.
The DM 15L can handle up to 8X8 matrices.

Edit: Two commands taken out, line numbers added, more explanation.
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)