Skip to content

Commit

Permalink
use scipy's eigenvalue solver to get smallest eigenvalue
Browse files Browse the repository at this point in the history
  • Loading branch information
tyler-a-cox committed Feb 14, 2025
1 parent e1c15e4 commit c4b784c
Showing 1 changed file with 4 additions and 8 deletions.
12 changes: 4 additions & 8 deletions hera_filters/dspec.py
Original file line number Diff line number Diff line change
Expand Up @@ -2987,20 +2987,16 @@ def sparse_linear_fit_2D(

# Compute the preconditioner for the first axis
XTX_axis_1 = np.dot(axis_1_basis.T.conj() * axis_1_wgts, axis_1_basis)
eigenval, _ = np.linalg.eig(XTX_axis_1)
axis_1_lambda = np.min(
eigenval[eigenval.real > np.finfo(eigenval.dtype).eps].real * eig_scaling_factor
)
eigenval = sparse.linalg.eigs(XTX_axis_1, k=1, which='SR', return_eigenvectors=False)
axis_1_lambda = eigenval.real * eig_scaling_factor
axis_1_pcond = np.linalg.pinv(
XTX_axis_1 + np.eye(XTX_axis_1.shape[0]) * axis_1_lambda
)

# Compute the preconditioner for the second axis
XTX_axis_2 = np.dot(axis_2_basis.T.conj() * axis_2_wgts, axis_2_basis)
eigenval, _ = np.linalg.eig(XTX_axis_2)
axis_2_lambda = np.min(
eigenval[eigenval.real > np.finfo(eigenval.dtype).eps].real * eig_scaling_factor
)
eigenval = sparse.linalg.eigs(XTX_axis_2, k=1, which='SR', return_eigenvectors=False)
axis_2_lambda = eigenval.real * eig_scaling_factor
axis_2_pcond = np.linalg.pinv(
XTX_axis_2 + np.eye(XTX_axis_2.shape[0]) * axis_2_lambda
)
Expand Down

0 comments on commit c4b784c

Please sign in to comment.