qml.liealg.change_basis_ad_rep¶
- change_basis_ad_rep(adj, basis_change)[source]¶
Apply a
basis_change
between bases of operators to the adjoint representationadj
.Assume the adjoint repesentation is given in terms of a basis {bj}, adμαβ∝tr(bμ⋅[bα,bβ]). We can represent the adjoint representation in terms of a new basis ci=∑jTijbj with the basis transformation matrix T using
change_basis_ad_rep
.- Parameters
adj (TensorLike) – Adjoint representation in old basis.
basis_change (TensorLike) – Basis change matrix from old to new basis.
- Returns
Adjoint representation in new basis.
- Return type
TensorLike
Example
We choose a basis of a Lie algebra, compute its adjoint representation.
>>> from pennylane.liealg import change_basis_ad_rep >>> basis = [qml.X(0), qml.Y(0), qml.Z(0)] >>> adj = qml.structure_constants(basis)
Now we change the basis and re-compute the adjoint representation in that new basis.
>>> basis_change = np.array([[1., 1., 0.], [0., 1., 1.], [0., 1., 1.]]) >>> new_ops = [qml.sum(*[basis_change[i,j] * basis[j] for j in range(3)]) for i in range(3)] >>> new_adj = qml.structure_constants(new_ops)
We confirm that instead of re-computing the adjoint representation (typically expensive), we can transform the old adjoint representation with the change of basis matrix.
>>> new_adj_re = change_basis_ad_rep(adj, basis_change) np.allclose(new_adj, new_adj_re)