lib/calculus/)
Handcoded symbolic derivative, integral, limit, and simplify — no external
CAS. Load the folder package with
use calculus;.
$ /
$$) are
optional and stripped if present. Ascii shortcuts like
sin(x)/x still work, but LaTeX is
clearer and less ambiguous for powers, fractions, and trig.
use calculus;
print.string(calculus.derivative("17x^{17}"));
print.string(calculus.integral("\\frac{1}{x^{2}+1}"));
print.string(calculus.limit("\\frac{\\sin x}{x}", "x", 0));
print.string(calculus.limit("(1+\\frac{1}{x^{2}})^{x}", "x", "\\infty"));
calculus.derivative(expr [, var])
— symbolic derivative (default variable x).
calculus.integral(expr [, var])
— elementary + parts / u-sub / partial fractions where possible.
calculus.limit(expr, var, point [, side])
— point may be a number,
"inf",
"-inf", or
"\\infty". Optional
side:
"+" /
"-".
calculus.simplify(expr) —
algebraic cleanup.
calculus.expand(expr) —
distribute products / small binomial powers.
The parser normalizes LaTeX before evaluating. Supported highlights:
x^{17},
(2x+1)^{3}
\\frac{a}{b}
\\sin,
\\cos,
\\tan,
\\ln,
\\log,
\\exp,
\\sqrt{...}
\\left( /
\\right) ignored (become plain parens)
\\infty
$...$ or
$$...$$ — not required
# preferred
calculus.derivative("\\sin(2x)");
calculus.integral("\\frac{2x}{x^{2}+1}");
calculus.limit("\\frac{\\tan x}{x}", "x", 0);
# also fine without backslashes on bare functions / ascii
calculus.derivative("sin(2x)");
calculus.limit("sin(x)/x", "x", 0);
You can pass a user
functionDefine into calculus —
as a call, a name string, or a
function.ref. The body must be a
single return.* built from
math.add /
subtract /
multiply /
div /
sqrtR (and nested
function.* calls).
use calculus;
functionDefine.something(x):
return.number(math.add(x, 1));
end;
print.string(calculus.derivative(function.something(x)));
print.string(calculus.derivative("something"));
print.string(calculus.derivative("something(x)"));
r.setVar(function.ref(something));
print.string(calculus.integral(r));
Includes standard table limits (sin x / x),
rational asymptotics at infinity, L'Hôpital for 0/0 and ∞/∞, and
(1 + c/x^{p})^{x^{q}} forms — e.g.
(1+1/x^{2})^{x} → 1 as
x → ∞.
Implementation:
someProgrammingLanguage/lib/calculus/
(core.py,
derivative.py,
integral.py,
limit.py)