HP Prime and HP 49G/50G: Tridiagonal Matrices
The program TRIDIAG
will build a tridiagonal matrix of the form:
D1

R1

0

0

…

0

0

0

L1

D2

R2

0

…

0

0

0

0

L2

D3

R3

…

0

0

0

…

…

…

…

…

…

...

…

0

0

0

0

…

L(n2)

D(n1)

R(n1)

0

0

0

0

…

0

L(n1)

D(n)

Where
D represents
the list/vector of diagonal elements, and D has the length n,
L represents
the list/vector of elements to the left of the diagonal, and L has the length
n1, and
R represents
the list/vector of elements to the right of the diagonal, and R has the length
of n1.
HP Prime
Program tridiag
Input: tridiag(ll, ld, lr) where the arguments are
lists.
Program:
EXPORT tridiag(ll,
ld, lr)
BEGIN
LOCAL m,s,j,t;
s≔size(ld);
m≔diag(ld);
FOR j FROM 1 to s1
DO
t≔j+1;
m(t,j)≔ll(j);
m(j,t)≔lr(j);
END;
RETURN m;
END;
HP 49G/50g
Program TRIDIAG
This is the
first program I made on a HP 49G, but it should work on the 50g just fine.
Input:
3: vector of left elements
2: vector of diagonals
1: vector of right elements
Program:
≪ → L D R
≪ D SIZE OBJ→
DROP DUP D
SWAP DIAG→ →
S M
≪ M 1 S 1 –
FOR J
J 1 + J 2 →LIST
L J GET PUT
J J 1 + 2 →LIST
R J GET PUT
NEXT ‘J’ PURGE ≫ ≫
≫
Example:
Left
elements: 4, 3, 8
Diagonals: 1,
2, 3, 4
Right elements:
2, 5, 1
There are 4
diagonal elements, therefore the matrix will be 4 x 4.
Inputs:
HP Prime: tridiag({4,3,8},{1,2,3,4},{2,5,1})
HP 49G/50g (RPN
Mode):
3: [4, 3, 8]
2: [1, 2, 3, 4]
1: [2, 5, 1]
Result:
1

2

0

0

4

2

5

0

0

3

3

1

0

0

8

4

I hope you like
my new style for matrices.
Happy Halloween!
This blog is
property of Edward Shore, 2016.
No comments:
Post a Comment