Penyiapan Lingkungan

Menyiapkan sandbox Python dengan NumPy dan matplotlib, serta memplot fungsi pertama.

Daftar isi

Topik ini menyiapkan lingkungan kerja numerik yang digunakan sepanjang jalur, yaitu Python dengan pustaka NumPy dan matplotlib. Pemeriksaan dimulai dari versi interpreter dan pustaka, dilanjutkan dengan skrip uji pertama, dan diakhiri dengan grafik fungsi kuadrat beserta demo interaktif koefisiennya. Setelah topik ini selesai, seluruh contoh pada jalur ini dapat dijalankan ulang di lingkungan sendiri, lengkap dengan pembanding versinya.

Memeriksa interpreter dan pustaka#

Jalur ini menggunakan Python 3 dengan NumPy sebagai kalkulator dan matplotlib sebagai penggambar grafik. Lingkungan uji yang terisolasi (sandbox) dapat berupa instalasi Python di komputer sendiri maupun layanan notebook daring, dan keduanya memenuhi syarat selama versinya sesuai. Langkah pertama memastikan interpreter Python terpasang dan versinya dikenali.

bash
# memeriksa versi python yang terpasang
python3 --version
text Keluaran
Python 3.12.16

Perintah kedua mengimpor kedua pustaka sekaligus, lalu mencetak nomor versinya. Kedua pustaka sengaja disebut pada satu perintah agar pemeriksaannya ringkas. Apabila perintah ini berakhir dengan pesan error ModuleNotFoundError, pustaka yang disebut belum terpasang pada interpreter yang sedang digunakan.

bash
# memeriksa versi numpy dan matplotlib sekaligus
python3 -c "import numpy, matplotlib; print(numpy.__version__, matplotlib.__version__)"
text Keluaran
2.1.3 3.9.2

Keluaran di atas berasal dari sandbox tempat jalur ini ditulis, yaitu Python 3.12.16 dengan NumPy 2.1.3 dan matplotlib 3.9.2. Versi pada lingkungan sendiri boleh berbeda, asalkan nomor utamanya sama atau lebih baru. Pustaka yang belum terpasang ditambahkan menggunakan pengelola paket pip melalui perintah pip install numpy matplotlib.

Skrip pemeriksaan pertama#

Pemeriksaan versi layak disimpan sebagai berkas agar dapat dijalankan ulang kapan pun. Nama berkasnya ditulis dengan huruf kecil tanpa spasi, kebiasaan yang memudahkan pengetikan pada terminal. Berkas berikut sekaligus menguji perhitungan NumPy menggunakan teorema Pythagoras pada segitiga bersisi 3 dan 4, yang jawabannya sudah diketahui, yaitu 5. Buat berkas cek_lingkungan.py dengan isi berikut, kemudian jalankan dengan perintah python3 cek_lingkungan.py.

python cek_lingkungan.py
import numpy as np
import matplotlib

print(f"NumPy      : {np.__version__}")
print(f"matplotlib : {matplotlib.__version__}")

# uji kecil: teorema Pythagoras pada segitiga bersisi 3 dan 4
sisi = np.array([3.0, 4.0])
miring = np.sqrt((sisi ** 2).sum())
print(f"Sisi miring segitiga 3-4-5: {miring}")
text Keluaran
NumPy      : 2.1.3
matplotlib : 3.9.2
Sisi miring segitiga 3-4-5: 5.0

Keluaran menampilkan kedua versi pustaka dan angka 5.0 sebagai hasil perhitungan. Angka 5.0 yang muncul persis menandakan NumPy bekerja dengan benar, karena hasil yang menyimpang pada uji sesederhana ini pasti berasal dari lingkungan, bukan dari rumusnya. Apabila versi pada keluaran berbeda, catat nilainya karena perbedaan versi merupakan penyebab paling umum dari keluaran yang sedikit berbeda. Catatan versi seperti ini juga menjadi kelengkapan penting ketika hasil perhitungan perlu direproduksi kembali oleh pihak lain pada waktu berbeda. Mulai saat ini, setiap keluaran contoh pada jalur ini dapat dibandingkan dengan hasil di lingkungan sendiri.

Memplot fungsi pertama#

matplotlib menggambar fungsi dengan mengevaluasinya pada ratusan nilai xx, kemudian menghubungkan hasilnya menjadi kurva. Perintah np.linspace(-2.0, 4.0, 400) membagi rentang -2 sampai 4 menjadi 400 titik yang berjarak sama, jumlah yang cukup agar kurva terlihat halus. Agg dipilih sebagai backend karena bekerja tanpa jendela tampilan, sedangkan savefig menyimpan hasilnya sebagai berkas fungsi-kuadrat.svg pada folder kerja. Fungsi pertama yang dipilih adalah f(x)=x2−4x+3f(x) = x^2 - 4x + 3, sebuah fungsi kuadrat sederhana yang bentuknya mudah dikenali.

