Polinomial adalah penjumlahan suku berbentuk dengan pangkat berupa bilangan bulat tidak negatif, misalnya . Topik ini membahas struktur dan derajat polinomial, makna akar, hubungan akar dengan pemfaktoran, serta penghitungan akar secara numerik menggunakan np.roots. Akar polinomial banyak digunakan di dalam kode, mulai dari perhitungan waktu tumbukan pada fisika permainan sampai fungsi hash polinomial pada pencarian teks.
Struktur dan derajat polinomial#
Polinomial dalam satu variabel ditulis dalam bentuk baku, yaitu urutan suku dari pangkat tertinggi ke pangkat nol. Bentuk umumnya adalah sebagai berikut.
Setiap suku memiliki koefisien dan pangkat. Derajat polinomial adalah pangkat tertinggi yang koefisiennya tidak nol, dan koefisien suku itu disebut koefisien utama. Polinomial dikelompokkan menurut derajatnya karena perilaku tiap kelompok berbeda.
| Derajat | Nama lazim | Contoh |
|---|---|---|
| 1 | linear | |
| 2 | kuadratik | |
| 3 | kubik |
Dua hal kecil pada struktur ini berpengaruh besar saat komputasi. Pertama, banyak fungsi NumPy mengharapkan koefisien dalam urutan pangkat tertinggi, sehingga polinomial yang ditulis acak perlu diurutkan dahulu. Kedua, suku dengan koefisien nol tetap harus ditulis pada daftar koefisien karena posisinya menentukan derajat. Polinomial yang tidak memuat suku tetap ditulis sebagai urutan koefisien 1, 0, dan 1.
Akar dan hubungannya dengan faktor#
Akar polinomial adalah nilai yang membuat polinomial bernilai nol, yaitu . Pada grafik, akar adalah titik potong kurva dengan sumbu mendatar. Gambar berikut memperlihatkan parabola yang memotong sumbu mendatar pada dan .
Akar berkaitan erat dengan faktor melalui teorema faktor. Nilai adalah akar jika dan hanya jika merupakan faktor dari . Dengan demikian, mencari akar dan memfaktorkan adalah dua arah dari perubahan bentuk yang sama. NumPy menghitung akar dari daftar koefisien tanpa membedakan derajatnya.
import numpy as np
koef = [1.0, -5.0, 6.0]
akar = np.roots(koef)
print("akar :", akar)
print("nilai p(x) :", np.polyval(koef, akar))akar : [3. 2.]
nilai p(x) : [8.8817842e-16 8.8817842e-16]Akar yang dikembalikan adalah 3 dan 2, sesuai dengan titik potong pada grafik. Nilai nilai p(x) berupa , bilangan yang sangat dekat dengan nol tetapi tidak persis nol akibat pembulatan pecahan biner. Nilai sebesar itu dibaca sebagai nol pada praktik pemrograman, dan perbandingannya cukup dilakukan dengan toleransi seperti pada np.allclose.
Pemfaktoran dan pola umum#
Memfaktorkan polinomial berarti menulis ulang penjumlahannya menjadi perkalian beberapa faktor. Teorema faktor memberikan resep langsung dari akar. Polinomial yang akarnya 2 dan 3 dapat ditulis sebagai berikut.
Beberapa pola faktorisasi muncul begitu sering sehingga layak dihafal. Selisih dua kuadrat difaktorkan sebagai , dan kuadrat sempurna mengikuti pola . Perkalian polinomial bergerak ke arah sebaliknya, yaitu dari faktor ke bentuk baku, dan NumPy menyediakan np.polymul untuk memeriksanya.
import numpy as np
hasil = np.polymul([1, -2], [1, -3])
print("(x - 2)(x - 3) =", hasil)(x - 2)(x - 3) = [ 1 -5 6]Keluaran [ 1 -5 6] adalah daftar koefisien untuk , sehingga faktorisasi manual terbukti benar. Pola pemeriksaan dua arah ini berguna untuk latihan aljabar maupun untuk memverifikasi rumus yang diturunkan di dalam program.
Akar kompleks dan perilaku numerik#
Tidak setiap polinomial memiliki akar real. Polinomial tidak pernah bernilai nol untuk bilangan real mana pun karena hasil kuadrat selalu tidak negatif. Akarnya berupa bilangan kompleks, yaitu dan dengan . NumPy mengembalikan akar semacam ini sebagai bilangan kompleks tanpa perlu pengaturan tambahan, dan akar real dari polinomial berderajat ganjil tetap dihitung dengan benar sebagaimana pada contoh kubik berikut.
import numpy as np
print("akar x^2 + 1 :", np.roots([1.0, 0.0, 1.0]))
print("akar kubik :", np.roots([1.0, -6.0, 11.0, -6.0]))akar x^2 + 1 : [-0.+1.j 0.-1.j]
akar kubik : [3. 2. 1.]Huruf j pada keluaran menyatakan satuan bilangan imajiner. Dua hal praktis perlu diperhatikan saat menggunakan hasil ini. Akar kompleks muncul berpasangan, sehingga kehadirannya menandakan kurva tidak memotong sumbu mendatar pada bagian itu. Selain itu, akar hasil perhitungan numerik dapat membawa noise pembulatan, misalnya 2.0000000000000004 sebagai pengganti 2, sehingga kode yang membandingkan akar dengan nilai target selalu menggunakan toleransi dan bukan kesetaraan persis.
Di mana hal ini ditemui dalam kode#
Akar polinomial adalah alat kerja, bukan sekadar latihan. Fisika permainan menghitung waktu tumbukan dengan menyetarakan posisi dua objek, dan hasil penyetaraannya sering berupa polinomial kuadratik dalam waktu. Akar persamaan itu adalah saat tumbukan terjadi, sehingga mesin permainan memanggil perhitungan akar setiap detak layar. Pencarian teks menggunakan rolling hash, yaitu fungsi hash polinomial yang menilai string sebagai polinomial dengan basis tertentu modulo bilangan prima. Pola ini membuat pergeseran jendela pencarian hanya membutuhkan operasi konstan per langkah. Pada machine learning, penambahan fitur pangkat (polynomial features) memperluas model linear dengan suku kuadratik dan kubik, dan membaca kembali koefisiennya membutuhkan pemahaman struktur polinomial yang sama.
Ringkasan#
- Derajat polinomial adalah pangkat tertinggi yang koefisiennya tidak nol, dan daftar koefisiennya diurutkan dari pangkat tertinggi pada fungsi NumPy.
- Akar adalah nilai yang membuat polinomial bernilai nol, dan teorema faktor mengaitkan setiap akar dengan faktor .
np.rootsmenghitung seluruh akar termasuk yang kompleks, dannp.polymulmemeriksa hasil perkalian faktor ke bentuk baku.- Perbandingan akar numerik selalu menggunakan toleransi karena pembulatan pecahan biner.
Referensi#
- Dokumentasi NumPy 2.1 — NumPy
— Rujukan fungsi
np.roots,np.polyval, dannp.polymulyang digunakan untuk menghitung serta memeriksa polinomial. - Buku teks matematika terbuka — OpenStax — Buku teks terbuka yang membahas polinomial, teorema faktor, dan pola pemfaktoran secara bertahap.