Advertisement
maritzalapa

Gram-Schimdt-Modificado-Filas

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