Langsung ke konten utama

Belajar Fitting data menggunakan Wolfram Mathematicha

 Berikut adalah beberapa contoh video tutorial untuk mengani list dengan wolfram mathematica


Adapun tutorial yang lebih santai adalah 



Pada tulisan kali ini, saya akan berbagi tentang bagaimana cara mengolah data yang dihasilkan oleh kalkulasi C++. Data yang saya gunakan menggunakan scientific notation yang biasanya ditulis dengan 1.45E-5. Nah permasalahan yang saya temui adalah format yang digunakan oleh Mathematicha adalah 1.45x10-5, sehingga perlu dilakukan penyesuaian. 

Untuk melakukan penyesuaian ada banyak cara. Salah satunya adalah menuliskan nya secara manual. Namun, bagaimana jika data kita sangat banyak? Gak mungkin kan mengubah nya satu per satu. 

Ok, kita mulai dengan bagaimana cara meng-import data dari file text. Pertama kit beri nama data yang akan kita import dengan "datamentah".

in[1]:= datamentah = Import["/folder location/file.txt"];

Saat data tersebut diimport ke dalam "datamentah" data tersebut basih ber format string. Kemudian kita ubah menjadi string dengan format yang disesuaikan dengan Mathematicha (1.45x10-5). 

in[2]:= datastring = ImportString[datamentah, "Table"];

Kemudian saya ingin mengambil data spesifik pada kolom 1 dan 4. Untuk mengambil data tersebut, pada kasus saya saya harus mengubah baris dan kolom terlebih dahulu. Karena secara dafault data yang terpanggil di list adalah secara baris. Untuk mengubah baris dan kolom, menggunakan:

in[3]:= datatstringtrans = Transpose[datastring]

Kemudian untuk mengambil data pada kolom 1 dan 4, yang tentu saja sekarang statusnya berubah menjadi baris dengan cara:

in[4]:= datax = datatstringtrans[[1]];
in[5]:= datay = datatstringtrans[[4]];

Yang artinya adalah saya ingin mengambil data di baris 1 sebagai x dan 4 sebagai y. 

Kemudian saya ingin menyatukan keduanya menjadi data untuk plotting dan fitting yang saya beri nama H2O2.

in[6]:= dataH2O2 = Transpose[{datax, datay}]

dataH2O2 saat ini terdiri dari datax dan data y. Dengan bentuk 2 buah kolom x dan y. Untuk melihat dalam bentuk matrix adalah 

in[7]:= MatrixForm[dataH2O2]

Nah, kemudian setelah bentuknya x dan y, maka kita dapat mencari fitting data nya. Caranya adalah dengan membuat model fitting data nya dulu. yaitu.

in[8]:= model = a Exp[-k t];

Kemudian mencari fitting data dengan model yang sudah dibuat.

in[9]:= FindFit[dataH2O2, model, {a, k}, t];

in[10]:= fit = FindFit[dataH2O2, model, {a, k}, t];

in[11]:= modelf = Function[{t}, Evaluate[model /. fit]]

in[12]:= Plot[modelf[t], {t, 0, 0.00009}, Epilog -> Map[Point, dataH2O2]]

in[13]:= {tl, yl} = Transpose[dataH2O2];

in[14]:= residuals = yl - Map[modelf, tl];

in[15]:= ListPlot[residuals, Filling -> Axis, DataRange -> {Min[tl], Max[tl]},PlotRange -> {{0, 0.0009}, All}]


Nah, dari sini akan dihasilkan berapa besar nya error dalam bentuk plot.

Nah setelah file notebook disimpan dan kemudian akan dibuka kembali di lain waktu, biasanya file notebook tidak bisa langsung berjalan. Harus dijalankan per baris. Tentu saja ini sangat tidak nyaman. Sehingga cara nya agar cepat adalah menjalankan semuanya sekaligus. Cara nya adalah dengan menekan "Evaluation" kemudikan "Evaluate Notebook". Dengan demikian notebook akan menjalankan semua perintah hingga baris terakhir.


Komentar

Postingan populer dari blog ini

Bahasa C: Pembahasan tentang isfinite

 Saat melakukan coding cumeric, ada kalanya kita harus mengecek apakah angka yang akan digunakan untuk menghitung berupa angka "normal" nilai nya melebihi range angka yang disetujui ataukan angkanya terlalu besar. Jika membuat fungsi sendiri, bisa jadi akan memakan waktu lama dan tidak efisien. Sehingga dalam bahasa C sudah disediakan library yang digunakan untuk mengecek bagaimana angka yang akan digunakan untuk menghitung.  Berikut adalah salah satu library yang disediakan oleh C untuk melaukan pengecekan angka yang akan digunakan untuk menghitung. Namanya adalah isfinite. Untuk lebih jelas nya dapat dilihat di link berikut .  isfinite berada dalam lingkungan <math.h>. Sehingga sebelum menggunakan nya perlu dilakukan pendefinisian header <math.h> terlebih dahulu.

Perjalanan mencari kitab elektronik

Sebagai seorang mahasiswa, saya ingin memiliki gadget yang secara khusus bisa digunakan untuk membaca dan menyimpan file buku. Awalnya saya membaca dengan HP, bisa sih tapi gak nyaman, karena layar terlalu kecil. Kemudian saya beralih ke tablet, saat itu saya menggunakan tablet merk Lenovo. Lebih nyaman dibandingkan HP, tapi lama kelamaan bosan juga karena saat itu ada tablet yang dilangkapi dengan "pena". Saat itu tablet saya gak ada pena nya. Beralih lah saya ke iPad 6 (2018) yang sudah support dengan "pen" sehingga bisa corat coret saat sedang membaca paper atau ebook.  Ipad sangat nyaman, kita bisa menginstall berbagai macam aplikasi. Baik yang gratis maupun yang berbayar. Untuk memenuhi kebutuhan saya dalam membaca, saya menggunakan 2 alpikasi andalan, yaitu GoodNotes dan LiquidText. GoodNotes yang saya gunakan adalah yang versi gratisan. Sedangkan yang LiquidText adalah yang berbayar. Membaca jurnal maupun ebook dengan software itu sangat nyaman. Bisa menurunk