Hi Jed, Here is my problem:
I want to evaluate a vector u = B*dw where B and dw are a matrix and a stochastic vector. However, B = D^(-1/2) in which D is not explicitly assembled, so it is expensive to directly evaluate B. One solution is to make a Chebyshev approximation on B w.r.t. D, which is B = sum(c_k*D_k) Then, the problem becomes u = B*dw = sum(c_k*y_k) where y_k = D_k*dw can be obtained from my solver. Note c_k is the coefficient that is a function of approximate(not exact) max and min eigenvalues of D matrix. So I need an approximate range [ lambda_min, lambda_max ] to calculate c_k. If this range is accurate, then Chebyshev approximation can converge faster, otherwise may be slow or even never. Xujun On Tue, Jun 2, 2015 at 3:26 PM, Jed Brown <[email protected]> wrote: > Xujun Zhao <[email protected]> writes: > > > I need to evaluate the max and min eigenvalues of a matrix > > You need the min and max eigenvalues of the preconditioner operator. > But note that Chebyshev is not usually used as a stand-alone solver, but > rather as a smoother for multigrid or occasionally as a polynomial > preconditioner to control storage requirements or orthogonalization > issues. One exception is if your problem is fairly well-conditioned > with an evenly spaced spectrum. > > In general, estimating the largest eigenvalue is relatively inexpensive, > but computing the smallest to even moderate accuracy is as expensive as > solving the linear system. > > > https://scicomp.stackexchange.com/questions/34/how-can-i-estimate-the-condition-number-of-a-large-sparse-matrix-using-petsc > > > when I make the Chebyshev polynomial approximation. Are there > > efficient ways to do this? Thank you very much. > > > > Xujun >
