Advertisement
maritzalapa

Gram Schimdt clásico

May 4th, 2014
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.97 KB | None | 0 0
  1. import math
  2. m = int(raw_input("Ingrese m: "))
  3. n = int(raw_input("Ingrese n: "))
  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.  
  13. for i in range (m):
  14.     A.append([])
  15.     a.append([])
  16.     E.append([])
  17.     for j in range (n):
  18.         A[i].append(float(raw_input()))
  19.         a[i].append(float(A[i][j]))
  20.         E[i].append(0.0)
  21. #       if i == j:
  22. #           E[i].append(1.0)
  23. #       else:
  24. #           E[i].append(0.0)
  25.  
  26. print 'matriz E:'
  27. for i in range(m):
  28.     print E[i]
  29. print'\n'
  30.  
  31.  
  32. for i in range(m):
  33.     b.append(float(raw_input()))
  34.    
  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.  
  47. for j in range(n):
  48.     for i in range(j):
  49.         prod_int = 0.0      #producto interno de ET[][].A[][]
  50.         for k in range(m):
  51.             prod_int += Et[i][k]*a[k][j]   
  52.         U[i][j] = prod_int
  53.        
  54.         for k in range (m):
  55.             E[k][j] = a[k][j] - U[i][j]*E[k][i]
  56.             Et[j][k] = E[k][j]     
  57.        
  58.         suma=0.0
  59.         for k in range(m):
  60.             suma += E[k][j]*E[k][j]
  61.         U[j][j] = math.sqrt(suma)
  62.        
  63.         for k in range(m):
  64.             E[k][j] = E[k][j]/U[j][j]
  65.             Et[j][k] = E[k][j]
  66.            
  67. #for i in range(m):
  68. #   for j in range(n):
  69. #       Et[j][i] = E[i][j]
  70.  
  71. B = []
  72.  
  73. for i in range(n):
  74.     B.append(0.0)
  75.  
  76. for i in range(n):
  77.     for j in range(m):
  78.         B[i] = B[i]+ Et[i][j]*b[j]
  79.    
  80.  
  81. print 'matriz A:'
  82. for i in range(m):
  83.     print a[i]
  84. print'\n'
  85.  
  86. print 'matriz b:'
  87. for i in range(m):
  88.     print b[i]
  89. print'\n'
  90.  
  91. print 'matriz U:'
  92. for i in range(n):
  93.     print U[i]
  94. print'\n'
  95.  
  96. print 'matriz E:'
  97. for i in range(m):
  98.     print E[i]
  99. print'\n'
  100.  
  101. print 'matriz Et:'
  102. for i in range(n):
  103.     print Et[i]
  104. print'\n'
  105.  
  106. print 'matriz B:'
  107. for i in range(n):
  108.     print B[i]
  109. print'\n'  
  110.  
  111. print B[2],U[2][2],B[2]/U[2][2]
  112.  
  113. j = n-1
  114. while j>=0:
  115.     res = B[j]
  116.     for k in range (j+1, n):
  117.         res -= U[j][k] *x[k]
  118.     res /= float(U[j][j])
  119.     x[j] = res
  120.     print j, res
  121.     j-=1
  122.  
  123. print 'matriz x:'
  124. for i in range(n):
  125.     print x[i]
  126. print'\n'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement