Turunan Parsial

Kemiringan sepanjang setiap sumbu.

Daftar isi

Turunan parsial mengukur kemiringan permukaan fungsi multivariabel sepanjang satu sumbu pada satu waktu, dengan variabel lain ditahan konstan. Topik ini membahas notasi ∂ \partial , aturan turunan yang tetap berlaku, interpretasi melalui potongan lintang, serta penghitungan hampiran numerik menggunakan NumPy. Setelah topik ini selesai, kemiringan f(x,y) f(x, y) sepanjang sumbu x x maupun sumbu y y dapat diturunkan secara analitik dan diverifikasi secara numerik. Kedua keterampilan itu menjadi bahan baku gradien, yaitu vektor yang menghimpun keduanya sekaligus.

Definisi: menahan variabel lain konstan#

Turunan parsial (partial derivative) fungsi f(x,y) f(x, y) terhadap x x dihitung dengan menurunkan f f terhadap x x sambil y y diperlakukan sebagai konstanta. Hasilnya dinotasikan ∂f∂x \frac{\partial f}{\partial x} , sedangkan turunan terhadap y y dinotasikan ∂f∂y \frac{\partial f}{\partial y} . Simbol ∂ \partial menggantikan huruf d d sebagai penanda bahwa fungsinya memiliki lebih dari satu variabel. Secara geometris, ∂f∂x \frac{\partial f}{\partial x} pada titik (a,b) (a, b) adalah kemiringan permukaan sepanjang arah sumbu x x di titik itu.

Ambil fungsi f(x,y)=x2+3xy+y2 f(x, y) = x^2 + 3xy + y^2 sebagai contoh. Menurunkan terhadap x x membuat suku y2 y^2 tetap, suku 3xy 3xy menyisakan 3y 3y karena y y konstan, dan suku x2 x^2 menyisakan 2x 2x , sehingga

∂f∂x=2x+3y,∂f∂y=3x+2y. \frac{\partial f}{\partial x} = 2x + 3y, \qquad \frac{\partial f}{\partial y} = 3x + 2y.

Pada titik (2,1) (2, 1) , nilai keduanya adalah ∂f∂x=7 \frac{\partial f}{\partial x} = 7 dan ∂f∂y=8 \frac{\partial f}{\partial y} = 8 . Kedua angka itu menggambarkan dua kemiringan berbeda pada satu titik permukaan yang sama, yaitu kemiringan ke arah x x dan kemiringan ke arah y y . Jumlah turunan parsial suatu fungsi sama dengan banyaknya variabel masukannya.

Potongan lintang permukaan#

Cara termudah melihat makna ∂f∂x \frac{\partial f}{\partial x} adalah memotong permukaan dengan bidang vertikal y=b y = b . Potongan itu menghasilkan kurva satu variabel z=f(x,b) z = f(x, b) , dan kemiringan kurva pada x=a x = a persis bernilai ∂f∂x \frac{\partial f}{\partial x} di titik (a,b) (a, b) . Dengan kata lain, turunan parsial adalah turunan biasa pada sepotong permukaan yang dipotong sejajar satu sumbu. Gambar berikut memperlihatkan f(x,y)=x2+y2 f(x, y) = x^2 + y^2 yang dipotong pada bidang y=1 y = 1 , sehingga kurva potongannya menjadi z=x2+1 z = x^2 + 1 .

python Contoh: menggambar potongan lintang pada y = 1
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2.0, 2.0, 100)
z = x**2 + 1.0  # potongan lintang f(x, y) = x^2 + y^2 pada y = 1

fig, ax = plt.subplots(figsize=(6, 3))
ax.plot(x, z, color="#1a5fb4", label="z = f(x, 1) = x^2 + 1")

# garis singgung di x = 0.5 dengan kemiringan df/dx = 2x = 1
xt = 0.5
zt = xt**2 + 1.0
xg = np.linspace(xt - 1.2, xt + 1.2, 10)
ax.plot(xg, zt + 1.0 * (xg - xt), linestyle="--", color="#c01c28",
        label="garis singgung (kemiringan 1)")
