46 lines
1 KiB
Text
46 lines
1 KiB
Text
DIM m1(2,2)
|
|
m1() = 25, 15, -5, \
|
|
\ 15, 18, 0, \
|
|
\ -5, 0, 11
|
|
PROCcholesky(m1())
|
|
PROCprint(m1())
|
|
PRINT
|
|
|
|
@% = &2050A
|
|
DIM m2(3,3)
|
|
m2() = 18, 22, 54, 42, \
|
|
\ 22, 70, 86, 62, \
|
|
\ 54, 86, 174, 134, \
|
|
\ 42, 62, 134, 106
|
|
PROCcholesky(m2())
|
|
PROCprint(m2())
|
|
END
|
|
|
|
DEF PROCcholesky(a())
|
|
LOCAL i%, j%, k%, l(), s
|
|
DIM l(DIM(a(),1),DIM(a(),2))
|
|
FOR i% = 0 TO DIM(a(),1)
|
|
FOR j% = 0 TO i%
|
|
s = 0
|
|
FOR k% = 0 TO j%-1
|
|
s += l(i%,k%) * l(j%,k%)
|
|
NEXT
|
|
IF i% = j% THEN
|
|
l(i%,j%) = SQR(a(i%,i%) - s)
|
|
ELSE
|
|
l(i%,j%) = (a(i%,j%) - s) / l(j%,j%)
|
|
ENDIF
|
|
NEXT j%
|
|
NEXT i%
|
|
a() = l()
|
|
ENDPROC
|
|
|
|
DEF PROCprint(a())
|
|
LOCAL row%, col%
|
|
FOR row% = 0 TO DIM(a(),1)
|
|
FOR col% = 0 TO DIM(a(),2)
|
|
PRINT a(row%,col%);
|
|
NEXT
|
|
PRINT
|
|
NEXT row%
|
|
ENDPROC
|