Gerles

Páginas: 7 (1712 palabras) Publicado: 15 de noviembre de 2012
Inicio Dolytle

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 !=...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Gerles
  • Holocausto Gerlad Green

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS