Jump to content

Taylor Series

From Haidhi Wiki
Revision as of 09:32, 16 July 2026 by SanzSkuy (talk | contribs) (Created page with "'''Taylor Series''' adalah cara merepresentasikan fungsi smooth sebagai polinomial (jumlah tak hingga). Ide intinya: fungsi ribet ($\sin$, $e^x$, $\ln$) diaproksimasi pakai polinomial yang gampang dihitung (cuma tambah-kali), dengan cara menyamakan nilai dan semua turunannya di satu titik. == Intuisi == Bikin polinomial <math>P(x)</math> yang "nyamar" jadi <math>f(x)</math> di sekitar titik <math>a</math>: * Nilainya sama di <math>x = a</math> * Kemiringan (turunan per...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Taylor Series adalah cara merepresentasikan fungsi smooth sebagai polinomial (jumlah tak hingga). Ide intinya: fungsi ribet ($\sin$, $e^x$, $\ln$) diaproksimasi pakai polinomial yang gampang dihitung (cuma tambah-kali), dengan cara menyamakan nilai dan semua turunannya di satu titik.

Intuisi

Bikin polinomial P(x) yang "nyamar" jadi f(x) di sekitar titik a:

  • Nilainya sama di x=a
  • Kemiringan (turunan pertama) sama
  • Kelengkungan (turunan kedua) sama
  • ... dst untuk semua orde turunan
f(x) ~ nilai + kemiringan + kelengkungan + ...

       f(a)  + f'(a)(x-a) + f(a)/2! (x-a)^2 + ...
        |         |              |
      orde 0   orde 1         orde 2

Rumus Umum

f(x)=∑n=0∞f(n)(a)n!(x−a)n

Bentuk panjangnya:

f(x)=f(a)+f′(a)(x−a)+f″(a)2!(x−a)2+f‴(a)3!(x−a)3+⋯

Kalau a=0, namanya deret Maclaurin.

Kenapa ada n! di penyebut? Tiap kali (x−a)n diturunkan berulang, muncul faktor n(n−1)(n−2)⋯. Faktorial di penyebut "membatalkan" faktor ini supaya turunan ke-n polinomial di titik a pas sama dengan f(n)(a). Itu satu-satunya fungsinya.

Resep 3 Langkah

  1. Turunkan f berkali-kali
  2. Evaluasi semua turunan di titik ekspansi a
  3. Masukkan ke slot-slot rumus

Contoh Lengkap: e^x

Step 1 — turunan. Keistimewaan ex: turunannya dirinya sendiri.

f=f′=f″=f‴=ex

Step 2 — evaluasi di x=0. Karena e0=1:

f(0)=f′(0)=f″(0)=⋯=1

Step 3 — masukkan ke rumus:

ex=1+x+x22!+x33!+x44!+⋯=∑n=0∞xnn!

Verifikasi numerik — hitung e1 term demi term:

Term ditambahkan Kontribusi Total sejauh ini
1 1 1
x 1 2
x2/2 0.5 2.5
x3/6 0.1667 2.6667
x4/24 0.0417 2.7083
x5/120 0.0083 2.7167
x6/720 0.0014 2.7181

Nilai asli e=2.71828... — 7 term sudah dapat 4 digit benar. Tiap term baru makin kecil karena dibagi faktorial yang tumbuh jauh lebih ganas daripada xn.

Contoh Lain yang Sering Dipakai

Fungsi Deret Maclaurin Radius konvergensi
ex 1+x+x22!+x33!+⋯ ∞
sin⁡x x−x33!+x55!−⋯ ∞
cos⁡x 1−x22!+x44!−⋯ ∞
ln⁡(1+x) x−x22+x33−⋯ |x|<1
11−x 1+x+x2+x3+⋯ |x|<1

Catatan: penyebut ln⁡(1+x) itu n biasa, bukan n! — faktorialnya "kebatalan" sama pola turunannya. Ini yang bikin konvergensinya jauh lebih lambat.

Radius of Convergence

Deret Taylor tidak selalu konvergen di semua x. Contoh ln⁡(1+x):

konvergen          DIVERGEN
|=========|=========X=====================>
-1        0         1                     x
^                   ^
singularitas        batas radius
(ln 0 = -inf)
  • Di |x|<1: konvergen (makin dekat batas, makin lambat)
  • Di |x|>1: divergen total — nambah term malah bikin makin parah
  • Intuisi: deret Taylor "nggak bisa melihat" lebih jauh dari jarak titik ekspansi ke singularitas terdekat. ln⁡(1+x) punya singularitas di x=−1, jadi radiusnya 1 (simetris ke dua arah).

Implikasi praktis: implementasi log⁡() di libm tidak pakai Taylor mentah. Triknya range reduction: tulis x=m⋅2e (baca bit exponent IEEE 754), lalu ln⁡x=ln⁡m+eln⁡2 dengan m∈[1,2) — selalu di zona konvergen cepat. Pola sama dipakai buat sin/cos di libm dan CUDA/OpenCL math intrinsics.

Kapan Berhenti (Truncation)

Secara teori deretnya sampai ∞. Secara praktik, potong di orde n → jadi polinomial Taylor + error:

f(x)=Pn(x)⏟yang dihitung+Rn(x)⏟remainder / error

Rule of thumb (untuk deret alternating / konvergen cepat): error ≈ term pertama yang dibuang.

Berhenti di Error untuk e1
4 term ~0.05 (2 digit)
7 term ~0.0002 (4 digit)
10 term ~1e-7 (7 digit)
18 term ~1e-16 — mentok presisi double

Double IEEE 754 presisinya ~16 digit desimal. Nambah term lewat itu percuma — error sudah di bawah machine epsilon.

Implementasi Python

Loop dengan stopping criterion natural (berhenti pas kontribusi term < toleransi):

def my_exp(x, tol=1e-12):
    total = 0.0
    term = 1.0          # term ke-0: x^0/0! = 1
    n = 0
    while abs(term) > tol:
        total += term
        n += 1
        term *= x / n   # term berikutnya = term sekarang * x/n
    return total

print(my_exp(1.0))   # 2.718281828459045

Trik penting: term *= x / n — jangan hitung xn dan n! dari nol tiap iterasi (overflow untuk n besar), cukup update term sebelumnya secara inkremental.

Verifikasi simbolik pakai sympy:

import sympy as sp
x = sp.symbols('x')
print(sp.series(sp.exp(x), x, 0, 6))
# 1 + x + x**2/2 + x**3/6 + x**4/24 + x**5/120 + O(x**6)

Relevansi ke CFD / HPC

  • Finite difference = aplikasi langsung Taylor. Skema ∂u∂x≈ui+1−uiΔx diturunkan dari ekspansi u(x+Δx). Analisis order of accuracy (kenapa forward difference O(Δx), central difference O(Δx2)) semuanya lewat Taylor. Fondasi seluruh numerical PDE, termasuk 12 Steps to Navier-Stokes.
  • Fungsi transcendental di hardware. sinf(), expf(), __sinf() CUDA — implementasinya polinomial evaluation (minimax polynomial, sepupunya Taylor) + range reduction.
  • Konvergensi itu conditional. Jangan asumsi semua fungsi bisa di-Taylor-kan sembarangan di semua titik — cek radius of convergence.

Lihat Juga

Kategori:Kalkulus Kategori:Scientific Computing Kategori:Roadmap CFD