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 UnwindSafe for ImplicitDifferentiation
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§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