Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- m = int(raw_input())
- n = int(raw_input())
- a = [] # m*n
- A = [] # m*n
- b = [] # m*1
- U = [] # n*n
- E = [] # m*n
- Et = [] # n*m
- x = [] # n*1
- B = []
- #leemos la matriz A y b, inicializamos E en 0
- for i in range (m):
- A.append([])
- a.append([])
- E.append([])
- for j in range (n):
- A[i].append(float(raw_input()))
- a[i].append(float(A[i][j]))
- E[i].append(0.0)
- for i in range(m):
- b.append(float(raw_input()))
- ###fin de lectura
- #inicializamos las matrices necesarias
- for i in range(n):
- U.append([])
- for j in range(n):
- U[i].append(0.0)
- for i in range(n):
- Et.append([])
- x.append(0.0)
- for j in range(m):
- Et[i].append(0.0)
- for i in range(n):
- B.append(0.0)
- E=a
- #### Fin de inicializacion
- ###############################################
- #### ACA COMIENZA EL ALGORITMO
- ###############################################
- for j in range(n):
- for k in range(m):
- E[k][j] = a[k][j]
- for i in range(j):
- prod_int = 0.0 #producto interno de ET[][].A[][]
- for k in range(m):
- prod_int += E[k][i]*E[k][j]
- U[i][j] = prod_int
- for k in range (m):
- E[k][j] = E[k][j] - U[i][j]*E[k][i]
- suma=0.0
- for k in range(m):
- suma += E[k][j]*E[k][j]
- U[j][j] = math.sqrt(suma)
- for k in range(m):
- E[k][j] = E[k][j]/U[j][j]
- ###############################################
- #### termina EL ALGORITMO
- ###############################################
- #hallamos la transpuesta
- for i in range(m):
- for j in range(n):
- Et[j][i] = E[i][j]
- #hallamos B
- for i in range(n):
- for j in range(m):
- B[i] = B[i]+ Et[i][j]*b[j]
- #Resolvemos x por regresion
- j = n-1
- while j>=0:
- res = B[j]
- for k in range (j+1, n):
- res -= U[j][k] *x[k]
- res /= float(U[j][j])
- x[j] = res
- j-=1
- #imprimimos las matrices
- print 'matriz A:'
- for i in range(m):
- print A[i]
- print'\n'
- print 'matriz b:'
- print b
- print'\n'
- print 'matriz U:'
- for i in range(n):
- print U[i]
- print'\n'
- print 'matriz E:'
- for i in range(m):
- print E[i]
- print'\n'
- print 'matriz Et:'
- for i in range(n):
- print Et[i]
- print'\n'
- print 'matriz B:'
- print B
- print'\n'
- print 'matriz x:'
- print x
- print'\n'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement