LAPORAN AKHIR PENELITIAN PROFESOR
Pengembangan Beberapa Metode Matematik dalam Penentuan Waktu Mati Menggunakan Deret Homolog pada Sistem
Kromatografi Cair
TIM PENELITI
Prof. Dr.rer.nat. Rinaldi Idroes, S.Si 196808251994031003
Dr. Saiful, M.Si 196909221994121001
Irvanizam, M.Sc 198103152003121003
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SYIAH KUALA
OKTOBER, 2017
ii
RINGKASAN
Penelitian ini bertujuan untuk mengembangkan keakuratan metode penentuan waktu mati yang dikembangkan oleh Guardino, Waetzig, Braithwaite, Grobler, Heeg, Toth & Zala, Parcher dan Dominguez dengan memanfaatkan n-alkana sebagai deret homolog pada sistem kromatografi cair. Keakuratan penentuan waktu mati adalah suatu hal yang sangat penting dalam sistem Kromatografi cair karena merupakan parameter primer untuk penentuan parameter sekunder lainnya seperti waktu retensi netto, faktor retensi, waktu retensi relatif dan indeks retensi. Indeks retensi Kovats pertama kali dikembangkan oleh Ervin Kovats pada sistem kromatografi gas yang merupakan parameter retensi sekunder yang sering digunakan, karena nilainya relatif kokoh walaupun terjadi sedikit perubahan kondisi fisis seperti seperti suhu dan laju alir fasa gerak. Data indeks retensi yang diperoleh akan lebih bermanfaat jika ditandem dengan detektor spektrofotometer massa. Deret homolog n-alkana berfungsi untuk penentuan waktu mati yang akurat dan presisi sekaligus menjadi standar dalam perhitungan indeks retensi Kovats. Aplikasi penelitian ini sangat bermanfaat dalam pengembangan metode analisa kimia kualitatif pada era perdagangan bebas saat ini, diantaranya untuk kontrol kualitas pada komoditas ekspor – impor, penjaminan mutu obat dan makanan dan lain - lain.
iii
PRAKATA
Segala puji kehadirat Allah SWT, karena berkat Qudrah dan Iradah-Nya sehingga peneliti dapat menyelesaikan penelitian Fundamental ini dengan sebaik-baiknya, yang berjudul
“Pengembangan Beberapa Metode Matematik dalam Penentuan Waktu Mati Menggunakan Deret Homolog pada Sistem Kromatografi Cair”.
Penelitian ini didanai oleh Universitas Syiah Kuala, Kementrian Riset, Teknologi dan Pendidikan Tinggi, sesuai dengan Surat Perjanjian Penugasan Pelaksanaan Penelitian Profesor Tahun Anggaran 2017 Nomor : 1442/UN11/SP/PNBP/2017 tanggal 18 Mei 2017.
Banyak yang berkontribusi untuk keberhasilan penelitian ini baik perorangan maupun institusi terutama dukungan moril dan materil. Berikut adalah para pihak yang selayaknya kami ucapkan terima kasih yaitu:
1. Universitas Syiah Kuala, Kementrian Riset, Teknologi dan Pendidikan Tinggi.
2. Ketua LPPM Unsyiah yang telah mendukung terlaksananya penelitian ini.
3. Para Reviewer internal LPPM Universitas Syiah Kuala.
4. Dekan Fakultas MIPA Unsyiah yang telah mendukung terlaksananya penelitian ini.
5. Ketua/Sekretaris Jurusan Fisika FMIPA Unsyiah atas motivasi yang diberikan untuk peneliti sehingga dapat menyelesaikan penelitian ini tepat waktu.
6. Para Mahasiswa yang telah membantu Rivansyah Suhendra, Muhammad Yusuf, Muksin Alatas, Subhan, Andi Lala, Mahmudi.
7. Teman-teman di jurusan Kimia FMIPA Unsyiah atas masukan terhadap proses dan hasil penelitian ini.
Tiada gading yang tak retak, begitu juga dengan laporan kemajuan penelitian ini masih banyak terdapat kekurangan. Untuk itu saran dan masukan yang konstruktif untuk perbaikan sangat diharapkan.
Banda Aceh, Oktober 2017
Peneliti
iv
DAFTAR ISI
Halaman
RINGKASAN ... ii
PRAKATA ... iii
DAFTAR ISI ... iv
DAFTAR TABEL ... v
DAFTAR GAMBAR ... vi
DAFTAR LAMPIRAN ... vii
BAB I PENDAHULUAN ... 1
Latar Belakang ... 1
Permasalahan ... 2
Tujuan Khusus ... 2
Urgensi Penelitian ... 2
Temuan yang Ditargetkan ... 3
BAB II TINJAUAN KEPUSTAKAAN ... 4
Metode Matematis dalam Penentuan Waktu Mati ... 4
Peta Jalan Penelitian Waktu Mati dan Indeks Kovats dalam Sistem Kromatografi ... 5
BAB III TUJUAN DAN MANFAAT PENELITIAN ... 6
Tujuan Penelitian ... 6
Manfaat Penelitian ... 6
BAB IV METODOLOGI PENELITIAN ... 7
Tempat Dan Waktu Penelitian ... 7
Prosedur Kerja ... 7
4.2.1 Metode Perhitungan Waktu Mati dengan Metode Matematik ... 7
Fishbone ... 10
BAB V HASIL DAN LUARAN YANG DICAPAI ... 11
Pengembangan Aplikasi ... 11
Hasil Perhitungan Waktu Mati ... 21
Hasil Perhitungan Waktu Mati Pengaruh Polaritas ... 24
Hasil Perhitungan Waktu Mati Pengaruh Deret Homolog ... 26
BAB V SIMPULAN DAN SARAN ... 28
Simpulan Penelitian ... 28
Saran ... 28
DAFTAR KEPUSTAKAAN ... 29
v
DAFTAR TABEL
Tabel 1.1. Target Luaran 2017 ... 3 Tabel 2.1. Peta Jalan Penelitian ... 5 Tabel 5.1. Hasil Perhitungan Waktu Mati Pengaruh Polaritas pada Methanol dan
Acetonotrile ... 24 Tabel 5.2. Hasil Perhitungan Waktu Mati Pengaruh Deret Homolog pada Methanol dan
Acetonotrile ... 26
vi
DAFTAR GAMBAR
Gambar 4.1 Fishbone Penelitian ... 10
Gambar 5.1 Flowchart metode non-linier ... 12
Gambar 5.2 Flowchart metode Interasi ... 15
Gambar 5.3 Flowchart metode Spreadsheet ... 18
Gambar 5.4. Flowchart metode Statistik ... 21
Gambar 5.5 Hasil Perhitungan Waktu mati pada Polaritas 80/20 ... 24
Gambar 5.6 Hasil Perhitungan Waktu mati pada Polaritas 70/30 ... 25
Gambar 5.7 Hasil Perhitungan Waktu mati pada Polaritas 60/40 ... 25
Gambar 5.8 Hasil Perhitungan Waktu mati pada Polaritas 50/50 ... 25
Gambar 5.9 Hasil Perhitungan Waktu mati pada Deret Homolog n-alkana ... 27
Gambar 5.10 Hasil Perhitungan Waktu Mati pada Deret Homolog Alkylbenzole ... 27
Gambar 5.11 Hasil Perhitungan Waktu Mati pada Deret Homolog 2-Alkanone ... 27
Gambar 5.12 Hasil Perhitungan Waktu Mati pada Deret Homolog Alkylarylketone .... 27
vii
DAFTAR LAMPIRAN
1
1 BAB I
PENDAHULUAN
Latar Belakang
Parameter dalam kromatografi sering disebut dengan istilah parameter retensi dan digunakan untuk menjelaskan data hasil analisis baik secara kualitatif maupun kuantitatif (Dominguez et al, 2001). Parameter retensi yang paling umum dipakai adalah waktu retensi, waktu mati, waktu retensi terkoreksi dan faktor kapasitas. Beberapa parameter lain seperti efisiensi (N), Height Equivalent to One Theoretical Plate (HETP), Selektivitas (α) dan Resolusi (Rs) terkadang juga digunakan untuk mendukung validasi data hasil pengukuran.
Parameter retensi yang bersifat primer hanya waktu retensi dan waktu mati.
Sedangkan yang lainnya bersifat parameter sekunder dimana nilainya ditentukan oleh nilai dari parameter waktu retensi (Furr et al, 1989). Nilai dari waktu retensi dihasilkan dari hasil retensi langsung sampel selama waktu analisis. Sedangkan waktu mati diperoleh melalui pengukuran senyawa marker dengan kondisi analisis yang sama dengan sampel (Waetzig et al, 1991). Bisa diasumsikan bahwa waktu mati adalah waktu retensi dari marker. Waktu retensi tidak konstan terhadap perubahan kondisi analisis. Nilai dari waktu retensi akan sangat bergantung terhadap kondisi analisis (Ettre et al, 2001).
Perbedaan jenis fasa diam/kolom, laju alir fasa gerak, temperatur kolom dan jenis fasa gerak (pada kromatografi cair) akan memberikan nilai waktu retensi berbeda meskipun itu dilakukan pada sampel yang sama.
Tahun 1958, E. Kovats memperkenalkan sebuah terobosan baru terhadap parameter retensi berupa nilai indeks dari waktu retensi yang selanjutnya dikenal dengan sebutan indeks retensi kovats (Kovats, 1958). Indeks retensi kovats merupakan suatu konsep yang diperkenalkan pertama kali pada gas kromatografi untuk mengubah waktu retensi menjadi suatu sistem yang tetap. Konsep ini diperkenalkan dengan mengambil hubungan antara bilangan karbon senyawa deret homolog nC dengan logaritma waktu retensi terkoreksi (log t'R) pada temperatur yang telah ditetapkan (isotermal) adalah linier.
Indeks retensi Kovats adalah parameter dengan keberulangan yang lebih baik dibanding waktu retensi, faktor retensi, dan retensi relatif, karena tidak sensitif terhadap sedikit perubahan kondisi eksperimen seperti terhadap perubahan laju alir gas, suhu kolom dan jumlah sampel yang diinjeksi (Idroes, 2010). Indeks retensi merupakan
2 parameter sekunder yang dalam perhitungannya memerlukan data waktu retensi dan waktu mati (Idroes, 2016). Indeks retensi memberikan informasi terhadap nilai nC dari analit yang terpisah sehingga nilai waktu retensi yang dikonversi kedalam nilai indeks retensi akan memberikan informasi penting termasuk jumlah atom karbon dari analit- analit tersebut.
Penentuan waktu mati sering dilakukan melalui injeksi senyawa yang dianggap tidak tertahan dalam kolom ataupun melalui metode matematis menggunakan deret homolog. Beberapa metode matematis yang pernah diteliti adalah metode iterasi (Idroes, 2016) dan metode Non-Linier (Waetzig, 1991) terutama pada sistem kromatografi gas.
Permasalahan
Kesalahan penentuan waktu mati berpengaruh terhadap benar tidaknya nilai parameter retensi lainnya, terutama nilai indeks retensi yang merupakan parameter retensi untuk perhitungan kualitatif yang sangat reproducible. Beberapa jurnal dalam perhitungan waktu mati tidak sekaligus dikaitkan dengan perhitungan indeks retensi kovats, begitu juga tidak menggunakan deret homolog n-alkana. Begitu juga dalam penelitiannya, beberapa peneliti tidak menentukan dan membahas accuracy dan precision sebagai aspek penting dalam analitik.
Tujuan Khusus
Penelitian ini bertujuan menentukan waktu mati (to) dan indeks retensi (IR) deret homolog n-alkana menggunakan beberapa metode matematis yang dapat dilihat pada subbab 3.2.1.1 hingga 3.2.1.8. Selanjutnya akan dilakukan perbaikan terhadap algoritma beberapa metode matematis yang diperkirakan masih keliru berdasarkan beberapa ujicoba yang akan dilakukan. Selanjutnya hasil dari perhitungan metode matematis akan dibandingkan dengan metode matematis matematis yang sudah dianggapyaitu metode iterasi Guardino.
Urgensi Penelitian
Mempelajari sifat-sifat n-alkana dan mempelajari kemungkinan terapannya sebagai deret homolog utama dalam penentuan waktu mati pada system HPLC.
3
Dihasilkan software untuk perhitungan waktu mati yang akurat dan teliti sehingga dapat diaplikasikan pada penelitian-penelitian dan analisa rutin dalam bidang kromatografi cair.
Jika dikaitkan secara spesifik dengan kemungkinan pemecahan masalah nasional dapat di deskripsikan bahwa temuan ini kedepan berkontribusi untuk peningkatan
“Quality Control” produksi nasional baik untuk distribusi produksi komoditi berkualitas untuk digunakan di dalam negeri maupun untuk produksi yang berorientasi ekspor. Sehingga dapat meningkatkan daya saing produksi nasional dalam persaingan perdagangan bebas.
Temuan yang Ditargetkan
Pada penelitian ini ditargetkan untuk ditemukan teori, gejala dan rekomendasi baru dengan kemutakhiran dan orisinilitas yang tinggi yang akan dipublikasikan pada jurnal internasional bereputasi yang dapat dilihat pada lampiran 5. Teori gejala maupun fenomena baru yang ditemukan dapat juga dirumuskan nantinya menjadi buku ajar yang dapat dipergunakan oleh mahasiswa yang mengambil mata kuliah Kromatografi dan Analisis Instrumentasi yang dapat dilihat pada tabel (1.1).
Luaran pada penelitian ini bukan suatu produk instan yang langsung dapat dilihat dan langsung dapat dimanfaatkan akan tetapi berupa suatu pengembangan metode.
Keberhasilan dalam penelitian ini secara mendasar dapat dipublikasikan dan berdampak pada revolusi produk untuk masa depan kualitas produksi, lingkungan, energi dan hampir dalam segala aspek kehidupan terutama kualitas dalam dunia perdagangan dunia di era MEA/WTO.
Tabel 1.1. Target Luaran 2017
No Jenis Luaran Penelitian Indikator Capaian 1 Publikasi Jurnal internasional
bereputasi Reviewed/Accepted/Published
2 Pemakalah dalam temu
ilmiah Internasional Terlaksana
3 Buku Referensi (ISBN) Published
4
2 BAB II
TINJAUAN KEPUSTAKAAN
Metode Matematis dalam Penentuan Waktu Mati
Penentuan waktu mati biasanya dilakukan menggunakan senyawa penanda (marker substance) pada instrumen. Waktu mati yang dihasilkan dari marker dapat langsung diketahui saat proses kromatografi dilakukan dengan cara menginjeksikan marker ke injektor instrumen. Berbeda dengan metode matematis dimana nilai waktu mati dihasilkan dari perhitungan matematis berdasarkan waktu retensi dari n-alkana berdasarkan nomor atom karbon (nC). Nilai indeks Kovats akan dihasilkan dari nilai waktu mati yang telah dihitung sebelumnya. Beberapa metode matematis yang sering digunakan antara lain metode iterasi, metode non-linier metode statistik dan lain - lain.
Parameter waktu mati diperlukan untuk memperkirakan berbagai parameter kromatografi lainnya, seperti waktu retensi terkoreksi, nilai k', nomor plat (N), resolusi (Rs), dan indeks retensi (IR). Banyaknya parameter ini menyulitkan optimasi kondisi kromatografi. Waktu mati merupakan dasar untuk memperoleh data retensi relatif yang akan digunakan sebagai pembanding intra dan inter laboratorium (Waetzig et al, 1989).
Waktu mati adalah waktu tinggal senyawa yang dianggap tidak tertahan pada kolom.
Waktu mati yang dihitung dari deret homolog menggunakan data retensi deret homolog dekana sampai heksadekana nilai yang diperoleh hampir sama dengan waktu mati jika menggunakan marker (Guardino, 1976).
Mulai tahun 1970 hingga 2000 beberapa kelompok peneliti telah mengembangkan beberapa metode dalam penentuan waktu mati [Guardino et al, 1976; Parcher, 1980;
Dominguez, 1977; Toth dan Zala, 1984; Heeg,1979; Grobler,1974; Braithwaite,1993;
Waetzig,1991]. Metode – metode tersebut memiliki pendekatan matematis tersendiri, dimana perhitungan waktu mati dilakukan dengan mencari hubungan antara waktu retensi dengan slope dan intercept nya. Pada penelitian ini akan dilakukan perhitungan secara matematis dengan menggunakan deret homolog pada sistem kromatografi cair
5 Peta Jalan Penelitian Waktu Mati dan Indeks Kovats dalam Sistem
Kromatografi
Tabel 2.1 Peta Jalan Penelitian
2015 2016 2017 2018 2019
Pengembangan Kerjasama dengan Universiti Sains Malaysia (USM),
Program Kegiatan :
Pengembangan metode linearisasi dan non-linier
Output Tugas Akhir S1 (1)
Output publikasi:
Jurnal Nasional terakreditasi (1)
Pengembangan Kerjasama dengan Saarland University Germany
Program Kegiatan:
Aplikasi perhitugan waktu mati metode matematis dalam kromatografi gas
Output Tugas Akhir S1 (1)
Output publikasi:
Jurnal Internasional Bereputasi (1)
Pengembangan Kerjasama dengan Prince Songkhla University Thailand
Program Kegiatan:
Aplikasi perhitugan waktu mati metode matematis dalam kromatografi cair
Output Tugas Akhir S1 (1)
Output publikasi:
Jurnal Internasional Bereputasi (1) dan Jurnal
Internasional (1)
Pengembangan Kerjasama dengan Universiti
Kebangsaan Malaysia (UKM)
Program Kegiatan : Aplikasi Penentuan waktu mati matematis berbasis WEB
Output Tugas Akhir S1 (1), S2 (1)
Output publikasi:
Jurnal Internasional Bereputasi (2)
Pengembangan Kerjasama dengan Braunschweig University Germany
Program Kegiatan : Server Aplikasi data waktu mati dan dapat diakses secara internasional
Output Tugas Akhir S1 (1), S2 (1), dan S3 (3)
Output publikasi:
Jurnal Internasional Bereputasi (2)
6
3 BAB III
TUJUAN DAN MANFAAT PENELITIAN
Tujuan Penelitian
Penelitian ini bertujuan menentukan waktu mati (to) dan indeks retensi (IR) deret homolog n-alkana menggunakan beberapa metode matematis. Selanjutnya akan dilakukan perbaikan terhadap algoritma beberapa metode matematis yang diperkirakan masih keliru berdasarkan beberapa ujicoba yang akan dilakukan. Selanjutnya hasil dari perhitungan metode matematis akan dibandingkan dengan metode matematis matematis yang sudah dianggap yaitu metode iterasi Guardino.
Manfaat Penelitian
Pemecahan masalah nasional dapat di deskripsikan bahwa temuan ini kedepan berkontribusi untuk peningkatan “Quality Control” produksi nasional baik untuk distribusi produksi komoditi berkualitas untuk digunakan di dalam negeri maupun untuk produksi yang berorientasi ekspor. Sehingga dapat meningkatkan daya saing produksi nasional dalam persaingan perdagangan bebas.
7
4 BAB IV
METODOLOGI PENELITIAN
Tempat Dan Waktu Penelitian
Penelitian dilaksanakan di Laboratorium Instrumentasi Jurusan Kimia FMIPA Unsyiah, Laboratorium Informatika Jurusan Informatika FMIPA Unsyiah dan Laboratorium Teknologi Farmasi BPPT Serpong mulai bulan Maret hingga November 2017.
Prosedur Kerja
Dipipet 1 mL masing-masing senyawa n-alkana (heksana-dekana), dimasukkan ke dalam labu ukur 25 mL. Kemudian ditambahkan 8 mL tetrahidrofuran (THF) dan diencerkan sampai tanda batas dengan menggunakan metanol. Dihidupkan alat kromatografi cair (HPLC), kemudian diambil 1 µL larutan tersebut dan dinjeksikan ke injektor sehingga diperoleh hasil (kromatogram). Hasil pengukuran ditabulasi dan dihitung waktu mati berdasarkan metode berikut.
4.2.1 Metode Perhitungan Waktu Mati dengan Metode Matematik 4.2.1.1 Metode Non-Linear (Waetzig,1991)
Algoritma baik untuk estimasi waktu mati pada HPLC telah diusulkan, yang dapat digunakan dalam GC dan HPLC (Watzig, 1991 & Watzig, 1989) menggunakan persamaan (3.1) berikut
tR = to + exp(ao + a1 · nC) ...(3.1) 4.2.1.2 Metode Iterasi (Guardino,1976)
Penentuan awal dari waktu mati mesti lebih rendah dari pada waktu mati perhitungan matematis. Waktu retensi terkoreksi ditentukan dengan valuasi ini, selanjutnya a1, a0 dan indeks retensi (RI) dapat dihitung dengan regresi linier. Dari flowchart yang dikembangkan oleh Guardino, dapat dijelaskan sebagai berikut. UPLIM dan LOWLIM adalah batas atas dan batas bawah dari jumlah kuadrat deviasi.RI adalah indeks retensi Kovats yang diketahui (100nc, dimana nc adalah bilangan atom karbon).
PREC adalah nilai ketelitian yang diberikan (Guardino,1976).
8 4.2.1.3 Metode Statistika (Grobler,1974)
Sebuah metode statistika diperkenalkan untuk menghitung indeks retensi dengan lebih dari 3 n-alkane. Dua deret homolog n-alkane tidak cukup untuk menentukan indeks retensi walaupun nilai waktu mati diukur secara akurat (Grobler,1974).
Menggunakan setidaknya 4 n-alkana secara berurutan, nilai slope dapat dihitung berdasarkan logaritma dari perbedaan antara waktu retensi n-alkana yang berdekatan :
4.2.1.4 Metode Spreadsheet (Braithwaite,1993)
Waktu retensi (tRn) dari serangkaian deret homolog dicatat secara akurat pada output GC. Nilai awal kolom waktu mati (yaitu tR [CH4] - 0,1) kemudian digunakan untuk menentukan waktu retensi yang disesuaikan (t’R) dari deret homolog (Braithwaite,1993).
4.2.1.5 Metode Optimasi Koefisien Korelasi (Heeg,1979)
Metode perhitungan indeks retensi berdasarkan hubungan linear antara logartima dari waktu mati terkoreksi dan nomor karbon. Pengukuran yang pasti dari waktu retensi n-alkana menampilkan hubungan lg ts = f(C) nyatanya tidak begitu linear. Waktu mati (tm) dihitung berdasarkan perbedaan dari waktu retensi deret homolog (Heeg,1979).
tm+s(i) = u 10aC(i)+const’ + tm...(3.11) 4.2.1.6 Metode Deret Homolog yang Tidak Berurutan (Toth & Zala,1984)
Toth & Zala mengembangkan sebuah metode yang dapat menghitung konstan b, c dab tM untuk deret homolog yang tidak berurutan (Toth,1984). Nilai konstanta b dan c
... (3.9)
... (3.10)
9 dihitung berdasarkan deret homolog dan waktu mati lalu dapat dihitung berdasarkan persamaan :
tM = tR(Z) – exp(bZ + c ) ...(3.12)
4.2.1.7 Metode Linier (Parcher,1980)
Akurasi dalam perhitungan waktu mati dari zat terlarut yang tak tertahan menjadi hal penting dalam menentukan nilai volume retensi dan data indeks retensi yang terpercaya. Pada beberapa kasus, nitrogen atau metana bisa digunakan untuk mengevaluasi waktu mati, tetapi dikasus lainnya, waktu retensi yang terkoreksi dihitung secara matematis (Parcher,1980).
... (3.13) 4.2.1.8 Metode Kalkulator (Dominguez,1977)
Metode ini menggunakan perhitungan jarak dari tiga deret homolog dari nomor karbon n1, n2, dan n3 sehingga n2 – n1 = n3 - n2. Jika y1, y2 dan y3 adalah jarak data eksperimen pada kromatogram dan dihitung dari titik y0, error δ, atau jarak antara y0 dan nilai waktu mati titik x0 dapat dihasilkan dengan bantuan persamaan (3.14) :
𝛿 = (𝑦2)2−𝑦1𝑦3
𝑦1+ 𝑦3−2𝑦2 ...(3.14)
10 Fishbone
Gambar 4.1 Fishbone Penelitian
Metode waktu mati Kurang teliti dan Kurang akurat sedangkan
Indeks retensi Kovats Tidak distandarisasi Terhadap n-alkana Diperoleh
Indeks Retensi yang akurat dan presisi dengan menggunakan n-alkana sebagai standar untuk perhitungan waktu
mati
Perbandingan Metode Matematis
Uji Coba Metode Matematis
Validasi Metode
Matematis Pengembangan Flowchart Pengolahan
Data
Perbaikan Metode
Set-up peralatan eksperimen
Studi Literatur
1 bulan 2 bulan 2,5 bulan 3,5 bulan Hasil
11
5 BAB V
HASIL DAN LUARAN YANG DICAPAI
Pengembangan Aplikasi
Pengembangan aplikasi dilakukan berdasarkan metode matematis non-linier, metode iterasi, metode Spreadsheet dan Metode Statistik. Perhitungan dan pendekatan matematis diimplementasikan menggunakan Bahasa pemrograman ANSI C dengan memanfaatkan library yang sudah tersedia. Aplikasi untuk masing– masing metode dibuat secara terpisah dalam beberapa file.
5.1.1. Program penentuan waktu mati metode non-linier
Program metode non-linier Waetzig dibangun berdasarkan alir diagram metode penentuan waktu mati Waetzig. Program yang dibuat yaitu Waetzig.c sebagai program utama, Invers.c untuk menghitung nilai Sintak untuk menjalankan program ini yaitu:
./Waetzig [data-waktu-retensi.txt] [file-output.txt] –lm
Data input berupa file txt dari waktu retensi yang ingin dihitung waktu matinya dan file output berupa file *.txt yang berisi proses serta hasil perhitungan waktu mati dari metode non-linier Waetzig. Sintak –lm adalah sebagai penanda dan syarat eksekusi dari program yang menggunakan library math.h.
12 Gambar 5.1 Flowchart metode non-linier
Cara Kerja Program metode non-linier
Program dimulai dengan proses input data waktu retensi dan nomor atom karbon. Data waktu retensi dan nomor atom karbon tersebut disimpan didalam sebuah file teks dengan format nomor karbon dan waktu retensi yang berpasangan. Berikut source code proses input data:
//Simpan data waktu retensi dan nc kedalam array while((fscanf(iFile,"%d\t%lf\n",&c,&b))!=EOF){
n[z] = c;
rt[z] = b;
sum+=n[z];
z++;
zz++;
TOT_NO_ATOM++; }
13 Proses dilakukan menggunakan perulangan while dari waktu retensi pertana hingga terakhir. Data waktu retensi dibaca lalu dimasukkan kedalam array rt[z] sedangkan data nomor karbon dimasukkan kedalam array n[z].
Selanjutnya dilakukan proses inisialisasi untuk setiap variabel seperti jumlah iterasi i=0, waktu mati awal=0.9, a1=1 dan lain-lain. Iterasi pertama dilakukan untuk menghitung nilai d1, d2, dan d3 yang nantinya dimasukkan kedalam matriks yang berukuran n x 3 dengan code berikut:
for (i=0; i<TOT_NO_ATOM; i++){
for(j=0; j<N_KOLOM_MATRIKS; j++){
switch (j){
case 0 : D[i][j] = 1+exp(a1*n[i]+a0);break;
case 1 : D[i][j] = t0*exp(a1*n[i]+a0);break;
case 2 : D[i][j] = n[i]*t0*exp(a1*n[i]+a0); break;
}
transpose[j][i] = D[i][j];
printf("%lf\t", D[i][j]);
fprintf (oFile,"%lf\t", D[i][j]);
}
printf("\n");
fprintf (oFile,"\n");
}
Matriks yang telah dihasilkan lalu masuk kedalam iterasi kedua dimana matriks tersebut ditranpose dan dikalikan dengan matriks inversnya:
kali_matriks (N_KOLOM_MATRIKS, N_KOLOM_MATRIKS, TOT_NO_ATOM, Z, transpose, &tmp[0][0]);
printf("\nMatriks tmp\n");
fprintf (oFile,"\nMatriks tmp\n");
for(i = 0; i < N_KOLOM_MATRIKS; i++){
for(j = 0; j < TOT_NO_ATOM; j++){
printf("%.5lf\t", tmp[i][j]);
fprintf (oFile,"%.5lf\t", tmp[i][j]);
}
printf("\n");
fprintf (oFile,"\n");
}
Lalu didapatkan nilai t0,a0 dan a1 terbaru, proses perhitungan ini diulang hingga dxt0, dxa0
dan dxa1 lebih kecil dari batas yang telah ditentukan dan didapatkan nilai waktu mati akhir.
//update nilai t0, a0 dan a1 t0 = t0+dx[0][0];
a0 = a0+dx[1][0];
a1 = a1+dx[2][0];
14 5.1.2. Program penentuan waktu mati metode iterasi Guardino
Program metode iterasi Guardino dibangun berdasarkan alir diagram metode penentuan waktu mati Guardino. Program yang dibuat yaitu hanya Guardino.c sebagai program utama. Sintak untuk menjalankan program ini yaitu:
./Guardino [data-waktu-retensi.txt] [file-output.txt] –lm
Parameter Command Line Argument dari program Guardino ini sama dengan program Waetzig, dimana data input berupa file *.txt dari waktu retensi yang ingin dihitung waktu matinya dan file output berupa file *.txt yang berisi proses serta hasil perhitungan waktu mati dari metode iterasi Guardino.
15 Gambar 5.2 Flowchart metode Interasi
16 Cara Kerja Program metode Iterasi
Program dimulai dengan proses input data waktu retensi dan nomor atom karbon. Data waktu retensi dan nomor atom karbon tersebut disimpan didalam sebuah file teks dengan format nomor karbon dan waktu retensi yang berpasangan. Berikut source code proses input data:
//Simpan data waktu retensi dan nc kedalam array while((fscanf(iFile,"%d\t%lf\n",&c,&b))!=EOF){
n[z] = c;
rt[z] = b;
sum+=n[z];
z++;
zz++;
TOT_NO_ATOM++; }
Proses dilakukan menggunakan perulangan while dari waktu retensi pertana hingga terakhir. Data waktu retensi dibaca lalu dimasukkan kedalam array rt[z] sedangkan data nomor karbon dimasukkan kedalam array n[z].
Selanjutnya dilakukan proses inisialisasi untuk setiap variabel seperti jumlah iterasi i=0, waktu mati awal=0, Prec=0.0001 dan lain-lain. Iterasi pertama adalah penentuan i[j] yang merupakan nilai indeks kovats teori dari masing-masing nomor karbon dan lt[j] merupakan log dari waktu retensi dikurangi waktu mati. Berikut source code dari proses tersebut:
//Looping mencari nilai i[j] dan lt[j]
for(j = 0;j<TOT_NO_ATOM;j++){
i[j]=n[j]*100;
sx=sx+i[j];
xs=xs+(i[j]*i[j]);
lt[j] = log(fabs(rt[j]-t0));
}
Lalu dilanjutkan dengan menghitung nilai A (Slope), B (intercept) dan nilai LINEAR SQUARE ADJUSMENT. Setelah itu dihasilkan nilai SXX dimana jika SXX lebih besar dari SUM maka iterasi akan berlanjut hingga keadaan tersebut berhenti.
//Mencari nilai Linear Square Adjustment mx = sx/TOT_NO_ATOM;
my = sy/TOT_NO_ATOM;
nm = sm - ((sx * sy) / TOT_NO_ATOM);
dn = xs - ((sx * sx) / TOT_NO_ATOM);
aa = nm/dn; //slope
bb = my - (aa*mx); //intercept
17
rr = nm / sqrt(fabs((xs - ((sx*sx)/TOT_NO_ATOM)) * (ys- ((sy*sy)/TOT_NO_ATOM))));
Jika SXX sudah tidak lebih besar SUM maka dilanjutkan dengan iterasi kedua dimana jika SXX lebih besar sama dengan SUM maka nilai t0 = t0 + 2dt0, jika SSX lebih kecil dari SUM maka nilai t0 = t0 + dt0. Iterasi akan berhenti jika dto lebih kecil daripada prec yang telah di inisialisasi diawal.
5.1.3. Program penentuan waktu mati metode Spreadsheet
Program metode Spreadsheet Braithwaite dibangun berdasarkan alir diagram metode penentuan waktu mati Braithwaite. Program yang dibuat yaitu hanya Braithwaite.c sebagai program utama. Sintak untuk menjalankan program ini yaitu:
./Braithwaite [data-waktu-retensi.txt] [file-output.txt] – lm
Parameter Command Line Argument dari program Braithwaite ini sama dengan program sebelumnya, dimana data input berupa file *.txt dari waktu retensi yang ingin dihitung waktu matinya dan file output berupa file *.txt yang berisi proses serta hasil perhitungan waktu mati dari metode Spreadsheet.
18 Gambar 5.3 Flowchart metode Spreadsheet
19 Cara Kerja Program metode Spreadsheet
Program dimulai dengan proses input data waktu retensi dan nomor atom karbon.
Data waktu retensi dan nomor atom karbon tersebut disimpan didalam sebuah file teks dengan format nomor karbon dan waktu retensi yang berpasangan. Berikut source code proses input data:
//Simpan data waktu retensi dan nc kedalam array while((fscanf(iFile,"%d\t%lf\n",&c,&b))!=EOF){
n[z] = c;
rt[z] = b;
sum+=n[z];
z++;
zz++;
TOT_NO_ATOM++; }
Proses dilakukan menggunakan perulangan while dari waktu retensi pertana hingga terakhir. Data waktu retensi dibaca lalu dimasukkan kedalam array rt[z]
sedangkan data nomor karbon dimasukkan kedalam array n[z].
Selanjutnya dilakukan proses inisialisasi untuk setiap variabel seperti jumlah iterasi i=0, waktu mati awal = rt[0]-0.1, Prec=0.001 dan lain-lain. Proses pertama kali dilakukan pada metode ini yaitu menghitung logaritma dari waktu retensi dikurangi waktu mati awal. Hasil dari perhitungan ini menjadi dasar perhitungan nilai koefisien korelasi 1 (kv1), setelah kv1 didapatkan maka nilai kv1 diserahkan kepada kv2, lalu t0 = t0 – dt0 lalu nilai kv1 dihitung ulang.
kv1 = nm / sqrt(fabs((xs - ((sx*sx)/TOT_NO_ATOM)) * (ys- ((sy*sy)/TOT_NO_ATOM))));
Jika (1-kv1) < (1-kv2) maka perulangan sebelumnya dilanjutkan, nila kv1 dan kv2 dihitung kembali hingga keadaan (1-kv1) < (1-kv2) menjadi salah.
if((1-kv1)<(1-kv2)){
}else{
}}while((1-kv1)<(1-kv2));
}else{
}
if(kv2>kv1){
if(dt0==0.001){
t0 = t0 + dt0;
}else{
t0 = t0 + (2*dt0);
}}
20 Nilai waktu mati yang dihasilkan akan didapat jika nilai dt0 lebih kecil daripada nilai prec yang telah diinisialisasi sebelumnya. Pada dasarnya metode ini mirip dengan metode iterasi dimana perulangan akan terus dilakukan hingga nilai penentu lebih kecil dari pada nilai presisi (prec).
5.1.4. Program penentuan waktu mati metode Statistik
Program metode Statistik Grobler dibangun berdasarkan alir diagram metode penentuan waktu mati Grobler. Program yang dibuat yaitu hanya Grobler.c sebagai program utama. Sintak untuk menjalankan program ini yaitu:
./Grobler [data-waktu-retensi.txt] [file-output.txt] –lm
Parameter Command Line Argument dari program Grobler ini sama dengan program sebelumnya, dimana data input berupa file *.txt dari waktu retensi yang ingin dihitung waktu matinya dan file output berupa file *.txt yang berisi proses serta hasil perhitungan waktu mati dari metode Statistik.
21 Gambar 5.4. Flowchart metode Statistik
Cara Kerja Program metode Iterasi
Program dimulai dengan proses input data waktu retensi dan nomor atom karbon.
Data waktu retensi dan nomor atom karbon tersebut disimpan didalam sebuah file teks dengan format nomor karbon dan waktu retensi yang berpasangan. Berikut source code proses input data:
//Simpan data waktu retensi dan nc kedalam array while((fscanf(iFile,"%d\t%lf\n",&c,&b))!=EOF){
n[z] = c;
rt[z] = b;
sum+=n[z];
22
z++;
zz++;
TOT_NO_ATOM++; }
Proses dilakukan menggunakan perulangan while dari waktu retensi pertana hingga terakhir. Data waktu retensi dibaca lalu dimasukkan kedalam array rt[z]
sedangkan data nomor karbon dimasukkan kedalam array n[z].
Selanjutnya dilakukan proses inisialisasi untuk setiap variabel seperti jumlah iterasi i=0 dan lain-lain. Proses pertama kali dilakukan pada metode ini yaitu menghitung nilai slope menggunakan source code berikut:
for(j=0;j<TOT_NO_ATOM;j++){
t1 += pow(q,n[j]);
t2 += rt[j] * pow(q,n[j]);
t3 += pow(q,(2 * n[j]));
t4 += rt[j];
}
t5 = pow (t1,2); //t5=slope
Perhitungan waktu mati dimetode statistika ini sangat sederhana, dimana hanya menghitung nilai slope lalu menghitung nilai t0 menggunakan persamaan 3.9. Waktu mati dihasilkan menggunakan perhitungan statistika antara waktu retensi yang saling berdekatan, sehingga untuk menghitung waktu mati menggunakan metode ini, data waktu retensi harus memili nilai bilangan karbon yang berurutan (Regulary) dan tidak dapat diterapkan untuk data yang tidak berurutan (Unregulary). Berikut source code dari perhitungan waktu mati metode statistik:
t0 = fabs(((t1 * t2) - (t3 * t4))/(t5 - (TOT_NO_ATOM * t3)));
23 Hasil Perhitungan Waktu Mati
Perhitungan waktu mati menggunakan data HPLC menggunakan deret homolog n- alkana, 2-Alkanone, Alkilbenzole dan Akylaryketone. Pengujian dilakukan pada dua sistem yaitu Methanol Air (MeOH/H2O) dan Acetonitrile Air (ACN/H2O). Masing- masing sistem diuji menggunakan polaritas berbeda. Perbandingan dilakukan dengan menguji data pada pengaruh Polaritas, dimana sistem yang digunakan selalu tetap dengan polaritas yang berbeda sedangkan untuk pengaruh sistem, maka waktu mati akan dihitung berdasarkan sistem yang berbeda dimana polaritas yang digunakan akan tetap.
Data waktu retensi yang digunakan yaitu data pada deret homolog n-alkana, 2- Alkanone, Alkilbenzole dan Akylaryketone yang divariasikan pada kolom yang sama.
Parameter polaritas pada suhu yang sama juga digunakan agar mendapatkan hasil yang bervariasi. Perlakuan ini bertujuan untuk memperoleh hasil perhitungan waktu mati secara matematis memiliki faktor pembanding yang tepat sehingga dapat dijelaskan secara numerik maupun melalui pendekatan kimia.
Waktu mati dihitung menggunakan metode non-linier, iterasi, spreadsheet dan statistika yang sudah dibangun menggunakan bahasa pemrograman ANSI C. Perhitungan dilakukan pada mesin yang sama sehingga perhitungan waktu mati yang dihasilkan akan valid terhadap pengaruh kinerja mesin dan compiler yang digunakan.
Pengujian dilakukan pada Polaritas yang beragam yaitu 80/20, 70/30, 60/40, 50/50 dan 40/60 dan Deret Homolog yang beragam untuk masing – masing sistem Methanol Air dan Acetronitrile Air. Dari hasil pengujian akan didapatkan nilai waktu mati yang akan dibandingkan berdasarkan perubahan uji parameter Polaritas dan Deret Homolog sehingga didapatkan trend data yang menunjukkan metode yang akurat dalam penentuan waktu mati pada sistem HPLC.
24 Hasil Perhitungan Waktu Mati Pengaruh Polaritas
Tabel 5.1. Hasil Perhitungan Waktu Mati Pengaruh Polaritas pada Methanol dan Acetonitrile
Perhitungan waktu mati pada sistem yang tetap menunjukkan hasil dimana metode iterasi, spreadsheet dan statistic menghasilkan waktu mati yang stabil dengan error dibawah 10%, sedangkan metode non-linier menghasilkan waktu mati yang lebih tinggi dimana untuk setiap sistem dan polaritas dengan nilai error diatas 20%.
Gambar 5.5 Hasil Perhitungan Waktu mati pada Polaritas 80/20
Eluent
Method GU WA BR GR GU WA BR GR
n-AKN 1.11 5.805 1.111 1.085 1.174 4.855 1.175 1.198
ABZ 2.516 7.044 2.517 2.545 1.376 3.463 1.377 1.42
2-AKN 1.136 1.77 1.136 1.144 1.126 1.714 1.127 1.137
AAK 1.224 2.333 1.224 1.228 1.188 2.095 1.188 1.171
n-AKN 2.516 7.044 2.517 2.545 0.983 6.007 0.984 0.949
ABZ 1.863 3.271 1.864 1.923 1.519 4.212 1.52 1.591
2-AKN 1.214 1.914 1.214 1.261 1.15 1.977 1.15 1.128
AAK 1.156 2.095 1.156 1.079 1.057 2.667 1.057 0.94
n-AKN 0.0001 23.057 0.662 0.59 1.232 6.596 1.233 1.228
ABZ 4.147 5.601 4.147 4.238 1.71 4.292 1.71 1.828
2-AKN 1.186 1.537 1.187 1.208 1.125 2.2 1.126 1.1
AAK 1.16 1.91 1.161 1.086 1.059 2.954 1.059 0.919
n-AKN 1.255 23.561 1.255 1.123
ABZ 2.311 7.222 2.312 2.622
2-AKN 1.186 1.387 1.187 1.159 1.112 1.869 1.112 1.098
AAK 1.024 1.847 1.024 0.948 0.358 2.264 0.359 0.112
n-AKN
ABZ 4.835 5.851 4.835 4.835
2-AKN 1.173 1.775 1.174 1.183
AAK 0.336 1.851 0.337 0.282
50/50
40/60
Methanol Acetonitrile
80/20
70/30
60/40
25 Gambar 5.6 Hasil Perhitungan Waktu mati pada Polaritas 70/30
Gambar 5.7 Hasil Perhitungan Waktu mati pada Polaritas 60/40
Gambar 5.8 Hasil Perhitungan Waktu mati pada Polaritas 50/50
26 Hasil Perhitungan Waktu Mati Pengaruh Deret Homolog
Tabel 5.2. Hasil Perhitungan Waktu Mati Pengaruh Deret Homolog pada Methanol dan Acetonotrile
Perhitungan waktu mati pada polaritas yang tetap menunjukkan hasil dimana metode iterasi, spreadsheet dan statistic menghasilkan waktu mati yang stabil dengan error juga sama dengan sebelumnya yaitu dibawah 10%, sedangkan metode non-linier menghasilkan waktu mati yang lebih tinggi dimana untuk setiap sistem dan polaritas dengan nilai error diatas 20%.
Eluent
Method GU WA BR GR GU WA BR GR
80/20 1.11 5.805 1.111 1.085 1.174 4.855 1.175 1.198
70/30 2.516 7.044 2.517 2.545 0.983 6.007 0.984 0.949
60/40 0.0001 23.057 0.662 0.59 1.232 6.596 1.233 1.228
50/50 1.255 23.561 1.255 1.123
40/60
80/20 2.516 7.044 2.517 2.545 1.376 3.463 1.377 1.42
70/30 1.863 3.271 1.864 1.923 1.519 4.212 1.52 1.591
60/40 4.147 5.601 4.147 4.238 1.71 4.292 1.71 1.828
50/50 2.311 7.222 2.312 2.622
40/60 4.835 5.851 4.835 4.835
80/20 1.136 1.77 1.136 1.144 1.126 1.714 1.127 1.137
70/30 1.214 1.914 1.214 1.261 1.15 1.977 1.15 1.128
60/40 1.186 1.537 1.187 1.208 1.125 2.2 1.126 1.1
50/50 1.186 1.387 1.187 1.159 1.112 1.869 1.112 1.098
40/60 1.173 1.775 1.174 1.183
80/20 1.224 2.333 1.224 1.228 1.188 2.095 1.188 1.171
70/30 1.156 2.095 1.156 1.079 1.057 2.667 1.057 0.94
60/40 1.16 1.91 1.161 1.086 1.059 2.954 1.059 0.919
50/50 1.024 1.847 1.024 0.948 0.358 2.264 0.359 0.112
40/60 0.336 1.851 0.337 0.282
Alkylbenzole
2-Alkanone
Alkylarylketone
Methanol Acetonitrile
n-alkana
27 Gambar 5.9 Hasil Perhitungan Waktu mati pada Deret Homolog n-alkana
Gambar 5.10 Hasil Perhitungan Waktu Mati pada Deret Homolog Alkylbenzole
Gambar 5.11 Hasil Perhitungan Waktu Mati pada Deret Homolog 2-Alkanone
Gambar 5.12 Hasil Perhitungan Waktu Mati pada Deret Homolog Alkylarylketone
28
6 BAB VI
SIMPULAN DAN SARAN
Simpulan Penelitian
Perhitungan waktu mati tidak dipengaruhi oleh sistem yang digunakan
Hasil penentuan waktu mati pada n-alkana dan 2-Alkananone cenderung stabil terhadap pengaruh polaritas, sedangkan pada Alkilbenzole dan alkylaryketone terdapat tred data terhadap tingkat polaritas.
Hampir semua metode penentuan waktu mati secara matematis dapat digunakan pada sistem GC termasuk metode non-linier, sedangkan pada sistem LC metode non-linier tidak dapat digunakan.
Saran
Menguji perhitungan waktu mati menggunakan metode matematis lainnya dan juga pada sistem hplc lainnya.
29
7 DAFTAR KEPUSTAKAAN
Furr, H. C., 1989, Calculation of Chromatographic Dead Times and Retention Indices with the Aid of a Computer Program in BASIC, Journal of Chromatographic Science, Vol. 27.
Guardino, X., Albaiges, J., Firpo, G., Rodrigues-Vinals, R., Gassiot, M. 1976. Accuracy in the Determination of Kovats Retention Index, Journal of Chromatography, 118:13.
J.A. Garcia Dominguez, J. Garcia Munoz, E. Fernandez Sanchez and M.J. Molera, J.
Chromatogr. Sci., 15 (1977) 520.
J.F. Parcher and D.M. Johnson, J. Chromatogr. Sci., 18 (1980) 267.
Kovats, E., 1958, Gas-chromatographische Charakterisierung organischer Verbindungen, Teil 1: Retentionsindices aliphatischer Halogenide, Alkohole, Aldehyde und Ketone, Helvetica Chemica Acta, Vol XLI, No. 206 (1058) 1915- 1932
López, J. E. Q., Aguilar, R. L., Domínguez, J. A. G., 1997, J. Chromatogr., A 767, 127.
Pratiwi , S.U.T., Hertiani, T., Idroes, R., Lagendijk, E.L., Weert, S.de., Hondel, C.V.D, Quorum quenching and biofilm-degrading activity of massoia oil against Candida albicans and Pseudomonas aeruginosa, Planta Medica, Indexed Scopus, Vol. 81, S 01, P787
Pratiwi, S.U.T., Lagendijk, E.L., S. de Weert, Idroes, R., Hertiani, T., Van der Hondel, C., Effect of Cinnamomum burmanii Nees ex Bl. and Massoia aromatica Becc.
Essential Oils on Planktonic Growth and Biofilm formation of Pseudomonas aeruginosa and Staphylococcus aureus In Vitro, International Journal of Applied Research in Natural Products (IJARNP), Indexed Scopus, Impact Factor 1,32, Vol. 8, No. 2, hal 1-13, ISSN : 1940-6223, 2015
Toth, A. & Zala, E. 1984. Contribution to the Calculation of the Constants of the n- Alkane Retention Time Curve and Gas Hold-Up Time in Gas-Liquid Chromatography, J. of Chromatography, 284, 53.
Waetzig, H., 1989, Reproduzierbarkeit und Vorhersage von Retentionsdaten in der HPLC, Diss., Wurzburg.
Waetzig, H., Ebel, S. 1991, Estimation of Dead-Time in Liquid Chromatography from Retention Behaviour of Homologous Series by Non-Linear Regression, Jurnal of Chromatographia 31, 544-548.
Waetzig, H., Ebel, S. Holley, A., 1992, A Straightforward Algorithm To Estimate The Dead Time In GC From The Retention Behavior Of Homologous Series, Fresenius Journal Analytical Chemistry, 344, 354-356..
Zinburg, J. H. R., & Ballschmiter, H. N. K. (1979). inearen Zusammenhanges zwischen Nettoretentionszeit und ohlenstoffzahl von n-Alkanen, 12(7), 451–45
30 Lampiran 1. Source Code Metode Non-linier
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include "kali2.c"
#include "invers.c"
#define EPS 0.001
#define N_KOLOM_MATRIKS 3
double *invers_matriks( int n, double
Y[N_KOLOM_MATRIKS][N_KOLOM_MATRIKS], double *ptrMatriks);
int main(int args, char *argv[]){
time_t start, stop;
clock_t ticks; long count;
time(&start);
//Buka file
FILE *iFile, *oFile;
int c, n[1000], i=0, TOT_NO_ATOM=0;
double b, trlab [1000];
iFile = fopen(argv[1],"r");
oFile = fopen(argv[2],"w");
if(iFile == NULL || oFile == NULL){
printf("Error Openning file\n");
return EXIT_FAILURE;
}
while((fscanf(iFile,"%d\t%lf\n",&c,&b))!=EOF){
n[i] = c;
trlab[i] = b;
i++;
TOT_NO_ATOM++;
}
double tmati, a0mati, a1mati, t0 =0.9, a0=1, a1=1, trn[TOT_NO_ATOM], D[TOT_NO_ATOM][N_KOLOM_MATRIKS],
dt[TOT_NO_ATOM][1], transpose[N_KOLOM_MATRIKS][TOT_NO_ATOM], Y[3][3], Z[3][3], tmp[N_KOLOM_MATRIKS][TOT_NO_ATOM],
dx[N_KOLOM_MATRIKS][1], IR [TOT_NO_ATOM];
double epst0= EPS, epsa1= EPS, epsa0= EPS;
int j, iterasi =0;
double dxt0,dxa0,dxa1;
do{
//Menghitung tr^
for(i=0; i<TOT_NO_ATOM; i++){
trn[i]=t0*(1+exp(a1*n[i]+a0));
//double tes = exp(a1*n[i]+a0);
//fprintf(oFile,"Tes : %lf",tes);
printf("tr[%i] = %lf\n", i+1, trn[i]);
fprintf (oFile,"tr[%i] = %lf\n", i+1, trn[i]);
31
}
printf("\n");
fprintf (oFile,"\n");
//Menghitung delta t
for (i=0; i<TOT_NO_ATOM; i++){
for(j=0; j<1; j++){
dt[i][j] = trn[i]-trlab[i];
} }
printf("\nDelta T :\n");
fprintf (oFile,"\nDelta T :\n");
for(i = 0; i < TOT_NO_ATOM; i++){
for(j = 0; j < 1; j++){
printf("%lf\t", dt[i][j]);
fprintf (oFile,"%lf\t", dt[i][j]);
}
printf("\n");
fprintf (oFile,"\n");
}
printf("\n");
fprintf (oFile,"\n");
//Menghitung matriks D printf("\nMatriks D :\n");
fprintf (oFile,"\nMatriks D :\n");
for (i=0; i<TOT_NO_ATOM; i++){
for(j=0; j<N_KOLOM_MATRIKS; j++){
switch (j){
case 0 : D[i][j] = 1+exp(a1*n[i]+a0);break;
case 1 : D[i][j] = t0*exp(a1*n[i]+a0);break;
case 2 : D[i][j] = n[i]*t0*exp(a1*n[i]+a0); break;
}
transpose[j][i] = D[i][j]; //Menghitung transpose matriks D
printf("%lf\t", D[i][j]);
fprintf (oFile,"%lf\t", D[i][j]);
}
printf("\n");
fprintf (oFile,"\n");
}
printf("\n");
fprintf (oFile,"\n");
printf("\nTranspose D :\n");
fprintf (oFile,"\nTranspose D :\n");
for( i = 0 ; i < N_KOLOM_MATRIKS ; i++ ){
for( j = 0 ; j < TOT_NO_ATOM ; j++ ){
printf("%lf\t",transpose[i][j]);
fprintf (oFile,"%lf\t",transpose[i][j]);
}
printf("\n");
fprintf (oFile,"\n");
}
//Perkalian matriks D dengan tranpose D
32
kali_matriks (N_KOLOM_MATRIKS, TOT_NO_ATOM, N_KOLOM_MATRIKS, transpose, D, &Y[0][0]);
printf("\nMatriks Y\n");
fprintf (oFile,"\nMatriks Y\n");
for (i=0; i<N_KOLOM_MATRIKS; i++){
for(j=0; j<N_KOLOM_MATRIKS; j++){
printf ("%lf\t", Y [i][j]);
fprintf (oFile,"%lf\t", Y [i][j]);
}
printf ("\n");
fprintf (oFile,"\n");
}
//Menghitung inverse matrik D*DT
invers_matriks (N_KOLOM_MATRIKS, Y, &Z[0][0]);
printf("\nMatriks Z\n");
fprintf (oFile,"\nMatriks Z\n");
for(i = 0; i < N_KOLOM_MATRIKS; i++){
for(j = 0; j < N_KOLOM_MATRIKS; j++){
printf("%.5lf\t", Z[i][j]);
fprintf (oFile,"%.5lf\t", Z[i][j]);
}
printf("\n");
fprintf (oFile,"\n");
}
//Perkalian matriks inverse matrik D*DT dengan tranpose D
==> (DTD)-1 DT Delta T
kali_matriks (N_KOLOM_MATRIKS, N_KOLOM_MATRIKS, TOT_NO_ATOM, Z, transpose, &tmp[0][0]);
printf("\nMatriks tmp\n");
fprintf (oFile,"\nMatriks tmp\n");
for(i = 0; i < N_KOLOM_MATRIKS; i++){
for(j = 0; j < TOT_NO_ATOM; j++){
printf("%.5lf\t", tmp[i][j]);
fprintf (oFile,"%.5lf\t", tmp[i][j]);
}
printf("\n");
fprintf (oFile,"\n");
}
//Menghitung matriks delta x
kali_matriks (N_KOLOM_MATRIKS, TOT_NO_ATOM, 1, tmp, dt,
&dx[0][0]);
printf("\nMatriks Delta X\n");
fprintf (oFile,"\nMatriks Delta X\n");
for(i = 0; i < N_KOLOM_MATRIKS; i++){
for(j = 0; j < 1; j++){
printf("%lf\t", dx[i][j]);
fprintf (oFile,"%lf\t", dx[i][j]);
}
printf("\n");
fprintf (oFile,"\n");
}
//Menghitung nilai absolute dari setiap member matriks delta x
33
dx[0][0] = fabs(dx[0][0]);
dx[1][0] = fabs(dx[1][0]);
dx[2][0] = fabs(dx[2][0]);
dxt0 = fabs(dx[0][0]);
dxa0 = fabs(dx[1][0]);
dxa1 = fabs(dx[2][0]);
//update nilai t0, a0 dan a1 t0 = t0+dx[0][0];
a0 = a0+dx[1][0];
a1 = a1+dx[2][0];
t0 = fabs(t0);
a0 = fabs(a0);
a1 = fabs(a1);
tmati = t0;
a0mati = a0;
a1mati = a1;
if(dxt0 < epst0 ){
fprintf (oFile,"\nBENAR 1\n");
}
if(dxa1 < epsa1 ){
fprintf (oFile,"\nBENAR 2\n");
}
if(dxa0 < epsa0 ){
fprintf (oFile,"\nBENAR 3\n");
}
fprintf (oFile,"t0 : %lf\n",tmati);
fprintf (oFile,"a0 : %lf\n",a0mati);
fprintf (oFile,"a1 : %lf\n\n",a1mati);
fprintf (oFile,"delta t0 : %lf\n",dx[0][0]);
fprintf (oFile,"delta a0 : %lf\n",dx[1][0]);
fprintf (oFile,"delta a1 : %lf\n\n",dx[2][0]);
iterasi++;
fprintf (oFile,"ITERASI : %d\n\n",iterasi);
fprintf (oFile,"\n--- ---\n");
} while (dxa0<epsa0);
//Print hasil tmati, a0mati dan a1mati kelayar dan ke file printf ("\nITERASI = %d\n", iterasi);
fprintf (oFile,"\nITERASI = %d\n", iterasi);
printf("\ntmati = %lf", tmati);
fprintf(oFile,"\ntmati = %lf", tmati);
34
printf("\n\n");
int test;
while(test<50000) {
test++;
ticks = clock();
}
time(&stop);
printf("Waktu yang digunakan : %0.5f detik\n\n", (double)ticks/CLOCKS_PER_SEC);
//printf("Finished in about %.5f seconds. \n", difftime(stop, start));
return EXIT_SUCCESS;
}
35 Lampiran 2. Source Code Metode Iterasi
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
/*
Author : Rivansyah Suhendra 2 Oktober 2016
*/
int main(int args, char *argv[]){
time_t start, stop;
clock_t ticks; long count;
time(&start);
//Baca File
FILE *iFile, *oFile;
int c, n[1000], z=0, TOT_NO_ATOM=0;
double b, rt[1000];
iFile = fopen(argv[1],"r");
oFile = fopen(argv[2],"w");
if(iFile == NULL || oFile == NULL){
printf("Error Openning file\n");
return EXIT_FAILURE;
}
//Simpan data waktu retensi dan nc kedalam array while((fscanf(iFile,"%d\t%lf\n",&c,&b))!=EOF){
n[z] = c;
rt[z] = b;
z++;
TOT_NO_ATOM++;
}
//Inisialisasi variabel int j,iterasi=0;
double dtm = 1,t0 = 0, prec=0.00001, lt[1000],
i[1000],ic[1000],nm,dn,aa,bb,rr,sum=0,lowlim = 999990, uplim = 999999,IR [TOT_NO_ATOM];
//double st[1000],ki[1000];
//Perulangan dengan kondisi dtm > prec do{
//Perulangan selama SUM < LOWLIM do{
iterasi++;
//set variabel menjadi 0
double sx=0,mx=0,sy=0,my=0,xs=0,ys=0,sm=0,xy=0;
printf("\t===================\n");
printf("\tIterasi : %d\n",iterasi);
//Looping mencari nilai i[j] dan lt[j]
36
for(j = 0;j<TOT_NO_ATOM;j++){
i[j]=n[j]*100;
sx=sx+i[j];
xs=xs+(i[j]*i[j]);
lt[j] = log(fabs(rt[j]-t0));
if(isinf(lt[j])){
lt[j] = 0;
}
sy = sy+lt[j];
ys = ys + lt[j]*lt[j];
xy = i[j] * lt[j];
sm = sm + xy;
}
//Mencari nilai Linear Square Adjustment mx = sx/TOT_NO_ATOM;
my = sy/TOT_NO_ATOM;
nm = sm - ((sx * sy) / TOT_NO_ATOM);
dn = xs - ((sx * sx) / TOT_NO_ATOM);
aa = nm/dn; //slope
bb = my - (aa*mx); //intercept
rr = nm / sqrt(fabs((xs - ((sx*sx)/TOT_NO_ATOM)) * (ys-((sy*sy)/TOT_NO_ATOM))));
sum = 0;
//Perulangan mencari nilai ic[j] dan sum atau sxx for(j = 0;j<TOT_NO_ATOM;j++){
ic[j] = (log(fabs(rt[j]-t0))-bb)/aa;
sum = sum + pow((i[j] - ic[j]),2);
}
printf("\tA = %lf\n",aa);
printf("\tB = %lf\n",bb);
printf("\tR = %lf\n",rr);
printf("\tSXX = %lf\n",sum);
printf("\tSUM = %lf\n",lowlim);
printf("\tSAM = %lf\n",uplim);
printf("\tT0 = %lf\n",t0);
//Jika sum > lowlim perulangan selesai if(sum > lowlim){
break;
}
//jika tidak perulangan berlanjut else{
uplim = lowlim;
lowlim = sum;
t0 = t0 + dtm;
}
}while(sum <= lowlim);
if(sum >= uplim){
t0 = t0 - (2*dtm);
lowlim = uplim;
dtm = dtm/10;
37
}else{
t0 = t0 - dtm;
dtm = dtm/10;
}
if (dtm > prec){
t0 = t0 + dtm;
}else{
break;
}
}while (dtm > prec);
printf("\t===================\n");
printf("\n\n\t===================\n");
printf("\tHasil Akhir :\n");
printf ("\n\tT0 = %lf\n", t0);
printf("\tA = %lf\n",aa);
printf("\tB = %lf\n",bb);
printf("\tR = %lf\n",rr);
printf ("\tIterasi = %d\n", iterasi);
fprintf(oFile,"Hasil Akhir :\n");
fprintf (oFile,"\nT0 = %lf\n", t0);
fprintf(oFile,"A = %lf\n",aa);
fprintf(oFile,"B = %lf\n",bb);
fprintf(oFile,"R = %lf\n",rr);
fprintf (oFile,"Iterasi = %d\n", iterasi);
printf("\t===================\n\n");
int test;
while(test<50000) {
test++;
ticks = clock();
}
time(&stop);
printf("Waktu yang digunakan : %0.5f detik\n\n", (double)ticks/CLOCKS_PER_SEC);
//printf("Finished in about %.5f seconds. \n", difftime(stop, start));
return 1;
}