Macro para resolver sistemas de ecuaciones por eliminación gaussiana
Tengo un pseudocódigo para realizar eliminación gaussiana de sistemas de ecuaciones y requiero aplicarlo en Excel.
Mis conocimientos de macros son mínimos, me podrían orientar como realizar el proceso.
Gracias!
'Seudocódigo para instaurar la eliminación de Gauss con pivoteo parcial.
Sub Gauss(a, b, n, x, tol, er)
DIMENSION s(n)
er = 0
DOFOR i = 1, n
si = ABS(ai,1)
DOFOR j = 2, n
IF ABS(ai,j)>si THEN si = ABS(ai,j)
END DO
END DO
Call Eliminate(a, s, n, b, tol, er)
IF er ? —1 THEN
Call Substitute(a, n, b, x)
End If
END Gauss
Sub Eliminate(a, s, n, b, tol, er)
DOFOR k = 1, n — 1
Call Pivot(a, b, s, n, k)
IF ABS (ak,k/sk) < tol THEN
er = —1
Exit Do
End If
DOFOR i = k + 1, n
factor = ai,k/ak,k
DOFOR j = k + 1, n
ai,j = ai,j — factor*ak,j
END DO
bi = bi – factor * bk
END DO
END DO
IF ABS(ak,k/sk) < to1 THEN er = —1
END Eliminate
Sub Pivot(a, b, s, n, k)
p = k
big = ABS(ak,k/sk)
DOFOR ii = k + 1, n
dummy = ABS(aii,k/sii)
If dummy > big Then
big = dummy
p = ii
End If
END DO
IF p ? K THEN
DOFOR jj = k, n
dummy = ap,jj
ap , jj = ak, jj
ak , jj = dummy
END DO
dummy = bp
bp = bk
bk = dummy
dummy = sp
sp = sk
sk = dummy
End If
END pivot
Sub Substitute(a, n, b, x)
xn = bn/an,n
DOFOR i = n — 1, 1, —1
Sum = 0
DOFOR j = i + 1, n
sum = sum + ai,j * xj
END DO
xi = (bi — sum) / ai,i
END DO
END Substitute