Gerles
lea A
para (i = 1) hasta n hag
L[i,i] = 1
fin_para
para (k = 1) hasta n haga
para (j = k) hasta n haga
acum = 0
para (p = 1 hasta k – 1) haga
acum = acum + L[k,p] * U[p,j]
fin_para
U[k,j] = A[k,j] – acum
fin_para
para ( i = k + 1) hasta n haga
acum = 0
para (p = 1 hasta n) haga
acum = acum +L[i,p] * U[p,k]
fin_para
L[i,k] = (A[i,k] – acum) / U[k,k]
fin_para
fin_para
// Multiplicación de elementos de la diagonal
// No es necesario multiplicar por la diagonal de L pues se sabe que es 1 (Dolytle)
det = 1
para i = 1 hasta n haga
det = det * U[i,i]
fin_para
si (det == 0) entonces
no se encontro solución.
de_otro_modo
retornar detfin_si
fin Dolytle
Inicio InvDolytle
lea A
para i = 1 hasta n haga
L[i,i] = 1
fin_para
para k = 1 hasta n haga
para j = k hasta n haga
acum = 0
para p = 1 hasta k – 1 haga
acum = acum + L[k,p] * U[p,j]
fin_para
U[k,j] = A[k,j] - acum
fin_para
para i = k + 1 hasta n haga
acum = 0
para p = 1 hasta n haga
acum = acum + L[i,p] * U[p,k]fin_para
L[i,k] = (A[i,k] – acum) / U[k,k]
fin_para
fin_para
para i = 1 hasta n haga
b[i] = 1 // las demás posiciones de b están incializadas en 0
// Sustitución progresiva
para j = 1 hasta n haga
acum = 0
para p = 1 hasta i – 1 haga
acum = acum + L[j,p]*z[p]
fin_para
z[j] = b[j] - acum
fin_para
// Sustitución regresiva
para j = n hasta 1haga
acum = 0
para p = i + 1 hasta n haga
acum = acum + U[j,p]*x[p]
fin_para
x[j] = (z[j] – acum) / U[j,j]
fin_para
para j = 1 hasta n haga
Ainv[j,i] = x[j] // Asignar posiciones de columna de inversa de A
fin_para
fin_para
retornar Ainv
fin InvDolytle
Inicio gaussianaPivEscalonado
lea a, b
generarAumentada(a,b)
// Encontrarmayores valores por fila
para (i = 1 hasta n ) haga
mayor = 0
para (j = 1 hasta n) haga
si (|a[i,j] | > mayor) entonces
mayor = | a[i,j] |
fin_si
fin_para
si (mayor == 0) entonces
no hay solución. Retorna
fin_si
s[i] = mayor
fin_para
para (k = 1 hasta n – 1) haga
// buscar el mayor en la columna actual en relación con s
mayor =0
pos_mayor = -1
para (i = k hasta n) haga
si | a[i,k] | / s[i] > mayor entonces
mayor = | a[i,k] | / s[i]
pos_mayor = i
fin_si
fin_para
si mayor == 0 entonces
no hay solución. Retornar
fin_si
si (k != pos_mayor) entonces // intercambiar filas
para (i = 1 hasta n) haga
temp = a[pos_mayor, i]
a[pos_mayor, i] = a[k, i]
a[k,i] = temp
fin_para
fin_si
para (i = k + 1 hasta n) haga
mik = a[i,k] / a[k,k]
para (j = k hasta n + 1) haga
a[i,j] = a[i,j] – m[i,k]*a[k,j]
fin_para
fin_para
fin_para
para (i = n hasta 1) haga // sustitución regresiva
acum = 0
para (p = i + 1 hasta n) haga
acum = acum + a[i,p]*X[p]
fin_para
X[i] = (a[i,n+1] – acum) / a[i,i]fin_para
fin gaussianaPivEscalonado
Inicio eliminacion_gaussiana
lea a, b
generarAumentada(a,b)
// llenar vector de posiciones
para i = 0 hasta n haga
v[i] = i
fin_para
para k = 1 hasta n - 1 haga
// buscar el mayor en el sector de la matriz actual
mayor = 0
pos_fila = -1
pos_columna = -1
para i = k hasta n haga
para j = k hasta n haga
si| a[i,j] | > mayor entonces
mayor = | a[i,j] |
pos_fila = i
pos_columna = j
fin_si
fin_para
fin_para
si mayor == 0 entonces
no hay solución. Retornar
fin_si
si k != pos_fila entonces // intercambiar filas
para i = 1 hasta n haga
temp = a[pos_mayor, i]
a[pos_mayor, i] = a[k, i]
a[k, i] = temp
fin_para
fin_si
si k !=...
Regístrate para leer el documento completo.