Persamaan kubik dan topik penelitian di seputar bentuk kubik biner

Saya temukan di statistik blog ini kata kunci pencarian tentang bilangan imajiner berkenaan dengan posting terdahulu tentang sejarah dan filosofi bilangan imajiner. Kemunculan bilangan imajiner secara historis tidak bisa dipisahkan dari upaya penanganan persamaan kubik, baik melalui metode geometris (seperti salah satunya terdapat di posting ini), maupun secara aljabar seperti melalui trik persamaan depressed cubic atau formula kubik homogen melalui persamaan Ferro-Tartaglia. Ringkasan penyelesaian persamaan kubik tersebut dalam tiga langkah telah saya tulis pada posting sebelumnya. Pembaca juga mungkin tertarik dengan beberapa fitur dari \omega pada posting tersebut :

\omega = \frac{-1 + \sqrt{-3}}{2},

bila dikuadratkan menjadi :

\omega^{2} = \frac{-1 - \sqrt{-3}}{2}.

Lebih jauh didapatkan :

\omega + \omega^{2} = -1, \omega - \omega^{2} = \sqrt{-3}, dan \omega^{3} = 1.

Penggunaan notasi \omega bisa diterapkan tidak hanya pada persamaan kubik homogen yang melibatkan satu atau dua variabel (kubik biner), tapi juga persamaan kubik dengan banyak variabel. Sebagaimana G. H. Hardy dan J. E. Littlewood di tahun 1923 mengemukakan sebuah conjecture mengenai formula aymptotic untuk bilangan prima dalam representasi kubik triple (x^3, y^3, z^3). Sebagai contoh, persamaan kubik triple dapat dinyatakan sebagai berikut :

x^3+2y^3+4z^3-6xyz,

dengan vektor (x,y,z)\in \mathit{C} \subseteq \mathbb{R}^3. Untuk setiap vektor \beta (a,b,c) :

\beta = a + b\sqrt[3]{2} + c\sqrt[3]{4}

dalam grup multiplikatif \mathbb{Z}[\sqrt[3]{2}], berlaku :

\beta' = a + b\omega \sqrt[3]{2} + c\omega^2 \sqrt[3]{4}

Notasi \omega ini cukup baik digunakan untuk melihat hubungan antara bilangan integer tertentu, yaitu misalnya \alpha \in \mathbb{Z}[\sqrt[3]{2}] dengan \beta, bila \textup{gcd}(\alpha, q)=1, artinya \alpha dan q coprime, dan untuk melihat formula asymptotic bilangan prima untuk \beta \equiv \alpha modulo q dalam grup multiplikatif \mathbb{Z}[\sqrt[3]{2}]. Bagian ini dikenal dengan Hecke Grössencharacter dan penggunaannya cukup baik didiskusikan dalam topik penelitian tentang representasi bilangan prima dalam polinomial kubik.

Namun untuk permulaan kita akan mulai dengan sedikit telaah tentang persamaan kubik untuk kasus semua akar kubiknya adalah riil yang, di posting sebelumnya tertulis, bersesuaian dengan kasus pertama. Dalam bentuk yang paling sederhana, dapat kita tulis : bila s adalah suatu bilangan riil dan r adalah akar kubik riil dari s maka persamaan :

x^3-s=(x-r)(x-r\omega)(x-r\omega^2)=0

mempunyai tiga buah penyelesaian, yaitu r, r\omega, dan r\omega^2. Nanti penyelesaian persamaan ini akan kita terapkan untuk penyelesaian bentuk umum persamaan kubik dengan akar kubik riil.

Bentuk umum persamaan kubik satu variabel adalah sebagai berikut :

K = ax^3 + bx^2 + cx^2 + d.

Atau :

K = x^3 + \alpha x^2 + \beta x^2 + \gamma,

untuk \alpha =b/a, \beta = c/a, \gamma = d/a.

Tartaglia menemukan trik dengan mensubstitusikan : x = y - \alpha /3, untuk mendapatkan persamaan kubik depresi :

