Quick Start¶
Example 1 — Adaptive quadrature (Gaussian integral):
import numpy as np
from integrationdifferentiation import integrate_adaptive_infinite
# ∫_0^∞ exp(-x²) dx = √π / 2 ≈ 0.88623
result = integrate_adaptive_infinite(
lambda x: np.exp(-x**2), a=0.0, b=np.inf
)
print(result.value) # -> 0.8862269254527580
print(result.error) # -> < 1e-8
Example 2 — 2D iterated integral:
from integrationdifferentiation import integrate_2d
# ∫_0^1 ∫_0^1 x*y dy dx = 0.25
result = integrate_2d(
lambda y, x: x * y,
ax=0.0, bx=1.0,
g=lambda x: 0.0,
h=lambda x: 1.0,
)
print(result.value) # -> 0.25
Example 3 — Gauss-Legendre quadrature rule:
import numpy as np
from integrationdifferentiation import gauss_quadrature_rule
# 5-point Gauss-Legendre rule on [-1, 1]
rule = gauss_quadrature_rule(5, weight_type='legendre')
print(rule.points) # [-0.906..., -0.538..., 0.0, 0.538..., 0.906...]
print(rule.weights) # [0.236..., 0.478..., 0.568..., 0.478..., 0.236...]
# Use it to integrate exp(-x) on [-1, 1]
import math
estimate = float(np.dot(rule.weights, [math.exp(-x) for x in rule.points]))
print(estimate) # -> 2.35040... (exact: e - 1/e)
Example 4 — Numerical differentiation:
import math
from integrationdifferentiation import differentiate
# d/dx sin(x) at x = π/4 = cos(π/4) = √2/2 ≈ 0.70711
result = differentiate(math.sin, math.pi / 4, order=1)
print(result) # -> 0.7071067811865475
# d²/dx² sin(x) at x = π/4 = -sin(π/4) ≈ -0.70711
result2 = differentiate(math.sin, math.pi / 4, order=2)
print(result2) # -> -0.7071067811865...