Skip to content

Commit 03a37eb

Browse files
committed
Modified file name to be lowercase and replaced - for _
Changed argument name A to a Changed variable name V to v Added specifications for beta and alpha Changed np.random.randn
1 parent f38f1a7 commit 03a37eb

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed
Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import numpy as np
2-
def lanczos(A: np.ndarray) -> ([float], [float]):
2+
def lanczos(a: np.ndarray) -> tuple[list[float], list[float]]:
33
"""
44
Implements the Lanczos algorithm for a symmetric matrix.
55
@@ -15,20 +15,21 @@ def lanczos(A: np.ndarray) -> ([float], [float]):
1515
beta : [float]
1616
List of off-diagonal elements of the resulting tridiagonal matrix.
1717
"""
18-
n = A.shape[0]
19-
V = np.zeros((n, n))
20-
V[:, 0] = np.random.randn(n)
21-
V[:, 0] /= np.linalg.norm(V[:, 0])
22-
alpha = []
23-
beta = []
18+
n = a.shape[0]
19+
v = np.zeros((n, n))
20+
rng = np.random.default_rng()
21+
v[:, 0] = rng.standard_normal(n)
22+
v[:, 0] /= np.linalg.norm(v[:, 0])
23+
alpha : list[float] = []
24+
beta : list[float] = []
2425
for j in range(n):
25-
w = np.dot(A, V[:, j])
26-
alpha.append(np.dot(w, V[:, j]))
26+
w = np.dot(a, v[:, j])
27+
alpha.append(np.dot(w, v[:, j]))
2728
if j == n - 1:
2829
break
29-
w -= alpha[j] * V[:, j]
30+
w -= alpha[j] * v[:, j]
3031
if j > 0:
31-
w -= beta[j - 1] * V[:, j - 1]
32+
w -= beta[j - 1] * v[:, j - 1]
3233
beta.append(np.linalg.norm(w))
33-
V[:, j + 1] = w / beta[j]
34+
v[:, j + 1] = w / beta[j]
3435
return alpha, beta

0 commit comments

Comments
 (0)