denke das liegt an der while schleife wo ich residual berechne
vielleicht sieht ja jemand nen fehler
bin leider totaler anfänger und das ist alles mehr geraten als gewusst
Danke schonmal
Code: Alles auswählen
def power_iteration(M: np.ndarray, epsilon: float = -1.0) -> (np.ndarray, list):
if M.shape[0] != M.shape[1]:
raise ValueError("Matrix not nxn")
if epsilon == -1:
epsilon = 10*np.finfo(float).eps
n,m = M.shape
vector = np.random.rand(m)
z = np.empty_like(vector)
residuals = []
residual = 2.0 * epsilon
while residual > epsilon:
np.copyto(z, vector)
vector = np.dot(M,vector)
Vnorm = np.linalg.norm(vector)
residual = np.linalg.norm(vector-z)
residuals.append(residual)
vector = vector / Vnorm
return vector, residuals