KD = y^3 - 3py - 2q = 0,

dimana :

p = \frac{\alpha^{2}-3\beta}{9}, dan q = \frac{-2\alpha^2 + 9\alpha \beta - 27\gamma}{54}.

Untuk membuat persamaan parameter terhadap bentuk kubik homogen KD tersebut, dimisalkan u dan v sebagai akar-akar dari persamaan kuadrat Q_1 = z^2-yz+p. Maka u+v=y dan uv=p. Disubstitusikan ke KD=y^3-3py-2q=0 menjadi :

u^3+v^3 + 3(uv-p)(u+v)-2q=0,

atau

u^3+v^3 = 2q.

Karena perkalian dari dua kubik u^{3}v^{3} = p^3, maka u^3 dan v^3 juga merupakan akar-akar dari persamaan kuadrat lain, yaitu : Q_2 = w^2 - 2qw + p^3 = 0, dengan :

u^3=q+\sqrt{q^2-p^3} dan v^3=q-\sqrt{q^2-p^3}

Jadi x = y - \alpha /3 = u + p/u - \alpha /3, dimana :

u = \sqrt[3]{q+\sqrt{q^2-p^3}}.

Bila u_1 adalah salah satu akar kubik, maka akar-akar yang lainnya adalah u_1\omega dan u_1\omega^2 . Misalkan v_1 = p/u_1 maka :

u_1\omega + p/(u_1\omega)= u_1\omega + v_1\omega^2

u_1\omega^2 + p/(u_1\omega^2)= u_1\omega^2 + v_1\omega.

Jadi persamaan kubik mempunyai 3 buah penyelesaian :

u_1+v_1 - \alpha/3;

u_1 \omega + v_1 \omega^2 - \alpha/3; dan

u_1\omega^2+v_1\omega-\alpha/3.

Dan ini berlaku untuk q^2-p^3 > 0, yaitu kasus dimana akar kubik adalah akar kubik riil.

Persamaan Kubik Biner

Perluasan ke bentuk-bentuk persamaan kubik biner adalah sangat mungkin dan ini merupakan topik penelitian yang masih hangat didiskusikan baik di area analisis maupun teori bilangan. Bentuk persamaan kubik biner adalah sebagai berikut :

K(x,y) = ax^3 + bx^2y + cxy^2 + dy^3,~~~a,b,c,d \in \mathbb{Z}

dengan diskriman :

D = b^2c^2-27a^2d^2+18abcd-4ac^3-4b^3d.

Untuk mendapatkan akar-akar riil, diambil D > 0 dan y=1. Jadi persamaan kubik menjadi :

K = ax^3 + bx^2 + cx + d.

dengan bentuk Hessian :

H_K(x,y)=-\frac{1}{4}\begin{vmatrix}  \partial^2K/(\partial x \partial x) & \partial^2K/(\partial x \partial y) \\  \partial^2K/(\partial x \partial x) & \partial^2K/(\partial y \partial y)  \end{vmatrix} = -\frac{1}{4}\begin{vmatrix}  6ax + 2by & 2bx + 2cy \\  2bx + 2cy & 2cx + 6dy  \end{vmatrix}

setelah dihitung dan disederhanakan menjadi :

H_K(x,y)=(b^2-3ac)x^2+(bc-9ad)xy+(c^2-3bd)y^2,

atau

H_K(x,y)= Q(x,y) = Q_1x^2+Q_2xy + Q_3y^2

dimana :

Q_1=b^2-3ac, Q_2=bc-9ad, dan Q_3=c^2-3bd. Bentuk Hessian ini memiliki diskriminan 3 kali negatif diskriman bentuk kubiknya, yaitu :

\textup{disc}(H_K(x,y))=Q_2^2-4Q_1Q_3=-3D

Definisi :

