Polinomial dan Pemfaktoran

Akar polinomial dan maknanya pada pemrograman.

Daftar isi

Polinomial adalah penjumlahan suku berbentuk axka x^k dengan pangkat kk berupa bilangan bulat tidak negatif, misalnya x2−5x+6x^2 - 5x + 6. 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.

p(x)=anxn+an−1xn−1+⋯+a1x+a0p(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_1 x + a_0

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.

DerajatNama lazimContoh
1linear2x−42x - 4
2kuadratikx2−5x+6x^2 - 5x + 6
3kubikx3−8x^3 - 8

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 x2+1x^2 + 1 yang tidak memuat suku xx tetap ditulis sebagai urutan koefisien 1, 0, dan 1.

Akar dan hubungannya dengan faktor#

Akar polinomial adalah nilai rr yang membuat polinomial bernilai nol, yaitu p(r)=0p(r) = 0. Pada grafik, akar adalah titik potong kurva dengan sumbu mendatar. Gambar berikut memperlihatkan parabola y=x2−5x+6y = x^2 - 5x + 6 yang memotong sumbu mendatar pada x=2x = 2 dan x=3x = 3.

Parabola y = x^2 - 5x + 6 memotong sumbu mendatar pada dua akarnya

Akar berkaitan erat dengan faktor melalui teorema faktor. Nilai rr adalah akar p(x)p(x) jika dan hanya jika (x−r)(x - r) merupakan faktor dari p(x)p(x). Dengan demikian, mencari akar dan memfaktorkan adalah dua arah dari perubahan bentuk yang sama. NumPy menghitung akar dari daftar koefisien tanpa membedakan derajatnya.

python Contoh: menghitung akar polinomial dengan np.roots
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))
text Keluaran
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 8,88×10−168{,}88 \times 10^{-16}, 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 x2−5x+6x^2 - 5x + 6 yang akarnya 2 dan 3 dapat ditulis sebagai berikut.

x2−5x+6=(x−2)(x−3)x^2 - 5x + 6 = (x - 2)(x - 3)

Beberapa pola faktorisasi muncul begitu sering sehingga layak dihafal. Selisih dua kuadrat difaktorkan sebagai a2−b2=(a+b)(a−b)a^2 - b^2 = (a + b)(a - b), dan kuadrat sempurna mengikuti pola a2+2ab+b2=(a+b)2a^2 + 2ab + b^2 = (a + b)^2. Perkalian polinomial bergerak ke arah sebaliknya, yaitu dari faktor ke bentuk baku, dan NumPy menyediakan np.polymul untuk memeriksanya.

python Contoh: memeriksa hasil faktorisasi dengan np.polymul
import numpy as np

hasil = np.polymul([1, -2], [1, -3])
print("(x - 2)(x - 3) =", hasil)
text Keluaran
(x - 2)(x - 3) = [ 1 -5  6]

Keluaran [ 1 -5 6] adalah daftar koefisien untuk x2−5x+6x^2 - 5x + 6, 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 x2+1x^2 + 1 tidak pernah bernilai nol untuk bilangan real mana pun karena hasil kuadrat selalu tidak negatif. Akarnya berupa bilangan kompleks, yaitu ii dan −i-i dengan i2=−1i^2 = -1. 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.

python Contoh: akar kompleks dan akar polinomial kubik
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]))
text Keluaran
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 rr dengan faktor (x−r)(x - r).
  • np.roots menghitung seluruh akar termasuk yang kompleks, dan np.polymul memeriksa hasil perkalian faktor ke bentuk baku.
  • Perbandingan akar numerik selalu menggunakan toleransi karena pembulatan pecahan biner.

Referensi#