Skip to main content

FunctionalDerivative

Struct FunctionalDerivative 

Source
pub struct FunctionalDerivative;
Expand description

Gâteaux and Fréchet derivatives of functionals on function spaces.

Enables gradient descent in function space and Newton’s method for operator equations.

Implementations§

Source§

impl FunctionalDerivative

Source

pub fn gateaux<F>(j: F, f: &[f64], h: &[f64], eps: f64) -> f64
where F: Fn(&[f64]) -> f64,

Compute the Gâteaux derivative of functional J at f in direction h.

dJ/dε J(f + εh)|_{ε=0} approximated by finite difference.

Source

pub fn frechet_gradient<F>(j: F, f: &[f64], eps: f64) -> Vec<f64>
where F: Fn(&[f64]) -> f64,

Compute the Fréchet derivative (gradient) of functional J at f.

Returns the gradient vector δJ/δf using component-wise Gâteaux derivatives with standard basis directions.

Source

pub fn gradient_descent<F>( j: F, f0: &[f64], step_size: f64, max_iter: usize, eps: f64, ) -> (Vec<f64>, f64)
where F: Fn(&[f64]) -> f64,

Perform gradient descent in function space to minimize functional J.

Starting from f0, takes max_iter steps of size step_size. Returns the minimizer and the final functional value.

Source

pub fn newton_step<F>(j: F, f: &[f64], eps: f64) -> Vec<f64>
where F: Fn(&[f64]) -> f64,

Newton step in function space: f_new = f - \[D²J(f)\]⁻¹ DJ(f).

Approximates the Hessian-vector product via a second finite difference and solves the linear system by a simple diagonal preconditioned gradient step (one step of Jacobi iteration).

Source

pub fn second_gateaux<F>(j: F, f: &[f64], h: &[f64], k: &[f64], eps: f64) -> f64
where F: Fn(&[f64]) -> f64,

Compute the second Gâteaux derivative (bilinear form) at f in directions h and k.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.