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 expressionvar- The variable of integrationdepth- 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());