python plot_fungsi.py
import numpy as np
import matplotlib

matplotlib.use("Agg")  # backend tanpa jendela, cocok untuk menyimpan berkas
import matplotlib.pyplot as plt

x = np.linspace(-2.0, 4.0, 400)   # 400 titik dari -2 sampai 4
y = x ** 2 - 4 * x + 3            # f(x) = x^2 - 4x + 3

plt.figure(figsize=(6, 3))
plt.plot(x, y)
plt.axhline(0, color="gray", linewidth=0.8)
plt.axvline(0, color="gray", linewidth=0.8)
plt.title(r"$f(x) = x^2 - 4x + 3$")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.tight_layout()
plt.savefig("fungsi-kuadrat.svg")

Kurva yang dihasilkan ditampilkan pada gambar berikut.

Grafik fungsi kuadrat yang memotong sumbu horizontal di x = 1 dan x = 3

Pembacaan pertama dilakukan secara visual tanpa aljabar. Kurva memotong sumbu horizontal di sekitar x=1x = 1 dan x=3x = 3, serta mencapai titik terendah di sekitar x=2x = 2. Hitungan cepat memverifikasi bacaan tersebut, yaitu f(1)=1−4+3=0f(1) = 1 - 4 + 3 = 0, f(3)=9−12+3=0f(3) = 9 - 12 + 3 = 0, dan f(2)=4−8+3=−1f(2) = 4 - 8 + 3 = -1. Pola kerja visual dahulu, lalu simbol, kemudian verifikasi inilah yang digunakan sepanjang jalur.

Mengubah koefisien untuk membangun intuisi#

Fungsi kuadrat memiliki bentuk umum f(x)=ax2+bx+cf(x) = ax^2 + bx + c, dan setiap koefisiennya memberi efek berbeda pada bentuk kurva. Alih-alih membaca daftar efeknya terlebih dahulu, demo berikut menyediakan tiga penggeser untuk mengubah setiap koefisien secara langsung. Geser setiap penggeser perlahan, kemudian amati arah perubahan kurvanya sebelum membaca penjelasannya.

Dari demo tersebut, efek ketiga koefisien dapat dirangkum sebagai berikut. Nilai aa menentukan arah bukaan, yaitu kurva terbuka ke atas selama aa positif dan terbalik ke bawah ketika aa negatif, sedangkan besarnya aa mengatur kelancipan kurva. Nilai cc mengangkat atau menurunkan seluruh kurva tanpa mengubah bentuknya, sedangkan nilai bb menggeser posisi puncak secara diagonal. Apabila aa dinolkan, kelengkungan hilang dan kurvanya berubah menjadi garis lurus, sesuai sifat fungsi linear.

Intuisi visual seperti ini menjadi bekal saat koefisien yang sama muncul dalam konteks lain, misalnya pada jarak dan lintasan. Grafik menunjukkan lebih dulu apa yang terjadi, lalu aljabar menjelaskan mengapa hal itu terjadi. Urutan tersebut adalah urutan yang digunakan di seluruh jalur ini.

Di mana hal ini ditemui dalam kode#

Pemeriksaan lingkungan dan penyimpanan grafik terlihat sederhana, tetapi kedua polanya muncul hampir di semua proyek numerik. Pola yang sama berlaku dari proyek kecil sampai sistem besar, yang berubah hanya skalanya. Bentuk yang paling umum adalah sebagai berikut:

  • Pipeline continuous integration menjalankan pemeriksaan versi pustaka sebelum pengujian dimulai, dengan pola yang sama seperti cek_lingkungan.py.
  • Proyek machine learning mencatat versi NumPy dan matplotlib agar pelatihan dapat direproduksi dengan hasil yang sama.
  • Laporan data menyimpan grafik sebagai berkas SVG atau PNG melalui savefig, karena server laporan tidak memiliki layar untuk plt.show().
  • Dasbor eksplorasi parameter menggunakan penggeser yang mengubah koefisien secara langsung, persis seperti demo pada topik ini.

Semua contoh pada jalur ini ditulis untuk versi pustaka yang diperiksa di awal topik. Apabila keluaran di lingkungan sendiri sedikit berbeda, periksa dahulu nomor versinya sebelum menyalahkan rumus atau kodenya. Kebiasaan kecil ini menghemat waktu penelusuran yang dapat menjadi panjang.

Ringkasan#

  • Versi interpreter dan pustaka diperiksa terlebih dahulu, lalu disimpan sebagai skrip yang dapat dijalankan ulang.
  • Uji kecil dengan jawaban yang sudah diketahui, seperti Pythagoras pada segitiga 3-4-5, memastikan lingkungan bekerja dengan benar.
  • Grafik fungsi dibuat dengan mengevaluasi fungsi pada ratusan titik xx, kemudian disimpan melalui savefig ke berkas SVG.

Referensi#