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())); }