Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2014
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.84 KB | None | 0 0
  1.  
  2. def GaussSeidel(m,iteraciones,tolerancia):
  3.    
  4.     sol= Solucion()
  5.  
  6.     if not 0 in m.diagonal():        
  7.         F = m.shape[0]
  8.  
  9.         mi= m[:,:-1] # Filas: todas; Columnas: todas menos la ultima
  10.         mr= m[:,-1:].reshape(F) # Filas: todas; Columnas: solo la ultima
  11.         xsol=np.array((np.zeros(F, dtype=float),np.full(F,None, dtype=float)))
  12.  
  13.         c= 0
  14.         while (c < iteraciones) and (not np.allclose(xsol[0],xsol[1],rtol=tolerancia)):
  15.             c+= 1
  16.             xsol[1] = np.array(xsol[0])
  17.            
  18.             for i in range(F):
  19.                 xsol[0,i]= (mr[i] - sum(recortar(mi,i,i) * recortar(xsol,0,i))) / mi[i,i]
  20.  
  21.        
  22.         sol.resultado= xsol[0]
  23.         sol.iteraciones= c
  24.     else:
  25.         sol.error= 'Todos los coeficientes de la diagonal principal deben ser distintos de 0.'
  26.     return sol
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement