Aturan Diferensiasi

Aturan pangkat, aturan hasil kali, dan aturan rantai.

Daftar isi

Topik ini menyajikan aturan diferensiasi yang menghitung turunan tanpa menilai limit setiap kali, yaitu aturan pangkat, aturan hasil kali, dan aturan rantai. Setiap aturan dituliskan rumusnya, dijelaskan asal usulnya secara singkat, lalu diverifikasi secara numerik dengan membandingkan hasil rumus dengan beda kuotien menggunakan NumPy. Setelah membaca, turunan fungsi majemuk dapat dihitung melalui kombinasi aturan tersebut dan kebenarannya dapat diperiksa dengan beberapa baris kode.

Aturan pangkat dan sifat linearitas#

Aturan dasar diferensiasi merangkum hasil limit yang paling sering digunakan menjadi tabel yang pendek. Tiga aturan berikut mencakup seluruh polinomial tanpa perlu menghitung satu limit pun lagi,

ddx c=0(turunan konstanta)ddx xn=n xn−1(aturan pangkat)ddx(a f(x)+b g(x))=a f′(x)+b g′(x)(sifat linearitas) \begin{aligned} \frac{d}{dx}\, c &= 0 & \text{(turunan konstanta)}\\ \frac{d}{dx}\, x^n &= n\,x^{n-1} & \text{(aturan pangkat)}\\ \frac{d}{dx}\left( a\,f(x) + b\,g(x) \right) &= a\,f'(x) + b\,g'(x) & \text{(sifat linearitas)} \end{aligned}

Aturan pangkat menurunkan pangkatnya sebanyak satu dan menjadikan pangkat lama sebagai faktor pengali, contohnya x5x^5 diturunkan menjadi 5x45x^4. Sifat linearitas memastikan setiap suku dapat diturunkan secara terpisah, dan turunan konstanta bernilai nol karena garis datar tidak memiliki kemiringan. Menurunkan f(x)=4x3+2xf(x) = 4x^3 + 2x dengan ketiga aturan itu menghasilkan f′(x)=12x2+2f'(x) = 12x^2 + 2, dan hasilnya diperiksa terhadap beda kuotien pada beberapa titik.

python Contoh: memverifikasi aturan pangkat dengan beda kuotien
import numpy as np

def f(x):
    return 4.0 * x**3 + 2.0 * x

def f_aksen(x):
    return 12.0 * x**2 + 2.0

h = 1e-6
for x in (-1.5, 0.0, 0.7, 2.0):
    numerik = (f(x + h) - f(x)) / h
    eksak = f_aksen(x)
    print(f"x = {x:4.1f} : beda kuotien = {numerik:10.6f}, rumus = {eksak:10.6f}")
text Keluaran
x = -1.5 : beda kuotien =  28.999982, rumus =  29.000000
x =  0.0 : beda kuotien =   2.000000, rumus =   2.000000
x =  0.7 : beda kuotien =   7.880008, rumus =   7.880000
x =  2.0 : beda kuotien =  50.000024, rumus =  50.000000

Setiap baris menunjukkan kesesuaian hingga sekitar lima angka desimal, dengan deviasi terbesar 0.0000240.000024. Deviasi kecil itu wajar karena beda kuotien dengan h=10−6h = 10^{-6} memang menyisakan error orde hh, sebagaimana diperlihatkan pada topik definisi limit. Titik dengan kelengkungan lebih besar, yaitu x=−1.5x = -1.5 dan x=2.0x = 2.0, menyisakan deviasi yang lebih besar pula, dan pola tersebut justru memperkuat keyakinan bahwa rumusnya benar.

Aturan hasil kali#

Turunan dari hasil kali dua fungsi tidak sama dengan hasil kali kedua turunannya, melainkan mengikuti aturan berikut,

ddx(f(x) g(x))=f′(x) g(x)+f(x) g′(x). \frac{d}{dx}\bigl( f(x)\,g(x) \bigr) = f'(x)\,g(x) + f(x)\,g'(x).

