Use same variable names as in code
This commit is contained in:
parent
697770ce97
commit
09aa9761c6
@ -600,9 +600,17 @@ def eigsolve(
|
|||||||
# Now know the direction (D), but need to find how far to go (alpha)
|
# Now know the direction (D), but need to find how far to go (alpha)
|
||||||
# We are still minimizing E = tr((Z + alpha D)t A (Z + alpha D) U')
|
# We are still minimizing E = tr((Z + alpha D)t A (Z + alpha D) U')
|
||||||
# = tr(ZtAZU' + alpha DtAZU' + alpha ZtADU' + alpha**2 DtADU')
|
# = tr(ZtAZU' + alpha DtAZU' + alpha ZtADU' + alpha**2 DtADU')
|
||||||
|
# = tr((ZtAZ + 2 alpha sym(DtAZ) + alpha**2 DtAD) U')
|
||||||
|
# = tr(R U')
|
||||||
|
# = tr(R Qi) = tr(R inv(Q))
|
||||||
|
|
||||||
# where U' = inv((Z + alpha D)t (Z + alpha D))
|
# where
|
||||||
# = inv(ZtZ + alpha ZtD + alpha DtZ + alpha**2 DtD)
|
# R = ZtAZ + 2 alpha sym(DtAZ) + alpha**2 DtAD
|
||||||
|
#
|
||||||
|
# Q = (Z + alpha D)t (Z + alpha D)
|
||||||
|
# = inv(ZtZ + alpha ZtD + alpha DtZ + alpha**2 DtD)
|
||||||
|
#
|
||||||
|
# Qi = inv(Q) = U'
|
||||||
|
|
||||||
AD = scipy_op @ D
|
AD = scipy_op @ D
|
||||||
DtD = D.conj().T @ D
|
DtD = D.conj().T @ D
|
||||||
|
Loading…
Reference in New Issue
Block a user