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

Añade tu respuesta

Haz clic para o