Asalnya dapat dibayangkan sebagai persegi panjang berukuran ff kali gg, yaitu ketika kedua sisi bertambah, luasnya bertambah dari dua arah, masing-masing menyumbang satu suku pada rumus. Pada contoh f(x)=x2f(x) = x^2 dan g(x)=x3+1g(x) = x^3 + 1, aturan tersebut memberikan 2x (x3+1)+x2 (3x2)2x\,(x^3 + 1) + x^2\,(3x^2). Program berikut membandingkan tiga nilai pada x=1.5x = 1.5, yaitu hasil aturan, hasil kali kedua turunan yang keliru, dan beda kuotien dari definisi limit.

python Contoh: aturan hasil kali dibandingkan cara yang keliru
import numpy as np

def u(x):
    return x**2

def v(x):
    return x**3 + 1.0

x = 1.5
h = 1e-6

# turunan hasil kali menurut aturan
aturan = (2.0 * x) * v(x) + u(x) * (3.0 * x**2)

# hasil kali kedua turunan, cara yang keliru
keliru = (2.0 * x) * (3.0 * x**2)

# pembanding numerik dari definisi limit
numerik = (u(x + h) * v(x + h) - u(x) * v(x)) / h

print(f"aturan hasil kali  : {aturan:.6f}")
print(f"hasil kali turunan : {keliru:.6f}")
print(f"beda kuotien       : {numerik:.6f}")
text Keluaran
aturan hasil kali  : 28.312500
hasil kali turunan : 20.250000
beda kuotien       : 28.312535

Nilai beda kuotien yang mendekati 28.312528.3125 mengonfirmasi aturan hasil kali, sedangkan hasil kali kedua turunan tertinggal jauh di 20.2520.25. Selisih yang begitu besar menegaskan bahwa cara mengalikan kedua turunan bukanlah perkiraan kasar, melainkan rumus yang berbeda dan keliru. Pada fungsi lain selisihnya dapat lebih kecil, sehingga satu titik uji saja tidak cukup dan pemeriksaan perlu dilakukan pada beberapa titik.

Aturan rantai#

Aturan rantai menghitung turunan fungsi bersusun (composite function), yaitu fungsi yang masukannya berupa fungsi lain. Apabila y=f(u)y = f(u) dan u=g(x)u = g(x), maka laju perubahan yy terhadap xx adalah hasil kali kedua laju yang berantai,

dydx=dydu⋅dudx=f′(u)⋅g′(x). \frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx} = f'(u) \cdot g'(x).

Intuisinya serupa dengan konversi satuan berantai, yaitu kilometer per menit dikalikan menit per detik sehingga satuan perantara lenyap. Pada h(x)=(x2+1)3h(x) = (x^2 + 1)^3, fungsi dalamnya adalah u=x2+1u = x^2 + 1 dan fungsi luarnya adalah y=u3y = u^3, sehingga h′(x)=3 (x2+1)2⋅2xh'(x) = 3\,(x^2 + 1)^2 \cdot 2x. Alur kedua fungsi beserta laju perubahan pada setiap tahapnya digambarkan pada diagram berikut.

masukanxdu/dx = g'(x)fungsi dalamu = g(x)dy/du = f'(u)fungsi luary = f(u)dy/dx = dy/du · du/dx = f'(u) · g'(x)
Alur aturan rantai pada komposisi dua fungsi

Verifikasi numeriknya mengikuti pola yang sama dengan aturan sebelumnya, yaitu membandingkan hasil rumus dengan beda kuotien pada satu titik.

python Contoh: aturan rantai pada fungsi bersusun
import numpy as np

# h(x) = (x^2 + 1)^3
def h(x):
    return (x**2 + 1.0) ** 3

# aturan rantai dengan u = x^2 + 1 dan f(u) = u^3
def h_aksen(x):
    return 3.0 * (x**2 + 1.0) ** 2 * 2.0 * x

