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,
Aturan pangkat menurunkan pangkatnya sebanyak satu dan menjadikan pangkat lama sebagai faktor pengali, contohnya diturunkan menjadi . Sifat linearitas memastikan setiap suku dapat diturunkan secara terpisah, dan turunan konstanta bernilai nol karena garis datar tidak memiliki kemiringan. Menurunkan dengan ketiga aturan itu menghasilkan , dan hasilnya diperiksa terhadap beda kuotien pada beberapa titik.
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}")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.000000Setiap baris menunjukkan kesesuaian hingga sekitar lima angka desimal, dengan deviasi terbesar . Deviasi kecil itu wajar karena beda kuotien dengan memang menyisakan error orde , sebagaimana diperlihatkan pada topik definisi limit. Titik dengan kelengkungan lebih besar, yaitu dan , 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,
Asalnya dapat dibayangkan sebagai persegi panjang berukuran kali , yaitu ketika kedua sisi bertambah, luasnya bertambah dari dua arah, masing-masing menyumbang satu suku pada rumus. Pada contoh dan , aturan tersebut memberikan . Program berikut membandingkan tiga nilai pada , yaitu hasil aturan, hasil kali kedua turunan yang keliru, dan beda kuotien dari definisi limit.
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}")aturan hasil kali : 28.312500
hasil kali turunan : 20.250000
beda kuotien : 28.312535Nilai beda kuotien yang mendekati mengonfirmasi aturan hasil kali, sedangkan hasil kali kedua turunan tertinggal jauh di . 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 dan , maka laju perubahan terhadap adalah hasil kali kedua laju yang berantai,
Intuisinya serupa dengan konversi satuan berantai, yaitu kilometer per menit dikalikan menit per detik sehingga satuan perantara lenyap. Pada , fungsi dalamnya adalah dan fungsi luarnya adalah , sehingga . Alur kedua fungsi beserta laju perubahan pada setiap tahapnya digambarkan pada diagram berikut.
Verifikasi numeriknya mengikuti pola yang sama dengan aturan sebelumnya, yaitu membandingkan hasil rumus dengan beda kuotien pada satu titik.
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}")aturan rantai : 42.865920
beda kuotien : 42.865980Kedua nilai cocok hingga lima angka desimal, dengan sisa beda orde yang konsisten dengan pilihan langkah pada fungsi yang lengkungnya cukup tajam. Aturan rantai juga dapat ditumpuk pada komposisi lebih dari dua lapis, misalnya 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 beserta turunannya sesuai pangkat yang dipilih. Geser penggeser dari sampai , lalu amati bentuk kurva merah putus-putus yang berubah mengikuti aturan pangkat. Pada , turunannya berupa garis datar bernilai satu, sedangkan pada 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 ganjil selain satu, kurva turunannya berupa parabola ke atas yang hanya menyentuh nol di titik asal, sedangkan pada genap, kurva birunya naik di kanan dan turun di kiri sebagaimana ditunjukkan oleh tanda kurva merahnya. Geser perlahan di sekitar nilai dan untuk melihat perubahan bentuk yang konsisten dengan rumus .
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 beserta linearitasnya menurunkan seluruh polinomial tanpa menghitung limit.
- Aturan hasil kali memuat dua suku, dan mengalikan kedua turunan secara langsung merupakan rumus yang keliru.
- Aturan rantai 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#
- Calculus Volume 1, 3.3 Differentiation Rules — OpenStax — Aturan pangkat, hasil kali, hasil bagi, dan sifat linearitas beserta contoh penerapannya.
- Calculus Volume 1, 3.6 The Chain Rule — OpenStax — Aturan rantai untuk fungsi bersusun dengan contoh bertingkat.
- Mathematics for Machine Learning — Deisenroth, Faisal, dan Ong — Buku terbuka yang menghubungkan aturan diferensiasi dengan gradien pada machine learning.