Belajar Math - Limits & Continuity
Series/Belajar Math/Episode 21
Episode 21 of 28

Belajar Math - Limits & Continuity

Limit lim x→a f(x), one-sided limit, dan continuity adalah konsep fundamental calculus yang menjelaskan convergence iterasi numerik dan asymptotic analysis — fondasi formal dari Big-O notation yang kalian gunakan setiap hari.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 20 kita menyelesaikan linear algebra — eigenvalues dan eigenvectors — pada episode ini kita memasuki calculus: cabang matematika yang berurusan dengan perubahan dan optimasi. Dan fondasi pertama calculus adalah limits: apa yang terjadi pada fungsi saat input mendekati nilai tertentu.

Mengapa limits penting? Karena limits adalah fondasi dari Big-O notation yang kalian gunakan setiap hari untuk menganalisis kompleksitas. Limits juga menjelaskan convergence — kapan iterasi numerik akan mencapai hasil yang benar, dan kapan ia akan gagal. Memahami limits memberikan pemahaman formal tentang konsep "mendekati" yang sebelumnya hanya kalian rasakan secara intuitif.

Definisi Limit

lim(x→a) f(x) = L artinya: saat x mendekati a (bukan sama dengan a), f(x) mendekati L.

PythonLimit — intuisi numerik
import math
 
def f(x):
    """f(x) = sin(x)/x — limit saat x→0 = 1."""
    if x == 0:
        return 1  # L'Hôpital's rule
    return math.sin(x) / x
 
# Dekati 0 dari berbagai sisi
print("f(x) = sin(x)/x saat x → 0:")
for x in [0.1, 0.01, 0.001, 0.0001, -0.0001, -0.001, -0.01, -0.1]:
    print(f"  f({x}) = {f(x):.8f}")
 
print(f"\nLimit = {f(0):.1f} (exact: 1)")

One-Sided Limit

Limit bisa berbeda dari sisi kiri dan kanan:

PythonOne-sided limit — fungsi diskontinu
def g(x):
    """Fungsi piecewise: x untuk x<0, x+1 untuk x≥0."""
    return x if x < 0 else x + 1
 
# Limit dari kiri (x→0⁻)
print("g(x) saat x → 0⁻:")
for x in [-0.1, -0.01, -0.001]:
    print(f"  g({x}) = {g(x)}")
 
# Limit dari kanan (x→0⁺)
print("\ng(x) saat x → 0⁺:")
for x in [0.1, 0.01, 0.001]:
    print(f"  g({x}) = {g(x)}")
 
print("\nLimit kiri ≠ Limit kanan → limit tidak ada!")
print(f"  lim(x→0⁻) = 0")
print(f"  lim(x→0⁺) = 1")

Continuity

Fungsi kontinu di titik a jika:

  1. f(a) terdefinisi
  2. lim(x→a) f(x) ada
  3. lim(x→a) f(x) = f(a)
PythonKontinuitas — verifikasi numerik
def is_continuous_at(f, a, epsilon=1e-6):
    """Cek kontinuitas secara numerik."""
    if math.isnan(f(a)):
        return False
 
    # Cek limit dari kiri
    left_limit = f(a - epsilon)
    # Cek limit dari kanan
    right_limit = f(a + epsilon)
 
    # Apakah limit ada dan sama dengan f(a)?
    limit_exists = abs(left_limit - right_limit) < epsilon
    limit_equals_value = abs(left_limit - f(a)) < epsilon
 
    return limit_exists and limit_equals_value
 
# Kontinu
def continuous(x):
    return x ** 2
 
# Diskontinu (jump)
def discontinuous(x):
    return 1 if x >= 0 else -1
 
# Diskontinu (removable)
def removable(x):
    return 1 if x != 0 else None  # f(0) tidak terdefinisi
 
print(f"x² kontinu di x=0? {is_continuous_at(continuous, 0)}")
print(f"step function kontinu di x=0? {is_continuous_at(discontinuous, 0)}")

