The displacement rank of a TL matrix A is the rank of its displacement D(A). Currently, whenever computations with the generator D(A) = G*B' are carried out, we compress G,B back to its numerical rank, essentially determined by Matlab's default rank tolerance.
It can be shown that the truncation error in the generator is amplified only by |A|, so that when the generator is truncated to some larger tolerance, the matrix it represents still is close to A. Thus it would be nice to give the user control of the truncation tolerance, say, in the constructor
T = TLMat(G, B, 'eps_trunc', tol)
or even letting her or him control it on the fly
T.set_eps_trunc(new_tol).
The latter makes a lot of sense in an iterative approximation scheme, where the initial accuracy of the approximants are quite bad anyway.
The displacement rank of a TL matrix A is the rank of its displacement D(A). Currently, whenever computations with the generator D(A) = G*B' are carried out, we compress G,B back to its numerical rank, essentially determined by Matlab's default rank tolerance.
It can be shown that the truncation error in the generator is amplified only by |A|, so that when the generator is truncated to some larger tolerance, the matrix it represents still is close to A. Thus it would be nice to give the user control of the truncation tolerance, say, in the constructor
T = TLMat(G, B, 'eps_trunc', tol)
or even letting her or him control it on the fly
T.set_eps_trunc(new_tol).
The latter makes a lot of sense in an iterative approximation scheme, where the initial accuracy of the approximants are quite bad anyway.