equiv_orthogonal_projection#

equiv_orthogonal_projection(W, rep_x, rep_y, tensor_cache=None)[source]#

Orthogonally project a linear map onto \(\mathrm{Hom}_{\mathbb{G}}(\rho_{\mathcal{X}},\rho_{\mathcal{Y}})\).

Let \((\mathcal{X}, \rho_{\mathcal{X}})\) and \((\mathcal{Y}, \rho_{\mathcal{Y}})\) be two \(\mathbb{G}\)-symmetric vector spaces. Given any dense linear map \(\mathbf{W}\in\mathbb{R}^{\dim(\mathcal{Y})\times\dim(\mathcal{X})}\), this function returns its Frobenius-orthogonal projection onto \(\mathrm{Hom}_{\mathbb{G}}(\rho_{\mathcal{X}}, \rho_{\mathcal{Y}})\):

\[\Pi_{\mathrm{Hom}_{\mathbb{G}}}(\mathbf{W}) = \operatorname*{argmin}_{\mathbf{A}\in\mathrm{Hom}_{\mathbb{G}}(\rho_{\mathcal{X}},\rho_{\mathcal{Y}})} \|\mathbf{W}-\mathbf{A}\|_F.\]

The computation uses the isotypic decomposition of both representations and projects each shared-irrep block independently.

This projection is equivalent to the Reynolds/group-average operator, but more computational and memory efficient when the order of the group is large.

\[\Pi_{\mathrm{Hom}_{\mathbb{G}}}(\mathbf{A}) = \frac{1}{|\mathbb{G}|}\sum_{g\in\mathbb{G}} \rho_{\mathcal{Y}}(g)\,\mathbf{A}\,\rho_{\mathcal{X}}(g^{-1}).\]
Parameters:
  • W (Tensor) – Dense map (or batch of maps) of shape \((..., D_y, D_x)\).

  • rep_x (Representation) – Input representation \(\rho_{\mathcal{X}}\).

  • rep_y (Representation) – Output representation \(\rho_{\mathcal{Y}}\).

  • tensor_cache (IsotypicTensorCache, optional) – Optional override containing the tensor cache required by project_in_isobasis(). When provided, all required tensors must be present.

Returns:

Projected map(s) with same shape, dtype, and device as W.

Return type:

Tensor

Shape:
  • W: \((..., D_y, D_x)\).

  • Output: \((..., D_y, D_x)\).