Bentuk Hessian dari kubik biner K, atau H_K(x,y)=Q_n(K) dikatakan reducible jika \left | Q_2 \right | \leq Q_1 \leq Q_3, dan Q_3>0. Bentuk kubik biner K(x,y) adalah reducible jika H_K(x,y)=Q_n(K) adalah juga reducible dan memenuhi beberapa kondisi berikut :

  • Jika b=0 maka a>0, b\geq 0 dan d<0.
  • Jika Q_1=Q_2, maka b < \left | 3a-b \right |.
  • Jika Q_1=Q_3, maka a \leq d dan b<\left | c \right | jika \left | d \right |=a.

Contoh 1. Bentuk kubik biner x^3+2y^3 mempunyai a=1, b=c=0, dan d=2; Q_1=0, Q_2=-18, dan Q_3=0. Karena \left | Q_2 \right | > Q_1 maka bentuk kubik biner x^3+2y^3 termasuk irreducible. Lebih jauh D=-108<0 yang berarti bentuk kubik biner ini tidak mempunyai satu pun akar kubik riil.

Ide dari reduksi bentuk polinomial ialah bentuk yang berbeda adalah equivalen melalui pertukaran basis. Dalam konteks biner dikenal ada dua grup matrix yang bertanggungjawab dalam menangani pertukaran basis, yaitu SL_2(\mathbb{Z}) dan GL_2(\mathbb{Z}).

Definisi :

SL_2(\mathbb{Z}) adalah grup matrix \bigl(\begin{smallmatrix}  a & b\\  c & d  \end{smallmatrix}\bigr) dengan koefisien integer sedemikian sehingga ad-bc=1.

GL_2(\mathbb{Z}) adalah grup matrix \bigl(\begin{smallmatrix}  a & b\\  c & d  \end{smallmatrix}\bigr) dengan koefisien integer sedemikian sehingga ad-bc=\pm 1.

Teorema :

Setiap bentuk kubik biner yang irreducible adalah ekuivalen terhadap bentuk kubik reducible tertentu (unik) melalui aksi pertukaran basis GL_2(\mathbb{Z})

Bukti : Lihat Corollary 3.3 di Belabas [1].

Dalam tulisan ini digunakan definisi reduksi bentuk Hessian untuk menghasilkan bentuk kubik biner yang reducible. Lebih jauh bentuk kubik (cubic forms) adalah bentuk sekawan dari cubic fields, melalui cubic rings; yaitu, terdapat bijeksi antara cubic forms dan cubic rings.

Contoh 2. Bentuk kubik biner pada contoh 1, bisa ditulis menjadi ax^3+dy^3, juga bersesuaian dengan cubic ring :

\mathbb{Z}+\mathbb{Z}\alpha +\mathbb{Z}\beta,

dimana : \alpha\beta=-ad; \alpha^2=-\alpha\beta; \beta^2=d\alpha; \alpha^3=a^2d; dan \beta^3=-ad^2.

Jika a=1 maka cubic ring ini adalah isomorphic terhadap \mathbb{Z}[\sqrt[3]{d}], dan jika d=1 maka ring ini isomorphic terhadap \mathbb{Z}[\sqrt[3]{a}].

Referensi dan Sumber Bacaan

[1] Belabas, K. 1997. A Fast Algorithm to Compute Cubic Fields. Mathematics of Computation.

[2] D.R. Heath-Brown. 2001. Primes represented by x^3+2y^3. Acta Mathematica.

[3] D.R. Heath-Brown dan B.Z. Moroz. 2002. Primes represented by binary cubic forms. Proceedings of the London Mathematical Society.

[4] D.R. Heath-Brown dan B.Z. Moroz. 2004. On the representation of primes by cubic polynomial in two variables. Proceedings of the London Mathematical Society.

Distribusi bilangan prima dan fungsi zeta Riemann

Distribusi bilangan prima, atau yang dihitung dengan prime counting function, \pi(x), yaitu jumlah bilangan prima kurang dari atau sama dengan x, kalau diplot hasilnya tampak berupa step function, untuk setiap muncul bilangan prima terjadi kenaikan satu tahap ke atas. Di library mpmath, prime counting function dinyatakan dengan fungsi primepi(). Sebagai contoh untuk membuat plot terhadap distribusi bilangan prima \leq 100 :

