Series Expansions
Expand functions as infinite series for numerical approximation and analysis.
📐
Mathematical Definition
Taylor's Theorem: If is infinitely differentiable at , then:
Expanded form:
Maclaurin Series (Special Case: a = 0):
Common Series: - - - - for
Radius of Convergence (): The series converges for and may diverge for .
Code Examples
Maclaurin Series (Expansion at x=0)
Standard functions at x = 0
use mathhook::prelude::*;
use mathhook_core::calculus::SeriesExpansion;
let x = symbol!(x);
// exp(x) = 1 + x + x²/2! + x³/3! + ...
let exp_series = expr!(exp(x)).taylor_series(&x, &expr!(0), 5);
// Result: 1 + x + x²/2 + x³/6 + x⁴/24 + x⁵/120
// sin(x) = x - x³/3! + x⁵/5! - ...
let sin_series = expr!(sin(x)).taylor_series(&x, &expr!(0), 7);
// Result: x - x³/6 + x⁵/120 - x⁷/5040
// cos(x) = 1 - x²/2! + x⁴/4! - ...
let cos_series = expr!(cos(x)).taylor_series(&x, &expr!(0), 6);
// Result: 1 - x²/2 + x⁴/24 - x⁶/720
Taylor Series at Arbitrary Points
Expand around any point a
use mathhook::prelude::*;
use mathhook_core::calculus::SeriesExpansion;
let x = symbol!(x);
// sin(x) at x = π/2:
// sin(x) = 1 - (x-π/2)²/2! + (x-π/2)⁴/4! - ...
let sin_at_pi_2 = expr!(sin(x)).taylor_series(&x, &Expression::pi_over_2(), 5);
// exp(x) at x = 1:
// exp(x) = e + e(x-1) + e(x-1)²/2! + ...
let exp_at_1 = expr!(exp(x)).taylor_series(&x, &expr!(1), 5);
// ln(x) at x = 1:
// ln(x) = (x-1) - (x-1)²/2 + (x-1)³/3 - ...
let log_at_1 = expr!(log(x)).taylor_series(&x, &expr!(1), 5);
Laurent Series (Negative Powers)
For functions with singularities
use mathhook::prelude::*;
use mathhook_core::calculus::SeriesExpansion;
let x = symbol!(x);
// 1/x near x = 0 (pole of order 1)
let pole = expr!(1 / x);
let laurent = pole.laurent_series(&x, &expr!(0), -1, 5);
// Result: x⁻¹ (principal part only)
// exp(1/x) at x = 0:
// exp(1/x) = 1 + 1/x + 1/(2!x²) + ...
let exp_pole = expr!(exp(1 / x));
let laurent2 = exp_pole.laurent_series(&x, &expr!(0), -10, 0);
// Result: 1 + x⁻¹ + x⁻²/2 + x⁻³/6 + ...