pub enum CGBetaFormula {
FletcherReeves,
PolakRibiere,
HestenesStiefel,
}Expand description
Beta computation formula for Conjugate Gradient.
Different formulas provide different convergence properties and numerical stability characteristics.
Variants§
FletcherReeves
Fletcher-Reeves: β = (g_{k+1}^T g_{k+1}) / (g_k^T g_k)
Most stable but can be slow on non-quadratic problems.
PolakRibiere
Polak-Ribière: β = g_{k+1}^T (g_{k+1} - g_k) / (g_k^T g_k)
Better performance than FR, includes automatic restart (β < 0).
HestenesStiefel
Hestenes-Stiefel: β = g_{k+1}^T (g_{k+1} - g_k) / (d_k^T (g_{k+1} - g_k))
Similar to PR but with different denominator, can be more robust.
Trait Implementations§
Source§impl Clone for CGBetaFormula
impl Clone for CGBetaFormula
Source§fn clone(&self) -> CGBetaFormula
fn clone(&self) -> CGBetaFormula
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CGBetaFormula
impl Debug for CGBetaFormula
Source§impl PartialEq for CGBetaFormula
impl PartialEq for CGBetaFormula
impl Copy for CGBetaFormula
impl Eq for CGBetaFormula
impl StructuralPartialEq for CGBetaFormula
Auto Trait Implementations§
impl Freeze for CGBetaFormula
impl RefUnwindSafe for CGBetaFormula
impl Send for CGBetaFormula
impl Sync for CGBetaFormula
impl Unpin for CGBetaFormula
impl UnwindSafe for CGBetaFormula
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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