Menggunakan Turunan

Pencarian minimum, maksimum, dan sketsa kurva.

Daftar isi

Topik ini menggunakan turunan untuk dua pekerjaan yang paling sering muncul, yaitu mencari nilai minimum dan maksimum suatu fungsi serta menyusun sketsa kurvanya. Uji turunan pertama dan uji turunan kedua dibahas pada satu contoh utuh, kemudian seluruh langkahnya diverifikasi secara numerik menggunakan NumPy. Setelah membaca, lokasi dan jenis nilai ekstrem suatu fungsi dapat ditentukan secara sistematis, lengkap dengan grafik yang mendukung kesimpulannya.

Titik kritis dan uji turunan pertama#

Titik kritis (critical point) adalah titik cc pada domain yang membuat f′(c)=0f'(c) = 0 atau membuat turunannya tidak terdefinisi. Pada fungsi yang kurvanya mulus, nilai maksimum atau minimum lokal hanya dapat terjadi di titik kritis, karena kenaikan yang berbalik menjadi penurunan harus melewati keadaan kemiringan nol. Aturan dasarnya terdiri atas dua langkah, yaitu menentukan titik kritis dari f′(x)=0f'(x) = 0, kemudian membaca tanda f′f' di kiri dan kanan setiap titik tersebut.

Tanda f′f' menentukan jenisnya secara pasti. Apabila f′f' berubah dari positif ke negatif, fungsi berhenti naik lalu turun sehingga titik itu maksimum lokal, sedangkan perubahan dari negatif ke positif menandai minimum lokal. Sebagai contoh utuh, ambil f(x)=x3−3xf(x) = x^3 - 3x yang turunannya adalah f′(x)=3x2−3f'(x) = 3x^2 - 3. Program berikut mencari akar turunan tersebut dengan np.roots, menilai fungsinya, lalu menyelidiki tanda f′f' pada titik-titik perbandingan.

python Contoh: titik kritis f(x) = x^3 - 3x
import numpy as np

def f(x):
    return x**3 - 3.0 * x

# f'(x) = 3x^2 - 3, koefisien ditulis dari pangkat tertinggi
akar = np.sort(np.roots([3.0, 0.0, -3.0]))
print("titik kritis f'(x) = 0 :", np.round(akar, 6))
for x in akar:
    print(f"f({x:5.3f}) = {f(x):6.3f}")

# perbandingan tanda f' di kiri dan kanan kedua titik kritis
for x in (-2.0, 0.0, 2.0):
    print(f"f'({x:4.1f}) = {3.0 * x**2 - 3.0:8.3f}")
text Keluaran
titik kritis f'(x) = 0 : [-1.  1.]
f(-1.000) =  2.000
f(1.000) = -2.000
f'(-2.0) =    9.000
f'( 0.0) =   -3.000
f'( 2.0) =    9.000

Tiga pembacaan tanda itu membentuk pola lengkap, yaitu f′f' positif pada x=−2x = -2, negatif pada x=0x = 0, lalu positif kembali pada x=2x = 2. Pola naik-turun-naik itu menempatkan maksimum lokal di x=−1x = -1 dengan nilai 22, dan minimum lokal di x=1x = 1 dengan nilai −2-2. Nilai fungsi pada kedua titik kritis pun cocok, sehingga kesimpulan jenis dan lokasinya didukung dua sumber yang berbeda.

Uji turunan kedua#

Uji turunan pertama memerlukan penyelidikan tanda di sekitar setiap titik, sedangkan uji turunan kedua memeriksanya langsung di titik yang bersangkutan. Apabila f′′(c)<0f''(c) < 0, kurva cekung ke bawah sehingga cc adalah maksimum lokal, sedangkan f′′(c)>0f''(c) > 0 menandai minimum lokal. Apabila f′′(c)=0f''(c) = 0, uji ini tidak memberi kesimpulan apa pun dan penyelidikan tanda f′f' perlu dilakukan.

Pada contoh f(x)=x3−3xf(x) = x^3 - 3x, turunan kedua fungsi itu adalah f′′(x)=6xf''(x) = 6x, sehingga nilainya dihitung pada kedua titik kritis. Program berikut menilai f′′f'' melalui beda maju kedua, yakni pendekatan numerik yang sama dengan yang digunakan pada topik turunan tingkat lebih tinggi, kemudian mengelompokkan setiap titik menurut jenisnya.

python Contoh: uji turunan kedua secara numerik
import numpy as np

def f(x):
    return x**3 - 3.0 * x

h = 1e-4
for x in (-1.0, 1.0):
    f2 = round((f(x + h) - 2.0 * f(x) + f(x - h)) / h**2, 6)
    if f2 == 0.0:
        f2 = 0.0
    jenis = "maksimum lokal" if f2 < 0 else "minimum lokal"
    print(f"x = {x:5.2f} : turunan kedua = {f2:8.4f} ({jenis})")
text Keluaran
x = -1.00 : turunan kedua =  -6.0000 (maksimum lokal)
x =  1.00 : turunan kedua =   6.0000 (minimum lokal)

Kesimpulan kedua uji saling menguatkan, yaitu maksimum lokal di x=−1x = -1 dan minimum lokal di x=1x = 1, dengan nilai −6-6 dan 66 yang persis sama dengan rumus 6x6x. Kecocokan ini juga menjadi pemeriksaan bagi beda maju kedua itu sendiri pada kasus polinomial sederhana. Dengan dua alat yang menghasilkan jawaban sama, jenis setiap titik kritis dapat dinyatakan dengan keyakinan yang terukur.

Sketsa kurva dari informasi turunan#

