def hermitian_basis(dim):
"""
Returns a basis of the hermitian matrices of size ``dim`` that is orthogonal w.r.t. the Frobenius scalar product.
:param dim: size of the matrices
:type dim: int
Example:
>>> import kdotp_symmetry as kp
>>> kp.hermitian_basis(2)
[Matrix([
[1, 0],
[0, 0]]), Matrix([
[0, 0],
[0, 1]]), Matrix([
[0, 1],
[1, 0]]), Matrix([
[0, -I],
[I, 0]])]
"""
basis = []
# diagonal entries
for i in range(dim):
mat = sp.zeros(dim)
mat[i, i] = 1
basis.append(mat)
# off-diagonal entries
for i in range(dim):
for j in range(i + 1, dim):
# real
mat = sp.zeros(dim)
mat[i, j] = 1
mat[j, i] = 1
basis.append(mat)
# imag
mat = sp.zeros(dim)
mat[i, j] = -sp.numbers.I # pylint: disable=no-member
mat[j, i] = sp.numbers.I # pylint: disable=no-member
basis.append(mat)
# check ONB property
assert len(basis) == dim**2
_assert_orthogonal(basis)
return basis
评论列表
文章目录