LAPORAN PRAKTIKUM KOMPUTASI TEKNIK KIMIA PERSAMAAN POLINOMIAL
Disusun oleh:
Nama : Muhammad Agil Asshofy
NIM : 211910401081
Hari/Tanggal Praktikum : Rabu, 04 Oktober 2023 Assisten : Reza Rachma Yuniza
PROGRAM STUDI S1 TEKNIK KIMIA JURUSAN TEKNIK MESIN
FAKULTAS TEKNIK UNIVERSITAS JEMBER
Oktober, 2023
1. JUDUL PERCOBAAN Persamaan Polinomial 2. TUJUAN PERCOBAAN
a. Memahami pengertian dan persamaan yang mewakili metode Bairstow b. Memahami persoalan dalam matematis yang dapat dikerjakan dengan
metode Bairstow
c. Mempelajari dan mencari semua akar-akar dari suatu polinomial dengan menggunakan metode Bairstow
3. DASAR TEORI
Metode numerik adalah suatu pendekatan atau teknik yang digunakan untuk menganalisis dan menyelesaikan permasalahan yang terkait dengan teknik rekayasa dan ilmu pengetahuan dengan memanfaatkan operasi matematika perhitungan (Yahya & Nur, 2018). Umumnya, metode numerik digunakan untuk menemukan solusi dalam masalah matematika yang tidak dapat dipecahkan dengan menggunakan metode analitik konvensional. Dengan adanya metode numerik akan dihasilkan penyelesaian berupa hampiran yang akan sangat membantu (Sunandar and Indrianto, 2020).
Persamaan polinomial merupakan jenis fungsi matematika yang melibatkan operasi perkalian, perpangkatan, dan penggunaan nilai variabel.
Untuk menemukan akar persamaan dari fungsi tersebut, perlu mencari nilai variabel yang mempunyai nilai fungsi 0 (f(x) = 0) (Edward Antonius, 2017).
Bentuk umum dari persamaan polinomial adalah:
f (x)=a0+a1x+a2x2+…+anx2… … … … …..(1)
Dalam konteks dimana ai merupakan konstantan real, i = 0,1,2,….n, dan an ≠0.
Polinomial f(x) mempunyai n buah akar, termasuk akar yang berupa bilangan real maupun akar yang berupa bilangan kompleks. Akar-akar kompleks ini muncul dalam bentuk pasangan konjugasi, seperti w = u + vi dan w = u – vi, dengan i=
√
−1 (Azisah Nurman, 2021). Suatu akar persamaan polinomial p(z)= 0 merupakan sebuah nilai zi yang membuat p(zi) = 0 (Abdy et al., 2016).
Metode Bairstow merupakan metode yang digunakan untuk menemukan factor-faktor dalam suatu persamaan polinomial berderajat n, yang dituliskan
sebagai pn(x)=anxn+an−1xn−1+an−2xn−2+…+a1x+a0. Prinsip dasar dari metode Bairstow membagi polinomial tersebut menjadi factor-faktor linier atau kuadrat, walaupun hanya hanya pembagian kuadrat yang digunakan (Windra, Nasution and Dewi, 2013).
Metode bairstow pada dasarnya menerapkan proses iterasif untuk mencari akar-akar polinomialnya. Dalam metode iteratifini, digunakan tebakan awal atau aproksimasi untuk menemukan akar-akar asli atau akar sebenarnya dari persamaan polinomialnya. Pendekaran awal ini berfungsi sebagai titik awal untuk memulai perhitungan, yang akan diulang berulang kali hingga ditemukan akar yang sebenarnya. Jumlah iterasi yang diperlukan akan bervariasi tergantung pada tingkat ketelitian yang diberikan. Semakin nilai toleransi yang ditetapkan, maka semakin banyak iterasi yang diperlukan. Metode ini dianggap berhasil konvergen apabila perbedaan antara perkiraan awal dan nilai yang ditemukan lebih kecil dari nilai toleransi yang ditetapkan (Xue et al., 2020).
4. ALGORITMA DAN FLOWCHART
Dalam algoritmanya pertama kali dipilih harga pendekatan awal r dan s. Harga pendekatan berikutnya yaitu r¿dan s¿, kemudian dicari secara iterative.
Iterasi dihentikan bila ∆ r dan ∆ s sudah cukup kecil. Algoritma dan Flowchart penentuan faktor kwadratis suatu fungsi polinomial dijelaskan sebagai berikut:
No No START
Koefisien, Orde, Toleransi
Orde ≥3 Orde=2
[u, v] =Bairstow_
Function2 (Koefisien, Toleransi)
Discr=sqrt (Koefisien (2)^2-4*Koefisien (1)
*Koefisien (3))
Roots_poly(orde)
=-Koefisien(2)/
Koefisien(1)
Roots_poly(Orde- 1:orde)=(- Koefisien(2)+[discr- discr])/2//Koefisien(1) discr=sqrt(u^2-4*v)
Orde=Orde-2 [Koefisien,r]=deconv(
Koefisien,[1 u v]) roots_poly(Orde- 1:Orde)=(-u+[discr-
discr])//2
Error>
Toleransi
Disp u; v; root;orde;
diskrimanan
End
5. HASIL DAN PEMBAHASAN
Praktikum Komputasi Teknik Kimia modul 2 ini membahas tentang penyelesaian persamaan polinomial dengan menggunakan metode Bairstow.
Terdapat 1 soal yang akan diselesaikan pada praktikum ini yaitu, persamaan keadaan Van Der Waals dituliskan sebagai berikut:
(
Pva2)
(v−b)=RT………. (1)Dalam persamaan tersebut v = (V/n), dimana n merupakan jumlah mol, R=
0,082054 liter.atm/(mol.K), a = 3,592, dan b = 0,04267 untuk CO2. Tentukan volume spesifik (liter/mol) CO2 saat P = 12 atm dan T = 315,6 K.
Persamaan terlebih dahulu diubah menjadi bentuk akar-akar polinomial agar dapat diselesaikan dengan menggunakan metode Bairstow. Persamaan polinomial yang diperoleh yaitu:
12v3−26,155v2+3,592v−0,15302=0……. (2)
Penyelesaian persamaan tersebut diselesaikan dengan menggunakan software matlab.
Langkah pertama pada praktikum persamaan polinomial ini adalah dengan cara membuat m-file baru untuk memasukkan fungsi-fungsi yang akan digunakan pada saat praktikum. Terdapat 2 m-file yang digunakan pada praktikum modul 2 kali ini, m-file pertama digunakan untuk main program dan m-file kedua digunakan untuk sub program. Main program berisi tentang fungsi- fungsi yang digunakan pada penyelesaian ini, sedangkan untuk sub program berisi tentang data yang akan dipanggil terhadap main program atau biasa disebut file function agar dapat dijalankan.
Langkah pertama yang dilakukan untuk membuat main program adalah dengan menuliskan fungsi clc dan clear all yang berfungsi untuk membersihkan command window dan workspace supaya pada saat terjadi proses running hanya terdapat hasil dari script tersebut. Langkah selanjutnya adalah dengan menuliskan perintah disp. Perintah ini bertujuan untuk memberikan sebuah keterangan yang nantinya akan muncul pada command window pada saat proses
running. Script dan hasil running untuk perintah disp dapat dilihat seperti dibawah ini:
disp('Muhammad Agil Asshofy') disp('211910401081')
disp('Metode Bairstow')
disp('Praktikum Komputasi Teknik Kimia B')
Gambar 1. Hasil running fungsi disp
Langkah selanjutnya adalah memberi keterangan persamaan polinomial yang akan dimasukkan dan nilai error pada editor, keterangan ini akan muncul pada menu editor untuk memberikan informasi pada menu editor. Penggunaan keterangan pada editor adalah dengan cara memberikan tanda % pada awal keterangan. Penggunaan tanda % pada kolom editor hanya bertujuan untuk memberikan komen atau catatan pada script dan sama sekali tidak berpengaruh terhadap hasil running. Langkah berikutnya adalah menuliskan perintah input. Perintah tersebut digunakan untuk memasukkan nilai koefisien persamaan polinomial dalam bentuk matriks, dan toleransi yang akan didefinisikan pada saat script sudah dijalankan dan muncul pada command window. Fungsi yang selanjutnya dituliskan adalah fungsi roots, fungsi roots ini berguna untuk mencari akar-akar penyelesaian suatu persamaan polinomial. Langkah selanjutnya adalah memasukkan fungsi length yang bertujuan untuk mengetahui dimensi dari suatu vektor yang digunakan. Koefisien yang akan digunakan pada kasus ini adalah fungsi length yang berfungsi untuk mengetahui jumlah orde dari persamaan polinomial. Script fungsi-fungsi diatas sebagai berikut.
% 12v^3 - 26,6672v^2 + 3,59v - 0,15302 %
% Toleransi = 0.05 %%
koef=[12, -26.6672, 3.59, -0.15302];
roots (koef);
tol=0.05;
orde=length(koef)-1;
q=koef;
Pengulangan pada modul persamaan polinomial ini dilakukan dengan menggunakan fungsi while−end, yang berperan sebagai instruksi untuk melakukan iterasi sebuah fungsi dengan menentukan kondisi berhenti iterasi.
Dalam kasus orde 3 atau lebih tinggi, diperlukan beberapa langkah tambahan.
Langkah pertama pada penulisan fungsi while - end adalah menuliskan [u , v]=Bairstowfunction2(q ,tol) berfungsi untuk memanggil fungsi bairstow yang berada pada sub program untuk menentukan nilai u dan v final. Penulisan langkah pertama harus didasarkan penamaan file function yang telah dibuat.
Langkah selanjutnya yaitu, menuliskan discr=
√
(u2−4∗v) yang bertujuan untuk mencari nilai diskriminannya. Selanjutnya adalah menuliskan rootspoly(orde−1:orde)=(−u+[discr−discr])/2 yang bertujuan untuk menampilkan hasil dari akar persamaan. Berikutnya adalah menuliskan [q , r]=deconv(q ,[1u v]) yang berfungsi sebagai perintah untuk melakukan operasi pembagian polinomial. Kemudian menuliskan order=order−2. Nilai error harus lebih kecil daripada nilai toleransi yang diketahui yaitu 0,05, jika nilai error melebihi batas dari nilai toleransi maka akan terjadi pengulangan sesuai dengan prosedur hingga nilai error kurang dari nilai toleransi. Script perintah while−end dapat dilihat seperti berikut ini:while orde >= 3
[u,v]=Bairstow_function2(q,tol);
discr=sqrt(u^2-4*v);
roots_poly(orde-1:orde)=(-u+[discr -discr])/2;
[q,r]=deconv(q,[1 u v]);
orde=orde-2;
end
Langkah berikutnya melibatkan penambahan fungsi if−else−end.
Perintah tersebut berfungsi untuk proses permisalan. Jika permisalan belum memenuhi syarat, maka akan iterasi ulang samapai kondisi yang dimasukkan terpenuhi. Jika orde sama dengan 2, maka dapat ditulisankan dengan menggunakan persamaan discr=
√
(q(2)2−4∗q(1)∗q(3)) danrootspoly(orde−1:orde)=(−q(2)+[discr−discr])/2/q(1); apabila tidak maka rootspoly(orde)=−q(2)/q(1). Script fungsi if−else−end dapat dilihat seperti di bawah ini:
if orde<3 if orde==2
discr=sqrt(q(2)^2-4*q(1)*q(3));
roots_poly(orde-1:orde)=(-q(2)+[discr - discr])/2/q(1);
else
roots_poly(orde)=-q(2)/q(1);
end end
Langkah berikutnya adalah menampilkan hasil yang nantinya akan muncul pada command window. Fungsi yang digunakan untuk menampilkan hasil adalah fungsi disp yang diikuti dengan perintah num2str. Keterangan yang nantinya akan ditampilkan adalah nilai v, u, diskriminan, serta akar-akar persamaan.
Perintah num2str berperan dalam mengubah angka (numbers) menjadi format larik (array) karakter atau string agar hasilnya lebih mudah dibaca pada command window. Dalam konteks ini, u dan v merujuk pada faktor kuadratis dari persamaan polinomial. Script fungsi disp pada main program dapat dilihat seperti di bawah ini:
disp (['v = ',num2str(v)]);
disp (['u = ',num2str(u)]);
disp (['diskriminan = ',num2str(discr)]);
disp ('semua akar persamaanya = ');
disp ((ans));
Main program diakhiri dengan menggunakan fungsi disp yang telah dijelaskan diatas. Untuk menjalankan program ini, diperlukan sub program yang berisikan data dan fungsi tambahan yang dibutuhkan untuk melengkapi main program. Berikut adalah script keseluruhan untuk main program:
clc;
clear all;
disp('Muhammad Agil Asshofy') disp('211910401081')
disp('Metode Bairstow')
disp('Praktikum Komputasi Teknik Kimia B')
% 12v^3 - 26,6672v^2 + 3,59v - 0,15302 = 0 %
% Toleransi = 0.05 %%
koef=[12, -26.6672, 3.59, -0.15302];
roots (koef);
tol=0.05;
orde=length(koef)-1;
q=koef;
while orde >= 3
[u,v]=Bairstow_function2(q,tol);
discr=sqrt(u^2-4*v);
roots_poly(orde-1:orde)=(-u+[discr -discr])/2;
[q,r]=deconv(q,[1 u v]);
orde=orde-2;
end
if orde<3 if orde==2
discr=sqrt(q(2)^2-4*q(1)*q(3));
roots_poly(orde-1:orde)=(-q(2)+[discr - discr])/2/q(1);
else
roots_poly(orde)=-q(2)/q(1);
end end
disp (['v = ',num2str(v)]);
disp (['u = ',num2str(u)]);
disp (['diskriminan = ',num2str(discr)]);
disp ('semua akar persamaanya = ');
disp ((ans));
Langkah pertama untuk menyusun sub program pada praktikum persamaan polinomial ini adalah dengan cara menuliskan fungsi function [ u- final,v_funak] = Bairstow_function(q,tol) untuk memanggil main program.
Penulisan nama m-file pada sub program juga harus diperhatikan supaya pada saat dilaukan run, program yang dipanggil dapat sesuai dengan ketentuan dan tidak ada kesalahan dalam program. Nama m-file harus sama dengan pemanggilan yang ada pada di script. Langkah berikutnya adalah menuliskan perintah n=length(q), fungsi tersebut digunakan untuk mengetahui koefisien dari persamaan polinomial. Selanjutnya adalah menuliskan perintah b(n)=0; b(n−1)=0; f=0; f(n−1)=0. Perintah tersebut sesuai dengan prinsip dalam metode Bairstow karena b(n)dan b(n+1) berperan sebagai fungsi r dan s. Langkah berikutnya adalah menuliskan perintah b(n)=0; b(n−1)=0; f(n)=0; f(n−1)=0; kemudian u=q(end−1)/q(end); v=q(end−2)/q(end); dan error=1;. Fungsi-fungsi ini adalah bagian dari persamaan yang diterapkan dalam metode Bairstow.
Langkah berikutnya adalah menuliskan fungsi while−for−end. Tujuan penggunaan fungsi tersebut pada sub program ini adalah untuk metode pengulangan (iterasi), jika nilai error lebih besar daripada nilai toleransinya maka akan berlaku fungsi seperti di bawah ini:
while err(end) > tol for index=n-2:-1:1
b(index)=q(index+2)-u(end)*b(index+1)- v(end)*b(index+2);
f(index)=b(index+2)-u(end)*f(index+1)- v(end)*f(index+2);
end
Script untuk fungsi while−for−end seperti dibawah ini. Dalam script tersebut, terdapat rumus untuk menghitung nilai c , d , g , dan h, yang selanjutnya akan digunakan untuk mencari nilai u dan v atau yang juga dikenal sebagai r dan s dalam konsteks persamaan polinomial. Script sub program ini diakhiri dengan langkah untuk menghitung nilai akhir u dan v, yang merupakan solusi dari persamaan polinomial.
while err(end) > tol for index=n-2:-1:1
b(index)=q(index+2)-u(end)*b(index+1)- v(end)*b(index+2);
f(index)=b(index+2)-u(end)*f(index+1)- v(end)*f(index+2);
end
c=q(2)-u(end)*b(1)-v(end)*b(2);
d=q(1)-v(end)*b(1);
g=b(2)-u(end)*f(1)-v(end)*f(2);
h=b(1)-v(end)*f(1);
factor=1/(v(end)*g^2+h*(h-u(end)*g));
u(end+1)=u(end)-factor*(-h*c+g*d);
v(end+1)=v(end)-factor*(-g*v(end)*c+(g*u(end)- h)*d);
err(end+1)=c^2+d^2;
end
u_final=u(end);
v_final=v(end);
Gambar 2. Script sub program
Berdasarkan hasil praktikum yang telah dilakukan, program tersebut dapat dijalankan dengan sukses. Persamaan polinomial yang ditemukan, yaitu 12v3−26,155v2+3,592v−0,15302=0 dengan nilai toleransi sebesar 0,05.
Hasil yang telah diperoleh, yaitu nilai v=163,2322;u=−22,9806, dimana v merupakan nilai r , dan nilai u merupakan nilai s, keduanya merupakan akar kuadrat dari persamaan polinomial diatas. Nilai diskriminan yang diperoleh adalah 0+11,1724i. Nilai akar-akar persamaan dari persamaan polinomial diatas dapat dilihat pada gambar hasil dibawah ini:
Gambar 3. Hasil Running
6. KESIMPULAN DAN SARAN a. Kesimpulan
Penggunaan software matlab yang digunakan dalam menyelesaikan persamasalahan persamaan polinomial menggunakan metode Bairstow dirasa lebih efisien, karena dalam penggunaannya yang tidak melakukan perhitungan satu persatu. Terdapat 2 m-file yang digunakan pada praktikum modul 2 kali ini, m-file pertama digunakan untuk main program dan m-file kedua digunakan untuk sub program.
Hasil yang telah diperoleh, yaitu nilai v=163,2322;u=−22,9806, dimana v merupakan nilai r , dan nilai u merupakan nilai s, keduanya merupakan akar kuadrat dari persamaan polinomial, serta nilai diskriminan yang diperoleh adalah 0+11,1724i.
b. Saran
Penulisan script pada software matlab harus selalu diperhatikan, dikarenakan matlab sangat rentan terhadap suatu kesalahan pada saat penulisan script atau fungsi. Kesalahan tanda atau perintah pada penulisan script dapat menyebabkan nilai error pada saat melakukan proses running. Ketelitian tinggi dibutuhkan dalam praktikum komputasi Teknik kimia ini terutama pada saat penulisan script.
7. DAFTAR PUSTAKA
Abdy, M., Wahyuni, M. S., Ilmi, N., Matematika, J., & Makassar, U. N. (2016).
Algoritma Genetika dan Penerapannya dalam Mencari Akar Persamaan Polinomial.
In JANUARI (Vol. 2, Issue 1).
Azisah Nurman, T. (2021). Analisis Perbandingan Metode Muller dan Metode Birge- Vieta dalam Menyelesaikan Persamaan Polinomial. In Jurnal Matematika Dan Statistika Serta Aplikasinya (Vol. 9, Issue 1).
Edward Antonius, S. (2017.). Menemukan Akar Persamaan Polinomial Menggunakan Particle Swarm Optimization.
Sunandar, E., & Indrianto, I. (2020). Perbandingan Metode Newton-Raphson & Metode Secant Untuk Mencari Akar Persamaan Dalam Sistem Persamaan Non-Linier.
PETIR, 13(1), 72–79. https://doi.org/10.33322/petir.v13i1.893
Windra, I., Nasution, L. M., & Dewi, P. M. (2013). Menentukan Akar-Akar Polinomial dengan Metode Bairstow. Journal of Matematics UNP, 24–29.
Xue, Y., Zhu, Z., Jiang, J., Zhan, Y., Yu, Z., Fan, X., & Qiao, S. (2020). Fast Computation of LSP Frequencies Using the Bairstow Method. Electronics, 9(3), 387. https://doi.org/10.3390/electronics9030387
Yahya, Y., & Nur, A. M. (2018). Pengaruh Aplikasi C# dalam Proses Perhitungan Numerik Terhadap Solusi Persamaan Non Linier. Infotek : Jurnal Informatika Dan Teknologi, 1(2), 79–87. https://doi.org/10.29408/jit.v1i2.901
LAMPIRAN
Bukti cek plagiarisme