ax.plot([xt], [zt], "o", color="#c01c28", markersize=6)
ax.axhline(0.0, color="#000000", linewidth=0.8)
ax.set_xlabel("x")
ax.set_ylabel("z")
ax.set_title("Potongan lintang permukaan pada y = 1")
ax.legend(loc="upper center")
fig.tight_layout()
fig.savefig("potongan-lintang.svg")
Potongan lintang permukaan f(x, y) = x kuadrat ditambah y kuadrat pada y sama dengan 1 beserta garis singgungnya

Kurva pada gambar merupakan potongan permukaan pada bidang y=1 y = 1 . Garis singgungnya di x=0,5 x = 0{,}5 bermiringan 2×0,5=1 2 \times 0{,}5 = 1 , dan angka itu sama dengan ∂f∂x \frac{\partial f}{\partial x} pada titik (0,5,1) (0{,}5, 1) . Memotong pada nilai y y yang lain menghasilkan kurva berbentuk sama yang hanya bergeser ketinggian, sedangkan kemiringannya tetap 2x 2x karena y y sudah tidak muncul pada turunan terhadap x x . Setiap sumbu memiliki kelompok potongan lintangnya sendiri, dan kelompok arah y y dibaca dengan ∂f∂y \frac{\partial f}{\partial y} .

Hampiran numerik dengan selisih terpusat#

Turunan parsial juga dapat dihampiri dari nilai fungsi tanpa rumus turunannya, dengan mengambil dua titik di kiri dan kanan titik yang diuji. Metode selisih terpusat (central difference) menghitung

∂f∂x≈f(x+h,y)−f(x−h,y)2h \frac{\partial f}{\partial x} \approx \frac{f(x + h, y) - f(x - h, y)}{2h}

dengan h h berupa jarak kecil, dan rumus yang sama berlaku untuk arah y y . Hampiran ini menjadi alat verifikasi ketika rumus turunan analitik diragukan, karena cukup menggunakan evaluasi fungsi saja. Berkas berikut membandingkan hasil analitik dengan hasil numerik pada titik (2,1) (2, 1) untuk beberapa ukuran h h .

python parsial_numerik.py
import numpy as np


def f(x, y):
    """Fungsi contoh f(x, y) = x^2 + 3xy + y^2."""
    return x**2 + 3.0 * x * y + y**2


def parsial_x(x, y, h):
    """Hampiran turunan parsial terhadap x dengan selisih terpusat."""
    return (f(x + h, y) - f(x - h, y)) / (2.0 * h)


def parsial_y(x, y, h):
    """Hampiran turunan parsial terhadap y dengan selisih terpusat."""
    return (f(x, y + h) - f(x, y - h)) / (2.0 * h)


x, y = 2.0, 1.0
print(f"analitik : df/dx = {2.0 * x + 3.0 * y:.8f}, df/dy = {3.0 * x + 2.0 * y:.8f}")
for h in (1e-2, 1e-4, 1e-6, 1e-8, 1e-10):
    print(f"h = {h:.0e} : numerik df/dx = {parsial_x(x, y, h):.8f}, df/dy = {parsial_y(x, y, h):.8f}")
text Keluaran
analitik : df/dx = 7.00000000, df/dy = 8.00000000
h = 1e-02 : numerik df/dx = 7.00000000, df/dy = 8.00000000
h = 1e-04 : numerik df/dx = 7.00000000, df/dy = 8.00000000
h = 1e-06 : numerik df/dx = 7.00000000, df/dy = 8.00000000
h = 1e-08 : numerik df/dx = 6.99999987, df/dy = 8.00000004
h = 1e-10 : numerik df/dx = 7.00000058, df/dy = 8.00000066

