Advertisement
maritzalapa

Gram-Schimdt-Modificado-Columnas

May 4th, 2014
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.18 KB | None | 0 0
  1. import math
  2. m = int(raw_input())
  3. n = int(raw_input())
  4.  
  5. a = []          # m*n
  6. A = []          # m*n
  7. b = []          # m*1
  8. U = []          # n*n
  9. E = []          # m*n
  10. Et = []         # n*m
  11. x = []          # n*1
  12. B = []
  13.  
  14.  
  15.  
  16. #leemos la matriz A y b, inicializamos E en 0
  17. for i in range (m):
  18.     A.append([])
  19.     a.append([])
  20.     E.append([])
  21.     for j in range (n):
  22.         A[i].append(float(raw_input()))
  23.         a[i].append(float(A[i][j]))
  24.         E[i].append(0.0)
  25.  
  26.  
  27. for i in range(m):
  28.     b.append(float(raw_input()))
  29.  
  30. ###fin de lectura
  31.  
  32.  
  33.  
  34. #inicializamos las matrices necesarias 
  35. for i in range(n):
  36.     U.append([])
  37.     for j in range(n):
  38.         U[i].append(0.0)
  39.  
  40. for i in range(n):
  41.     Et.append([])
  42.     x.append(0.0)
  43.     for j in range(m):
  44.         Et[i].append(0.0)
  45.        
  46. for i in range(n):
  47.     B.append(0.0)
  48.    
  49. E=a
  50.  
  51. ####    Fin de inicializacion
  52.  
  53.  
  54. ###############################################
  55. #### ACA COMIENZA EL ALGORITMO
  56. ###############################################
  57.  
  58. for j in range(n):
  59.     for k in range(m):
  60.         E[k][j] = a[k][j]
  61.        
  62.     for i in range(j):
  63.         prod_int = 0.0      #producto interno de ET[][].A[][]
  64.         for k in range(m):
  65.             prod_int += E[k][i]*E[k][j]
  66.         U[i][j] = prod_int
  67.        
  68.         for k in range (m):
  69.             E[k][j] = E[k][j] - U[i][j]*E[k][i]
  70.        
  71.     suma=0.0
  72.     for k in range(m):
  73.         suma += E[k][j]*E[k][j]
  74.     U[j][j] = math.sqrt(suma)
  75.    
  76.     for k in range(m):
  77.         E[k][j] = E[k][j]/U[j][j]
  78.  
  79. ###############################################
  80. #### termina EL ALGORITMO
  81. ###############################################
  82.  
  83. #hallamos la transpuesta
  84. for i in range(m):
  85.     for j in range(n):
  86.         Et[j][i] = E[i][j]
  87.  
  88.  
  89. #hallamos B
  90. for i in range(n):
  91.     for j in range(m):
  92.         B[i] = B[i]+ Et[i][j]*b[j]
  93.    
  94.    
  95. #Resolvemos x por regresion
  96. j = n-1
  97. while j>=0:
  98.     res = B[j]
  99.     for k in range (j+1, n):
  100.         res -= U[j][k] *x[k]
  101.     res /= float(U[j][j])
  102.     x[j] = res
  103.     j-=1
  104.    
  105.    
  106. #imprimimos las matrices
  107. print 'matriz A:'
  108. for i in range(m):
  109.     print A[i]
  110. print'\n'
  111.  
  112. print 'matriz b:'
  113. print b
  114. print'\n'
  115.  
  116. print 'matriz U:'
  117. for i in range(n):
  118.     print U[i]
  119. print'\n'
  120.  
  121. print 'matriz E:'
  122. for i in range(m):
  123.     print E[i]
  124. print'\n'
  125.  
  126. print 'matriz Et:'
  127. for i in range(n):
  128.     print Et[i]
  129. print'\n'
  130.  
  131. print 'matriz B:'
  132. print B
  133. print'\n'  
  134.  
  135. print 'matriz x:'
  136. print x
  137. print'\n'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement