try_substitution

Function try_substitution 

Source
pub fn try_substitution(
    expr: &Expression,
    var: &Symbol,
    depth: usize,
) -> Option<Expression>
Expand description

Try to integrate using u-substitution

Automatically detects composite function patterns and applies substitution.

§Arguments

  • expr - The integrand expression
  • var - The variable of integration
  • depth - Current recursion depth (prevents infinite recursion)

§Returns

Some(result) if substitution succeeds, None if no suitable substitution found

§Examples

use mathhook_core::calculus::integrals::substitution::try_substitution;
use mathhook_core::symbol;
use mathhook_core::core::Expression;

let x = symbol!(x);
// ∫2x*sin(x²) dx
let integrand = Expression::mul(vec![
    Expression::integer(2),
    Expression::symbol(x.clone()),
    Expression::function("sin", vec![
        Expression::pow(Expression::symbol(x.clone()), Expression::integer(2))
    ])
]);

let result = try_substitution(&integrand, &x, 0);
assert!(result.is_some());