Tiga ukuran h h pertama menghasilkan hampiran yang cocok dengan nilai analitik hingga delapan desimal. Pada h=10−8 h = 10^{-8} , angka terakhirnya mulai bergeser, dan pada h=10−10 h = 10^{-10} penyimpangannya semakin terlihat. Penyebabnya bukan rumusnya, melainkan pembulatan floating point pada pengurangan dua nilai fungsi yang hampir sama, sehingga selisihnya kehilangan banyak angka penting. Pemilihan h h selalu merupakan kompromi antara error pemotongan yang mengecil bersama h h dan error pembulatan yang membesar bersama h h .

Aturan turunan tetap berlaku#

Seluruh aturan diferensiasi satu variabel tetap digunakan pada turunan parsial, karena variabel lain hanya berperan sebagai konstanta. Aturan pangkat, aturan hasil kali, dan aturan rantai bekerja tanpa perubahan. Perbedaannya terletak pada pembukuan, yaitu setiap suku perlu diperiksa untuk mengetahui variabel mana yang sedang diturunkan. Tabel berikut merangkum beberapa contoh yang sering muncul.

f(x,y) f(x, y) ∂f∂x \frac{\partial f}{\partial x} ∂f∂y \frac{\partial f}{\partial y}
3x+2y 3x + 2y 3 3 2 2
x2y x^2 y 2xy 2xy x2 x^2
x2+y2 x^2 + y^2 2x 2x 2y 2y
xy2+5 xy^2 + 5 y2 y^2 2xy 2xy

Pada x2y x^2 y , menurunkan terhadap x x memperlakukan y y sebagai konstanta, sehingga hasilnya 2xy 2xy , sedangkan menurunkan terhadap y y menyisakan x2 x^2 . Suatu suku dapat bertahan pada satu arah dan menghilang pada arah lain, sebagaimana konstanta 5 5 yang hilang pada kedua arah. Membiasakan pembukuan dua kolom seperti ini mencegah suku terlewat ketika rumus fungsinya makin panjang.

Di mana hal ini ditemui dalam kode#

Pelatihan neural network menghitung turunan parsial fungsi loss terhadap setiap bobot, dan proses itu bernama backpropagation. Model dengan satu juta bobot menghasilkan satu juta turunan parsial, dan masing-masing menjawab seberapa besar loss berubah bila satu bobot digeser sedikit. Nilai-nilai itu disusun menjadi satu vektor sebagai masukan langkah pembaruan bobot. Tanpa turunan parsial, arah pembaruan bobot tidak dapat ditentukan secara sistematis.

Hampiran selisih terpusat juga muncul dalam kode sebagai gradient check, yaitu pemeriksaan yang membandingkan gradien hasil backpropagation dengan hampiran numeriknya. Selisih yang besar menandakan ada kesalahan implementasi, sehingga pemeriksaan ini lazim dijalankan pada model kecil sebelum pelatihan berskala penuh. Di luar pelatihan, pengaruh satu fitur terhadap keluaran model linear juga dinyatakan sebagai turunan parsial keluaran terhadap fitur tersebut, sehingga konsep ini digunakan pula saat membaca sensitivitas model.

Ringkasan#

  • Turunan parsial ∂f∂x \frac{\partial f}{\partial x} menurunkan f f terhadap satu variabel dengan variabel lain diperlakukan sebagai konstanta, dan hasilnya adalah kemiringan sepanjang sumbu variabel itu.
  • Potongan lintang z=f(x,b) z = f(x, b) mengubah permukaan menjadi kurva satu variabel, dan kemiringannya pada suatu titik adalah turunan parsial di titik tersebut.
  • Hampiran selisih terpusat menghitung turunan parsial dari nilai fungsi saja, dengan ukuran h h yang menyeimbangkan error pemotongan dan error pembulatan.
  • Seluruh aturan turunan satu variabel tetap berlaku, dan hasilnya menjadi bahan baku backpropagation serta pemeriksaan gradient check.

Referensi#