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

Debugging bahasa C dengan GDB

Sering kali saat kita melakukan coding, code kita dapat berjalan dengan baik, namun mengeluarkan hasil yang salah. Nah, ini lebih memusingkan dibanding dengan jika kode kita error karena tidak bisa dicompile. Disini saya akan menuliskan salah satu cara untuk melakukan debugging dengan software yang bernama GDB. Keterangan lebih jelas mengenai GDB bisa di cek di link berikut . Artikel asli yang saya pelajari diperoleh dari link berikut . Akan saya ulas lagi berdasarkan percobaan yang telah saya lakukan.  Buat code untuk menghitung nilai faktorial suatu angka. Untuk diingat, cara menghitung faktorial adalah n!= n*(n-1)*...*1, Misal 3! = 3*2*1 = 6. Untuk membuat code nya, kami menggunakan vim. sehingga caranya adalah  $ vim factorial.c # include <stdio.h> int main() { int i, num, j; printf ("Masukkan angka: "); scanf ("%d", &num ); for (i=1; i<num; i++) j=j*i; printf("Nilai faktorial dari %d adalah %d\n",num,j); }

Python: mengakses data dari file text

 Pada kesempatan kali ini saya akan menulis mengenai catatan saya saat belajar Python. Saya membutuhkan Python untuk memudahkan saya dalam mengolah data yang dihasilkan oleh aplikasi yang yang dihasilkan oleh bahasa C. Data tersebut berupa matriks yang tertulis dengan model scientific notation  (1.45e-5).  Pembacaan nya menggunakan numpy sehingga perlu melakukan import numpy terlebih dahulu. import numpy as np Kemudian definisikan path file yang akan dibaca csv_path="gRslt.txt" np.set_printoptions(suppress=True) Setelah lokasi file didefinisikan, kemudian masukkan data yang akan dibaca ke dalam variabel data bacadata= np.loadtxt(csv_path) Untuk menampilkan data, print data tersebut. print(bacadata[200]) Jika data kita berupa matriks, maka untuk memunculkan nilai dari baris ke 2 kolom ke 3 adalah dengan cara print(bacadata[2,3]) Ingat, penomoran baris dan kolom pada list python dimulai dengan index 0. sehingga untuk baris pertama dan kolom pertama adalah "bacadata[0,0]&qu