# [petsc-users] estimation of max and min eigenvalues in SLEPc

Xujun Zhao xzhao99 at gmail.com
Tue Jun 2 18:00:57 CDT 2015

```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 <jed at jedbrown.org> wrote:

> Xujun Zhao <xzhao99 at gmail.com> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150602/39c567a0/attachment.html>
```