private IMatrix <IMatrix <Complex> > buildMatrixA(SystemConfig system, DispersionParameter dispersion)
 {
     return(new LazyDiagonalMatrix <CartesianCoordinate, IMatrix <Complex> >(
                system.Size,
                system.GetDistanceUniform,
                (i, j) => this.setNonDiagonalElements(dispersion, system.GetDistance(i, j)),
                i => this.setDiagonalElements(dispersion, system.Radius[i], system.GetPoint(i)),
                new CoordinateEqualityComparer()));
 }