x = 1.2
langkah = 1e-6
numerik = (h(x + langkah) - h(x)) / langkah
print(f"aturan rantai : {h_aksen(x):.6f}")
print(f"beda kuotien  : {numerik:.6f}")
text Keluaran
aturan rantai : 42.865920
beda kuotien  : 42.865980

Kedua nilai cocok hingga lima angka desimal, dengan sisa beda orde 10−510^{-5} yang konsisten dengan pilihan langkah h=10−6h = 10^{-6} pada fungsi yang lengkungnya cukup tajam. Aturan rantai juga dapat ditumpuk pada komposisi lebih dari dua lapis, misalnya sin⁡(3x2)\sin(3x^2) yang melewati dua perantara, dan setiap perantara menyumbang satu faktor. Pembacaan diagramnya mengikuti urutan yang sama, yaitu kalikan laju pada setiap panah dari masukan sampai keluaran.

Demo interaktif: turunan x pangkat n#

Demo berikut menggambar sepasang kurva untuk f(x)=xnf(x) = x^n beserta turunannya f′(x)=n xn−1f'(x) = n\,x^{n-1} sesuai pangkat yang dipilih. Geser penggeser nn dari 11 sampai 55, lalu amati bentuk kurva merah putus-putus yang berubah mengikuti aturan pangkat. Pada n=1n = 1, turunannya berupa garis datar bernilai satu, sedangkan pada nn yang semakin besar, kurva turunannya semakin curam di kedua sisi.

Perilaku yang layak diamati adalah hubungan tanda antara kedua kurva. Ketika kurva biru sedang naik, kurva merah berada di atas sumbu horizontal, dan ketika kurva biru turun, kurva merah berada di bawahnya. Pada nn ganjil selain satu, kurva turunannya berupa parabola ke atas yang hanya menyentuh nol di titik asal, sedangkan pada nn genap, kurva birunya naik di kanan dan turun di kiri sebagaimana ditunjukkan oleh tanda kurva merahnya. Geser nn perlahan di sekitar nilai 22 dan 33 untuk melihat perubahan bentuk yang konsisten dengan rumus n xn−1n\,x^{n-1}.

Di mana hal ini ditemui dalam kode#

Backpropagation pada machine learning adalah aturan rantai yang dieksekusi dalam skala besar. Jaringan berlapis merupakan fungsi bersusun dari ribuan lapisan kecil, sehingga gradien terhadap setiap parameter dihitung dengan mengalikan laju perubahan pada setiap panah, persis seperti diagram aturan rantai di atas. Pemeriksaan gradien dengan beda kuotien yang dijelaskan pada topik definisi limit menjadi alat uji standar untuk memastikan implementasinya benar.

Perangkat lunak simbolik dan numerik juga membungkus aturan-aturan ini. Fungsi np.polyder pada NumPy menurunkan koefisien polinomial menggunakan aturan pangkat dan linearitas dalam satu panggilan, sedangkan pustaka diferensiasi otomatis (automatic differentiation) menerapkan aturan rantai pada setiap operasi program. Contoh lainnya adalah regresi linear, yang gradien fungsi loss terhadap koefisiennya diturunkan secara analitik dengan aturan pangkat dan linearitas sebelum dioptimasi. Memahami ketiga aturan pada topik ini berarti memahami mekanisme di balik alat-alat tersebut.

Ringkasan#

  • Aturan pangkat ddxxn=nxn−1\frac{d}{dx} x^n = n x^{n-1} beserta linearitasnya menurunkan seluruh polinomial tanpa menghitung limit.
  • Aturan hasil kali (fg)′=f′g+fg′(f g)' = f' g + f g' memuat dua suku, dan mengalikan kedua turunan secara langsung merupakan rumus yang keliru.
  • Aturan rantai dydx=f′(u)⋅g′(x)\frac{dy}{dx} = f'(u) \cdot g'(x) mengalikan laju perubahan sepanjang rantai komposisi, dan menjadi dasar backpropagation.
  • Setiap aturan diverifikasi dengan membandingkan hasil rumus dengan beda kuotien pada beberapa titik pilihan.

Referensi#