Symbolic Differentiation

Symbolic differentiation in MathHook uses automatic differentiation with the chain rule, product rule, quotient rule, and function-specific derivative rules.

๐Ÿ“

Mathematical Definition

Power Rule:

ddxxn=nxnโˆ’1\frac{d}{dx} x^n = n x^{n-1}

Product Rule:

ddx[f(x)โ‹…g(x)]=fโ€ฒ(x)โ‹…g(x)+f(x)โ‹…gโ€ฒ(x)\frac{d}{dx} [f(x) \cdot g(x)] = f'(x) \cdot g(x) + f(x) \cdot g'(x)

Quotient Rule:

ddxf(x)g(x)=fโ€ฒ(x)โ‹…g(x)โˆ’f(x)โ‹…gโ€ฒ(x)[g(x)]2\frac{d}{dx} \frac{f(x)}{g(x)} = \frac{f'(x) \cdot g(x) - f(x) \cdot g'(x)}{[g(x)]^2}

Chain Rule:

ddxf(g(x))=fโ€ฒ(g(x))โ‹…gโ€ฒ(x)\frac{d}{dx} f(g(x)) = f'(g(x)) \cdot g'(x)

Trigonometric Derivatives: - ddxsinโก(x)=cosโก(x)\frac{d}{dx}\sin(x) = \cos(x) - ddxcosโก(x)=โˆ’sinโก(x)\frac{d}{dx}\cos(x) = -\sin(x) - ddxtanโก(x)=secโก2(x)\frac{d}{dx}\tan(x) = \sec^2(x)

Exponential and Logarithmic: - ddxex=ex\frac{d}{dx}e^x = e^x - ddxlnโก(x)=1x\frac{d}{dx}\ln(x) = \frac{1}{x}

Code Examples

Power Rule

d/dx(x^n) = n*x^(n-1)

use mathhook::prelude::*;

let x = symbol!(x);
let expr = expr!(x ^ 5);
let deriv = expr.derivative(&x, 1);
// Result: 5 * x^4

Product Rule

d/dx(fยทg) = f'ยทg + fยทg'

use mathhook::prelude::*;

let x = symbol!(x);
let f = expr!(x ^ 2);
let g = expr!(x ^ 3);
let product = expr!(mul: f, g);  // x^2 * x^3

let deriv = product.derivative(&x, 1);
// Result: 2*x * x^3 + x^2 * 3*x^2 = 5*x^4

Chain Rule

d/dx(f(g(x))) = f'(g(x))ยทg'(x)

use mathhook::prelude::*;

let x = symbol!(x);
let inner = expr!(x ^ 2);
let outer = expr!(sin(inner));  // sin(x^2)

let deriv = outer.derivative(&x, 1);
// Result: cos(x^2) * 2*x

Partial Derivatives

Multivariable differentiation

use mathhook::prelude::*;

let x = symbol!(x);
let y = symbol!(y);
let expr = expr!((x ^ 2) * y);

// Partial derivative with respect to x
let df_dx = expr.derivative(&x, 1);
// Result: 2*x*y

// Partial derivative with respect to y
let df_dy = expr.derivative(&y, 1);
// Result: x^2

Higher-Order Derivatives

Second, third, or nth order derivatives

use mathhook::prelude::*;

let x = symbol!(x);
let expr = expr!(x ^ 4);

// First derivative: 4*x^3
let first = expr.derivative(&x, 1);

// Second derivative: 12*x^2
let second = expr.derivative(&x, 2);

// Third derivative: 24*x
let third = expr.derivative(&x, 3);

// Fourth derivative: 24
let fourth = expr.derivative(&x, 4);

๐Ÿ”— Related Topics