pub struct ImplicitDifferentiation;Expand description
Implicit differentiation operations
Implementations§
Source§impl ImplicitDifferentiation
impl ImplicitDifferentiation
Sourcepub fn compute(
equation: &Expression,
independent_var: Symbol,
dependent_var: Symbol,
) -> Expression
pub fn compute( equation: &Expression, independent_var: Symbol, dependent_var: Symbol, ) -> Expression
Compute dy/dx for implicitly defined function F(x,y) = 0
Uses the formula: dy/dx = -∂F/∂x / ∂F/∂y
§Examples
use mathhook_core::{expr, symbol};
use mathhook_core::calculus::derivatives::ImplicitDifferentiation;
let x = symbol!(x);
let y = symbol!(y);
// For x² + y² = 1 (circle)
let equation = expr!((x^2) + (y^2));
let dy_dx = ImplicitDifferentiation::compute(&equation, x, y);Sourcepub fn higher_order(
equation: &Expression,
independent_var: Symbol,
dependent_var: Symbol,
order: u32,
) -> Expression
pub fn higher_order( equation: &Expression, independent_var: Symbol, dependent_var: Symbol, order: u32, ) -> Expression
Compute higher-order implicit derivatives
§Examples
use mathhook_core::{expr, symbol};
use mathhook_core::calculus::derivatives::ImplicitDifferentiation;
let x = symbol!(x);
let y = symbol!(y);
let equation = expr!((x^2) + (y^2));
let d2y_dx2 = ImplicitDifferentiation::higher_order(&equation, x, y, 2);Sourcepub fn multiple_variables(
equation: &Expression,
independent_vars: Vec<Symbol>,
dependent_var: &Symbol,
) -> Vec<Expression>
pub fn multiple_variables( equation: &Expression, independent_vars: Vec<Symbol>, dependent_var: &Symbol, ) -> Vec<Expression>
Handle multiple implicit variables
§Examples
use mathhook_core::calculus::derivatives::Derivative;
use mathhook_core::{expr, symbol, Expression};
use mathhook_core::calculus::derivatives::ImplicitDifferentiation;
let x = symbol!(x);
let y = symbol!(y);
let z = symbol!(z);
// For F(x,y,z) = 0, compute ∂z/∂x and ∂z/∂y
let equation = Expression::add(vec![expr!(x), expr!(y), expr!(z)]);
let partials = ImplicitDifferentiation::multiple_variables(
&equation,
vec![x, y],
&z
);Auto Trait Implementations§
impl Freeze for ImplicitDifferentiation
impl RefUnwindSafe for ImplicitDifferentiation
impl Send for ImplicitDifferentiation
impl Sync for ImplicitDifferentiation
impl Unpin for ImplicitDifferentiation
impl UnsafeUnpin for ImplicitDifferentiation
impl UnwindSafe for ImplicitDifferentiation
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