Hello! In program assignment, exercise 5 for week 4 why we don’t scale eigenvectors by their norms?

There is no mathematical requirement to do that, but a lot of the library functions that compute eigenvectors do return them with norm = 1. You can check that is what is happening here. So we don’t need to do anything: the function `scipy.sparse.linalg.eigsh`

takes care of it for us.

Got it, I had to look up in the documentation, thanks

I also checked the docs for `np.linalg.eig`

and `np.linalg.eigh`

and they also return unit vectors. I also verified it with this code:

```
# paul addition: check that the eigenvectors are returned with norm = 1
thenorms = np.linalg.norm(eigenvecs, axis = 0, keepdims = True)
print(f"eigenvecs.shape {eigenvecs.shape}")
print(f"thenorms.shape {thenorms.shape}")
print(f"norms of eigenvecs {thenorms}")
```

Running that gives this result:

```
eigenvecs.shape (4096, 55)
thenorms.shape (1, 55)
norms of eigenvecs [[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1.]]
```

1 Like