L'Hôpital's Rule (Preview)

Jika limit menghasilkan 0/0 atau ∞/∞, gunakan L'Hôpital: lim f(x)/g(x) = lim f'(x)/g'(x).

PythonL'Hôpital's rule — sin(x)/x
import math
 
# sin(x)/x saat x→0: 0/0 → gunakan L'Hôpital
# lim sin(x)/x = lim cos(x)/1 = cos(0)/1 = 1
 
def f_original(x):
    if x == 0:
        return float('nan')
    return math.sin(x) / x
 
def f_lhopital(x):
    """Turunan sin(x) = cos(x), turunan x = 1."""
    return math.cos(x) / 1
 
print("sin(x)/x saat x→0:")
print(f"  Direct: {f_original(1e-10):.10f}")
print(f"  L'Hôpital: {f_lhopital(1e-10):.10f}")
print(f"  Expected: 1.0")

Aplikasi: Convergence Iterasi

PythonConvergence — kapan iterasi mencapai jawaban?
import math
 
# Metode Newton untuk mencari akar f(x) = x² - 2
def newton_method(f, f_prime, x0, tolerance=1e-10, max_iter=100):
    """Newton's method — convergence dijamin jika conditions terpenuhi."""
    x = x0
    history = [x]
 
    for i in range(max_iter):
        fx = f(x)
        if abs(fx) < tolerance:
            break
        x = x - fx / f_prime(x)
        history.append(x)
 
    return x, history
 
f = lambda x: x**2 - 2
f_prime = lambda x: 2*x
 
root, history = newton_method(f, f_prime, x0=10.0)
print(f"Newton's method: √2 ≈ {root:.10f}")
print(f"Exact:           {math.sqrt(2):.10f}")
print(f"Iterations: {len(history)}")
print(f"Error setiap iterasi:")
for i, x in enumerate(history):
    print(f"  i={i}: x={x:.10f}, error={abs(x - math.sqrt(2)):.2e}")

Hubungan dengan Big-O

PythonBig-O sebagai limit ratio
import time
import math
 
def f_linear(n):
    return sum(range(n))
 
def f_quadratic(n):
    return sum(i for i in range(n) for _ in range(n))
 
# Big-O: limit ratio f(n)/g(n) saat n→∞
# O(n): f_linear(n)/n → constant
# O(n²): f_quadratic(n)/n² → constant
 
print("Convergence ke constant (definisi Big-O):")
for n in [100, 1000, 10000]:
    ratio_linear = f_linear(n) / n
    ratio_quad = f_quadratic(n) / n**2
    print(f"  n={n}: f(n)/n = {ratio_linear:.4f}, f(n)/n² = {ratio_quad:.4f}")

Note

Limits memberikan fondasi formal untuk Big-O notation: f(n) = O(g(n)) artinya lim(f(n)/g(n)) ada dan terbatas saat n→∞. Tanpa limits, Big-O hanya "feeling" — dengan limits, ia adalah bukti matematika.

Penutup

Inti yang harus dibawa pulang:

  • Limit lim(x→a) f(x) = L: f(x) mendekati L saat x mendekati a — bukan tentang nilai di a.
  • One-sided limit: limit dari kiri dan kanan harus sama untuk limit ada.
  • Continuity: f(a) terdefinisi, limit ada, dan keduanya sama — fungsi tanpa "lompatan".
  • L'Hôpital's rule: untuk limit 0/0 atau ∞/∞, gunakan turunan.
  • Convergence: limits menjelaskan kapan iterasi numerik akan mencapai hasil yang benar.

Di episode 22 selanjutnya kita akan mempelajari derivatives (turunan) dan gradient — laju perubahan instan dari fungsi. Turunan adalah "kemiringan" fungsi di titik tertentu dan merupakan fondasi dari gradient descent di machine learning!