32 lines
900 B
Plaintext
32 lines
900 B
Plaintext
INSTALL @lib$+"ARRAYLIB"
|
|
*FLOAT 64
|
|
@% = &F0F
|
|
|
|
PRINT "Resistance = "; FNresistormesh(10, 10, 1, 1, 7, 6) " ohms"
|
|
END
|
|
|
|
DEF FNresistormesh(ni%, nj%, ai%, aj%, bi%, bj%)
|
|
LOCAL c%, i%, j%, k%, n%, A(), B()
|
|
n% = ni% * nj%
|
|
DIM A(n%-1, n%-1), B(n%-1, 0)
|
|
FOR i% = 0 TO ni%-1
|
|
FOR j% = 0 TO nj%-1
|
|
k% = i% * nj% + j%
|
|
IF i% = ai% AND j% = aj% THEN
|
|
A(k%, k%) = 1
|
|
ELSE
|
|
c% = 0
|
|
IF (i% + 1) < ni% c% += 1 : A(k%, k% + nj%) = -1
|
|
IF i% > 0 c% += 1 : A(k%, k% - nj%) = -1
|
|
IF (j% + 1) < nj% c% += 1 : A(k%, k% + 1) = -1
|
|
IF j% > 0 c% += 1 : A(k%, k% - 1) = -1
|
|
A(k%, k%) = c%
|
|
ENDIF
|
|
NEXT
|
|
NEXT
|
|
k% = bi% * nj% + bj%
|
|
B(k%, 0) = 1
|
|
PROC_invert(A())
|
|
B() = A().B()
|
|
= B(k%, 0)
|