I am trying to understand how to break down a unitary matrix $U$ into a product of unitaries $V_1 V_2\dots$ that are chosen from a set $S$. The algorithm I have in mind works with finite-dimensional unitary matrices (although it could be improved, e.g. by searching more than one $V$ at a time): \begin{align} V_1 &=\mathrm{argmin}_{V\in S}||I-V^\dagger U||\\ V_2 &=\mathrm{argmin}_{V\in S}||I-V^\dagger V_1^\dagger U||\\ \mathrm{etc}&\dots \end{align} but in practice my $U$ is infinite-dimensional, so I'm forced to work with truncated matrices (let me indicate truncated matrices with a tilde).
And here is the problem: as truncated unitaries are not necessarily unitary, it's not guaranteed that the correct $\tilde V$ takes me closer to $\tilde I$ than any other choice in $S$ and the algorithm can return wrong $V$'s. A trivial example is when $U=V_1\in S$: there can be an element $W_1$ in $S$ such that $$||\tilde I-\tilde{V_1}^\dagger \tilde U||=||\tilde I-\tilde{V_1}^\dagger \tilde V_1|| > ||\tilde I-\tilde{W_1}^\dagger \tilde V_1||$$ and the algorithm here would return $W_1$ instead of $V_1$.
Is there a way to make this work?
EDIT (additional info): I decide where to truncate by looking at the vectors that I will use the unitaries on: they have non-zero entries up to dimension $D$, and that's where I truncate.
This is a physics problem, where $U$ is a unitary generated by a complicated hamiltonian and $S$ contains a few simple unitaries generated by low order hamiltonians, such as $V=\exp[\theta (a^\dagger b+ab^\dagger)]$ or $V=\exp[z {a^\dagger}^2 - z^* a^2]$. As the creation/annihilation operators are infinite-dimensional, so are all the $V$'s.
Since there is not very explicit information about how you truncate, this may not be the perfect answer.
But: any contraction can appear as the "truncation" of a unitary. Namely, for any $X\in B(H)$ with $\|X\|\leq1$, we have a unitary $$ U=\begin{bmatrix} X&(I-XX^*)^{1/2} \\ (I-X^*X)^{1/2}&-X^*\end{bmatrix}. $$