Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def GaussSeidel(m,iteraciones,tolerancia):
- sol= Solucion()
- if not 0 in m.diagonal():
- F = m.shape[0]
- mi= m[:,:-1] # Filas: todas; Columnas: todas menos la ultima
- mr= m[:,-1:].reshape(F) # Filas: todas; Columnas: solo la ultima
- xsol=np.array((np.zeros(F, dtype=float),np.full(F,None, dtype=float)))
- c= 0
- while (c < iteraciones) and (not np.allclose(xsol[0],xsol[1],rtol=tolerancia)):
- c+= 1
- xsol[1] = np.array(xsol[0])
- for i in range(F):
- xsol[0,i]= (mr[i] - sum(recortar(mi,i,i) * recortar(xsol,0,i))) / mi[i,i]
- sol.resultado= xsol[0]
- sol.iteraciones= c
- else:
- sol.error= 'Todos los coeficientes de la diagonal principal deben ser distintos de 0.'
- return sol
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement