Let $G$ be a simple, finite group. In general, $G$ is not abelian.
Let $\rho$ be a representation of this group, where each $\rho(g)$ for $g\in G$ is a unitary, complex, $d$-dimensional matrix, $\rho(g):\mathbb{C}^d\to\mathbb{C}^d$.
Let $\mathbf{u}=\sum_{i=1}^du_i\hat{\mathbf{u}}_i$ be a general vector in $\mathbb{C}^d$, where each $u_i$ is a complex scalar coefficient and $\{\hat{\mathbf{u}}_i\}$ are an orthonormal basis of unit vectors.
I am interested in finding the functions $f(\mathbf{u})$ which are invariant under the action of the group, $g(f(\mathbf{u}))=f(\mathbf{u})$ $\forall g\in G$.
I would like to construct $f(\mathbf{u})$ as a sum of basis functions $f(\mathbf{u})=\sum_jc_jf_j(\mathbf{u})$, where each basis function $f_j(\mathbf{u})$ is individually invariant under the action of the group, and each $c_j$ is a complex scalar coefficient.
I would like to construct the basis functions $f_j(\mathbf{u})$ in terms of a Taylor series about $f(0)$ truncated at order $n$, $$f_j(\mathbf{u}) = \sum_{\{n_i\}}c_{j,\{n_i\}}\prod_{i=1}^d(u_i)^{n_i},$$ where each $c_{j,\{n_i\}}$ is a complex scalar coefficient, each $n_i$ is a non-negative integer power and $\sum_i n_i\leq n$ in each term.
So my question is: what is the best way of constructing the functions $f_j(\mathbf{u})$ that form a complete basis for the space of invariant functions, up to the Taylor series truncation?
My current algorithm
I have a solution to this problem, although it is far too slow to be useable:
- I construct the basis of monomials $\prod_{i=1}^d(u_i)^{n_i}$.
- I construct the group generators in this basis, $\rho_2(g)$.
- For each generator $g$ I construct the projection operator $P(g)=\sum_{k=1}^{n_g}g^k$, where $n_g$ is the order of $g$.
- I construct the projection operator for the whole group $P=\prod P(g)$.
- I diagonalise $\rho_2(P)$. The eigenvectors with eigenvalue $1$ are the basis functions I need.
This method works for small $d$ and $n$, but there are $O(d^n)$ monomials, and so constructing and diagonalising $\rho_2(P)$ takes $O(d^{3n})$ operations, which quickly becomes infeasible.
Is there a faster way of doing this?