View file src/j/dvs.ijs - Download


inv =: %.

id =: (= / ~) @ i.

diag =: 3 : 0
 y * id # y
)

dvs =: 3 : 0 
 A =. y
 NB. LP =. deflation A matprod transpose A
 NB. L =. > 0 { LP
 NB. P =. > 1 { LP
 MQ =. deflation (transpose A) matprod A
 M =. > 0 { MQ
 Q =. > 1 { MQ
 L =. diag M
 D =. L ^ 0.5
 NB. P =: t (# t A) {. t P
 P =. A matprod Q matprod inv D
 D ; P ; Q
)

pseudoinv =: 3 : 0
 A =. y
 DPQ =. dvs A
 D =. > 0 { DPQ
 P =. > 1 { DPQ
 Q =. > 2 { DPQ
 Q matprod (inv D) matprod transpose P
)

A =: 3 2 $ 1.1547 _1.1547 _1.0774 0.0774 _0.0774 1.0774
NB. A =: 3 2 $ 2 0 0 _3 0 0
NB. A =: 3 2 $ 1 2 3 4 5 6

DPQ =: dvs A
D =: > 0 { DPQ
P =: > 1 { DPQ
Q =: > 2 { DPQ
A1 =: P matprod D matprod transpose Q
E1 =: A1 - A
echo 'E1'; E1

iA =: pseudoinv A
A2 =: A matprod iA matprod A
E2 =: A2 - A
echo 'E2'; E2