Informasi dari kedua uji itu cukup untuk menggambar sketsa yang sesuai dengan perilaku kurva tanpa menaburkan titik satu per satu. Prosedurnya dapat disusun sebagai berikut.

  1. Cari titik potong sumbu dan titik kritis dari f′(x)=0f'(x) = 0.
  2. Selidiki tanda f′f' antara titik kritis untuk menentukan interval naik dan turun.
  3. Hitung tanda f′′f'' untuk menentukan kelakungan dan titik belok.
  4. Nilai fungsi pada titik-titik penting itu, lalu hubungkan dengan kurva mulus.

Skrip berikut menjalankan prosedur tersebut pada f(x)=x3−3xf(x) = x^3 - 3x dan menggambar hasilnya beserta garis singgung horizontal di kedua titik ekstremnya.

python gambar_sketsa.py
import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return x**3 - 3.0 * x

x = np.linspace(-2.6, 2.6, 300)
fig, ax = plt.subplots(figsize=(6, 3.8))
ax.plot(x, f(x), color="#1a5fb4", label="f(x) = x^3 - 3x")
ax.scatter([-1.0, 1.0], [f(-1.0), f(1.0)], color="#c01c28", zorder=3, label="titik kritis")
# garis singgung horizontal pada kedua titik kritis
ax.plot([-1.6, -0.4], [2.0, 2.0], color="#e66100", linestyle="--", linewidth=1.5)
ax.plot([0.4, 1.6], [-2.0, -2.0], color="#e66100", linestyle="--", linewidth=1.5)
ax.axhline(0.0, color="#000000", linewidth=0.8)
ax.axvline(0.0, color="#000000", linewidth=0.8)
ax.set_ylim(-11.0, 11.0)
ax.set_xlabel("x")
ax.set_ylabel("f(x)")
ax.set_title("Sketsa kurva x^3 - 3x dari informasi turunan")
ax.legend(loc="upper left")
fig.savefig("sketsa-kurva.svg")
Sketsa kurva x^3 - 3x dengan titik kritis dan garis singgung horizontalnya

Gambar yang dihasilkan sesuai dengan seluruh perhitungan sebelumnya, yaitu puncak di (−1,2)(-1, 2) dan lembah di (1,−2)(1, -2) dengan garis singgung yang mendatar, diikuti kurva yang menanjak tajam ke kedua ujungnya. Kurva juga melewati titik asal dengan kelengkungan yang berganti arah, sesuai tanda f′′=6xf'' = 6x yang berubah negatif menjadi positif. Sketsa semacam ini berguna sebagai pemeriksaan visual sebelum perhitungan yang lebih berat dilakukan.

Demo interaktif: menggeser parameter a#

Demo berikut mengatur keluarga fungsi f(x)=x3−axf(x) = x^3 - ax, yang turunannya adalah f′(x)=3x2−af'(x) = 3x^2 - a. Geser penggeser aa dari 33 turun ke 00, lalu amati dua titik hijau yang menandai nilai ekstremnya merapat ke titik asal dan akhirnya lenyap. Kurva merah putus-putus menampilkan turunannya, sehingga lenyapnya titik hijau dapat dibaca langsung dari kurva turunan yang berhenti memotong sumbu horizontal.

Ketika a>0a > 0, kurva merah memotong sumbu pada dua tempat, dan dua titik hijau berada persis di bawah dan atasnya sesuai uji turunan pertama. Ketika a=0a = 0, kurva merah hanya menyentuh sumbu di satu titik tanpa memotongnya, dan kurva biru berubah menjadi kurva naik murni tanpa puncak atau lembah. Pergeseran ini memperlihatkan bahwa nilai ekstrem bukan milik bentuk kurva semata, melainkan hasil perjumpaan antara turunan dan nilai nol, dan jumlahnya dapat berubah karena satu parameter saja.

Di mana hal ini ditemui dalam kode#

Pencarian learning rate pada pelatihan model adalah pencarian minimum dalam bentuk paling nyata. Kurva loss terhadap learning rate memiliki lembah, dan titik terendahnya adalah tempat kemiringan nol sesuai definisi titik kritis pada topik ini. Pelatihan itu sendiri, yaitu gradient descent, bekerja dengan melangkah melawan gradien dan cenderung berhenti di sekitar titik stasioner, sehingga memahami jenis titik kritis membantu menilai apakah pelatihan telah mencapai lembah yang benar atau hanya terjebak pada titik datar.

Masalah yang sama muncul pada penalaan hiperparameter, misalnya memilih ambang atau koefisien regularisasi yang meminimumkan error validasi. Apabila fungsi tujuannya cembung (convex), setiap minimum lokal adalah minimum global, sedangkan fungsi yang tidak cembung dapat memiliki banyak lembah dan puncak yang menipu. Pustaka optimasi menerjemahkan teori itu menjadi angka praktis, yaitu toleransi gradien dan batas iterasi yang mengatur kapan pencarian titik stasioner dihentikan. Metode orde kedua seperti Newton bahkan memanfaatkan kelengkungan untuk mempercepat langkah menuju lembah, dan seluruhnya bertumpu pada informasi yang sama dengan uji turunan pertama dan kedua di atas.

Ringkasan#

  • Titik kritis diperoleh dari f′(x)=0f'(x) = 0, dan tanda f′f' di sekitarnya menentukan jenisnya melalui uji turunan pertama.
  • Uji turunan kedua mengelompokkan titik kritis dari tanda f′′f'', yaitu negatif untuk maksimum lokal dan positif untuk minimum lokal, tetapi tidak menyimpulkan apa pun saat bernilai nol.
  • Sketsa kurva disusun dari titik kritis, interval naik-turun, kelakungan, dan titik belok tanpa menaburkan titik satu per satu.
  • Seluruh uji diperiksa secara numerik menggunakan np.roots untuk akar polinomial dan beda maju kedua untuk turunan keduanya.

Referensi#