Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help



Limits

Topic: operations.limits

Compute limits of expressions as variables approach values, infinity, or points of discontinuity.

Mathematical Definition

Epsilon-Delta Definition (ε-δ): means: For every , there exists such that:

Limit Laws:

  1. Sum/Difference:
  2. Product:
  3. Quotient: (if denominator )

L'Hôpital's Rule (0/0 or ∞/∞): (if the limit on the right exists)

Examples

Direct Substitution

For continuous functions, substitute directly

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;

let x = symbol!(x);

// Limit: lim(x→2) x² = 4
let expr1 = expr!(x ^ 2);
let limit1 = expr1.limit(&x, &expr!(2));
// Result: 4

// Limit: lim(x→π) sin(x) = 0
let expr2 = expr!(sin(x));
let limit2 = expr2.limit(&x, &Expression::pi());
// Result: 0

}
Python
from mathhook import symbol, limit, pi

x = symbol('x')

# Limit: lim(x→2) x² = 4
expr1 = x**2
limit1 = limit(expr1, x, 2)
# Result: 4

# Limit: lim(x→π) sin(x) = 0
expr2 = sin(x)
limit2 = limit(expr2, x, pi)
# Result: 0

JavaScript
const { symbol, limit } = require('mathhook');

const x = symbol('x');

// Limit: lim(x→2) x² = 4
const expr1 = x.pow(2);
const limit1 = limit(expr1, x, 2);
// Result: 4

L'Hôpital's Rule (0/0 Form)

Use derivatives to resolve indeterminate forms

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;

let x = symbol!(x);

// Limit: lim(x→0) sin(x)/x = 1 (0/0 form)
// Apply L'Hôpital: lim(x→0) cos(x)/1 = 1
let expr = expr!(sin(x) / x);
let limit = expr.limit(&x, &expr!(0));
// Result: 1

// Limit: lim(x→0) (1 - cos(x))/x² = 1/2 (0/0 form)
let expr2 = expr!((1 - cos(x)) / (x ^ 2));
let limit2 = expr2.limit(&x, &expr!(0));
// Result: 1/2

}
Python
from mathhook import symbol, limit, sin, cos

x = symbol('x')

# Limit: lim(x→0) sin(x)/x = 1
expr = sin(x)/x
result = limit(expr, x, 0)
# Result: 1

# Limit: lim(x→0) (1 - cos(x))/x²
expr2 = (1 - cos(x))/x**2
result2 = limit(expr2, x, 0)
# Result: 1/2

JavaScript
const { symbol, limit, parse } = require('mathhook');

const x = symbol('x');

// Limit: lim(x→0) sin(x)/x
const expr = parse('sin(x)/x');
const result = limit(expr, x, 0);
// Result: 1

Limits at Infinity

Behavior as x approaches ±∞

Rust
#![allow(unused)]
fn main() {
use mathhook::prelude::*;
use mathhook::core::Expression;

let x = symbol!(x);

// Limit: lim(x→∞) (2x² + 1)/(x² + 3) = 2
let expr1 = expr!((2 * (x ^ 2) + 1) / ((x ^ 2) + 3));
let limit1 = expr1.limit(&x, &Expression::infinity());
// Result: 2

// Limit: lim(x→∞) (x + 1)/(x² + 1) = 0
let expr2 = expr!((x + 1) / ((x ^ 2) + 1));
let limit2 = expr2.limit(&x, &Expression::infinity());
// Result: 0

}
Python
from mathhook import symbol, limit, oo

x = symbol('x')

# Limit: lim(x→∞) (2x² + 1)/(x² + 3)
expr1 = (2*x**2 + 1)/(x**2 + 3)
limit1 = limit(expr1, x, oo)
# Result: 2

# Limit: lim(x→∞) (x + 1)/(x² + 1)
expr2 = (x + 1)/(x**2 + 1)
limit2 = limit(expr2, x, oo)
# Result: 0

JavaScript
const { symbol, limit, Infinity } = require('mathhook');

const x = symbol('x');

// Limit: lim(x→∞) (2x² + 1)/(x² + 3)
const expr1 = parse('(2*x^2 + 1)/(x^2 + 3)');
const limit1 = limit(expr1, x, Infinity);
// Result: 2

API Reference

  • Rust: mathhook_core::calculus::limits::Limit
  • Python: mathhook.limit
  • JavaScript: mathhook.limit

See Also