from mpmath import *
plot([primepi], [0,100])

hasilnya :

primepi 100

Untuk distribusi bilangan prima \leq 1000 hasil plotnya tampak lebih halus :

primepi 1000

Semakin luas x semakin halus hasil plotnya. Untuk pendekatan lainnya, secara eksak, \pi (x) juga bisa dinyatakan dengan fungsi R (x) dari Riemann, yang dihitung dengan deret Gram,

R(x)=1+\sum_{k=1}^{\infty}\frac{(\ln x)^{k}}{kk!\zeta(k+1)}

Di mana \zeta(k+1) adalah fungsi zeta Riemann.

Fungsi Zeta Riemann pada bidang kompleks

Dari gambar di atas terlihat beberapa nilai zero untuk fungsi zeta Riemann pada bidang kompleks, yang terbagi menjadi trivial zero dan nontrivial zero. Untuk menghitung nontrivial zero di mpmath digunakan fungsi zetazero(). Di IPython saya gunakan kode dari library mpmath untuk menghitung nontrivial zero kesatu sampai dengan kelima sebagai berikut :

In [1]: from mpmath import *
In [2]: mp.dps = 25; mp.pretty = True
In [3]: zetazero(1)
Out[3]: (0.5 + 14.13472514173469379045725j)
In [4]: zetazero(2)
Out[4]: (0.5 + 21.02203963877155499262848j)
In [5]: zetazero(3)
Out[5]: (0.5 + 25.01085758014568876321379j)
In [6]: zetazero(4)
Out[6]: (0.5 + 30.4248761258595132103119j)
In [7]: zetazero(5)
Out[7]: (0.5 + 32.93506158773918969066237j)

Tabel zero fungsi zeta Riemann yang dikompilasi oleh Andrew Odlyzko bisa dilihat di halaman ini.

Ketika Riemann mempelajari distribusi bilangan prima ia memperluas fungsi zeta Euler (yang didefinisikan hanya untuk s pada bagian real saja yang lebih besar dari satu), menjadi :

\zeta(s) = 1 + \frac{1}{2^s} + \frac{1}{3^s} + \frac{1}{4^s} + \frac{1}{5^s} + ... = \sum_{n=1}^{\infty}\frac{1}{n^s}

Untuk semua bidang kompleks dengan kutub s = 1. Trivial zero merupakan bilangan genap negatif, -2, -4, -6, … Nontrivial zero yang saat ini diketahui terletak pada critical strip 0 < \textup{Re}[s] < 1, dan selalu muncul dengan pasangan complex-conjugate. Hipotesis Riemann menyatakan bahwa semua nontrivial zero terletak pada garis kritis \textup{Re}[s] = 1/2. (Catatan : Semua nontrivial zero yang diketahui saat ini terletak pada garis kritis tersebut).

Di library mpmath, distribusi bilangan prima dengan pendekatan fungsi zeta Riemann dinyatakan dengan fungsi riemannr() dan untuk membuat plot terhadap fungsi tersebut :

from mpmath import *
plot([riemannr], [0,100])

Hasil plotnya :

riemannr mpmath 100

Perbedaan antara fungsi prime counting dan pendekatan fungsi Riemann R(x) yaitu kenampakan fluktuasi pada distribusi bilangan prima, yang di fungsi Riemann dapat dinyatakan dalam pengertian seluruh zero fungsi zeta Riemann, yang kemudian dinyatakan dengan notasi \rho via fungsi R itu sendiri :

R(x)-\pi(x)=\sum_{\rho}R(x^{\rho})

Beberapa nilai dari x^{\rho} adalah bilangan kompleks, jadi R di sini merupakan analytic continuation dari nilai real fungsi R. Selanjutnya x^{\rho} bisa dinyatakan menjadi bagian trivial zero dan nontrivial zero, bagian pertama :

R(x^{-2}) + R(x^{-4}) + R(x^{-6}) + ...,

dan bagian kedua dapat ditulis,

\sum_{k=1}^{\infty}[R(x^{\rho_{k}})+R(x^{\rho_{-k}})]

