pub struct ChebyshevPreconditioner { /* private fields */ }Expand description
Chebyshev polynomial preconditioner with automatic eigenvalue estimation.
Constructs p(A) ~ A^{-1} where p is a degree-d Chebyshev polynomial
optimally scaled to the spectrum [lambda_min, lambda_max].
Application proceeds via the three-term Chebyshev recurrence, requiring
degree sparse matrix-vector products per application.
Implementations§
Source§impl ChebyshevPreconditioner
impl ChebyshevPreconditioner
Sourcepub fn from_csr(
csr: &CsrMatrix<f64>,
config: &PolyPrecondConfig,
) -> SparseResult<Self>
pub fn from_csr( csr: &CsrMatrix<f64>, config: &PolyPrecondConfig, ) -> SparseResult<Self>
Build a Chebyshev preconditioner from a CSR matrix.
Eigenvalue bounds are estimated automatically using a few Lanczos steps.
§Arguments
csr- The SPD sparse matrix in CSR format.config- Configuration parameters.
Sourcepub fn with_bounds(
csr: &CsrMatrix<f64>,
degree: usize,
lambda_min: f64,
lambda_max: f64,
) -> SparseResult<Self>
pub fn with_bounds( csr: &CsrMatrix<f64>, degree: usize, lambda_min: f64, lambda_max: f64, ) -> SparseResult<Self>
Build a Chebyshev preconditioner with explicit eigenvalue bounds.
§Arguments
csr- The SPD sparse matrix in CSR format.degree- Polynomial degree (5-20 recommended).lambda_min- Lower bound on the eigenvalue spectrum.lambda_max- Upper bound on the eigenvalue spectrum.
Sourcepub fn apply(&self, r: &[f64]) -> SparseResult<Vec<f64>>
pub fn apply(&self, r: &[f64]) -> SparseResult<Vec<f64>>
Apply the Chebyshev polynomial preconditioner: z = p(A) * r.
Uses the Chebyshev iteration three-term recurrence. This computes
an approximation to A^{-1} r without constructing any matrix.
Sourcepub fn eigenvalue_bounds(&self) -> (f64, f64)
pub fn eigenvalue_bounds(&self) -> (f64, f64)
Return the estimated eigenvalue bounds.
Auto Trait Implementations§
impl Freeze for ChebyshevPreconditioner
impl RefUnwindSafe for ChebyshevPreconditioner
impl Send for ChebyshevPreconditioner
impl Sync for ChebyshevPreconditioner
impl Unpin for ChebyshevPreconditioner
impl UnsafeUnpin for ChebyshevPreconditioner
impl UnwindSafe for ChebyshevPreconditioner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more