Kontribusi dari masing-masing pasangan complex-conjugate \rho_{k} dan \rho_{-k}=\overline{\rho_{k}} saling menghilangkan bagian imajinernya satu sama lain sehingga :

\pi(x)=R(x)-\sum_{m=1}^{\infty}R(x^{-2m})+\sum_{k=1}^{\infty}T_{k}(x)

dimana :

T_{k}(x)=-R(x^{\rho_{x}})-(R(x^{\rho_{-x}})

adalah nilai real.

Dan akhirnya dapatlah kita definisikan perurutan fungsi R_n(x) yang mendekati \pi(x) pada limit:

R_{n}(x)=R(x)-\sum_{m=1}^{\infty}R(x^{-2m})+\sum_{k=1}^{n}T_{k}(x).

Menggambar Sketsa Bunga Mawar di Python

Bunga mawar (rose) sering dijadikan subjek dalam berbagai karya seni, seperti potret, ilustrasi, lukisan dan juga sebagai subjek atau oranemen dalam arsitektur. Pelukis Perancis, Pierre-Joseph Redouté, terkenal dengan lukisan berbagai jenis bunga mawar yang digambar dengan sangat teliti. Nah, saya di sini tidak akan menggambar bunga mawar sedetail sang pelukis, atau bunga mawar sebagaimana alaminya, tetapi hanya akan menggambar sketsa bunga mawar saja dengan persamaan matematika dibantu dengan bahasa pemrograman Python.

Terinspirasi beberapa bentuk persamaan matematika dari gambar sketsa bunga mawar di halaman web Eric R. Weeks (ditulis dalam gawk script), yang idenya bermula dari “Mathographics” karya Robert Dixon, persamaan dasar untuk bunga mawar dapat ditulis dalam kordinat polar sebagai berikut :

x\left ( r, \theta \right )= r \cos \theta

y\left ( r, \theta \right )= r \sin \theta

dimana :

r=k\left ( a+\sin\left ( b\theta+\frac{k}{c} \right ) \right )

a, b dan c adalah parameter. Berikut ini salah satu satu contoh kode Python yang saya gunakan untuk membuat gambar sketsa dasar bunga mawar :

import matplotlib.pyplot as plt
import numpy as np

a = 15
b = 6
c = 100

theta = np.linspace(-2 * np.pi, 100, num=100)
k = np.linspace(0, 45, num=100)
r = k * (a+np.sin(theta*b+(k/c)))

x = r * np.cos(theta)
y = r * np.sin(theta)

plt.plot(x, y, color='r')
plt.axis('off')
plt.show()

Hasil plotnya :

Red Rose Flower (basic)

Sedikit modifikasi terhadap k pada persamaan r, dengan

k=\left ( \frac{0.8\theta}{2 \pi} \right ) + 3

Beberapa contoh gambar sketsa bunga mawar yang saya hasilkan dengan persamaan terkahir dapat dilihat pada 2 gambar berikut, saya sertakan juga salah satu contoh kode sumbernya di bagian paling bawah.

Red Rose

Sketsa bunga mawar dengan warna pink :

Pink Rose

Sedikit eksplorasi dengan :  k=\left ( \frac{0.8\theta}{2 \pi} \right ) + 1

Pink Rose

Dan ini sketsa gambar yang terakhir, tampak lebih indah dan cantik :

Sketsa Bunga Mawar

Contoh kode sumber untuk membuat plot terhadap persamaan polar gambar ketiga (gambar yang kedua didapatkan dengan membuat variasi pada nilai parameter a, b dan c) :

import matplotlib.pyplot as plt
import numpy as np

a = 8
b = 6
c = 3

theta = np.linspace(0, 45 * 2* np.pi, num=10000)
k = (0.8*theta/(2*np.pi)+3)
r = k *(a+np.sin(theta*b+(k/c)))

x = r * np.cos(theta)
y = r * np.sin(theta)

plt.plot(x, y, color='#CC0066')
plt.axis('off')
plt.show()