Tuesday, January 2, 2018

Tutorial Least Square Non-Linear Di MATLAB

Dalam tutorial kali ini saya ingin memberikan sedikit pencerahan kepada pembaca tentang teknik least-square yang diberikan di MATLAB (yang untuk kasus saya adalah MATLAB 2009a). Jadi berhubung MATLAB 2009a lisensinya berakhir sekitar oktober 2017 (kendatipun lisensinya juga bajakan), maka saya harus melakukan pengakalan dengan memundurkan jam di komputer saya sehingga lisensinya masih bisa berlaku sampai malam ini (Januari 2018).

Teknik least-square merupakan teknik yang dilakukan untuk mencocokkan kurva. Jadi diasumsikan kurvanya harus tunduk terhadap persamaan tertentu, namun data yang diberikan ternyata berbeda karena memiliki noise dan error. Jadi kita diperintahkan untuk mencari parameter persamaan tersebut yang membuat kurvanya paling bersesuaian dengan datanya. Sehingga dengan diperolehnya nilai persamaan ini, maka dapat digunakan untuk meramalkan berapa nilai-nilai kedepannya tanpa perlu dilakukan pengambilan data secara langsung, atau bisa juga untuk keperluan-keperluan lain. Yang jelas kita membutuhkan nilai parameternya.

Misalkan kita memiliki nilai data curah hujan sepanjang musim yang bersifat periodik. Di mana kadang intensitas hujan ini besar, namun ada kalanya intensitasnya kecil, namun sifatnya periodik. Karena datanya periodik maka persamaan yang berkaitan adalah persamaan yang sifatnya periodik yang dalam hal ini adalah persamaan sinusoidal. Jadi kita ditugaskan mencari koefisien sinusodial yang membuat kurvanya paling mendekati data tersebut.

Misalkan data curah hujan tersebut diberikan oleh plot berikut:
Dengan script MATLAB:
%%
clc; 
d = 0:.01:2*pi;
y = cos(2*d) + .3*randn(size(d));
plot(d,y,'ko')
hold on;
Jadi dalam plot tersebut terlihat bahwa intensitas curah hujannya bersifat periodik. Namun karena adanya error dan faktor-faktor lainnya yang mempengaruhi, maka terdapat penyimpangan data tersebut dari fungsi periodik yang mengaturnya (governing equation) yang dalam ini persamaan $a * cos(2 *\theta)$. Maka kita kemudian dapat melakukan teknik least square, yang dalam hal ini mencari nilai parameter $a$ ini. Sebenarnya MATLAB 2009a sudah menyediakan fungsi yang dimaksud, yang diberikan oleh perintah lsqnonlin sehingga kita tidak perlu lagi melakukan iterasi manual misalnya dengan metode Lavenberg-Marquardt.

Jadi dengan menjalankan script berikut ini, maka kita akan dapat memperoleh nilai parameter $a$ tersebut.
%%
fun = @(r)r*cos(2*d)-y;
x0 = 4;
x = lsqnonlin(fun,x0); 
Sehingga bisa diperoleh plot hasil least-square curve-fittingnya
%%
plot(d, x*cos(2*d) ,'b-', 'linewidth', 3); 
xlabel('t')
ylabel('a*cos(t)') 
Pelajaran yang bisa diambil adalah, MATLAB 2009a ternyata sudah bisa memberikan banyak hal yang tidak terbayangkan oleh kita sebelumnya sehingga membantu kita dalam mengerjakan banyak hal-hal yang istimewa. Adapun source code lengkapnya adalah sebagai berikut:
%%
clc; 
d = 0:.01:2*pi;
y = cos(2*d) + .3*randn(size(d));
plot(d,y,'ko')
hold on;
%%
fun = @(r)r*cos(2*d)-y;
x0 = 4;
x = lsqnonlin(fun,x0); 

%%
plot(d, x*cos(2*d) ,'b-', 'linewidth', 3); 
xlabel('t')
ylabel('a*cos(t)') 

Bukti Bumi Datar: Eksperimen Michelson-Morley

Salah satu eksperimen termutakhir yang bisa disuguhkan ke pembaca yang bisa menjadi bukti penting bagi datarnya bumi adalah eksperimen Michelson-Morley. Tujuan awal eksperimen ini diadakan oleh para ilmuan untuk mendeteksi gerak relatif dari eter terhadap bumi.

Pada waktu itu ilmuan menganggap bahwa cahaya merambat layaknya gelombang-gelombang lainnya yakni membutuhkan medium perambatan. Dan tentu kecepatan cahaya akan dipengaruhi oleh kecepatan medium perambatan tersebut yang diistilahkan sebagai eter. Yang jadi bahan perdebatan pada waktu itu adalah persoalan apakah eter ini diam relatif terhadap bumi ataukah memiliki gerak relatif. Jika eter diam relatif terhadap bumi maka tentu ini disebabkan oleh adanya seretan bumi terhadap eter---analog dengan seretan bumi terhadap atmosfir dalam rotasinya---yang akibatnya maka kita tidak mungkin menjumpai adanya aberasi cahaya-cahaya dari bintang-bintang di kejauhan. Sebaliknya adanya pergerakan relatif eter terhadap bumi akan mengakibatkan adanya aberasi cahaya dari bintang-bintang di kejauhan. Dan fakta inilah yang ingin diuji oleh eksperimen Michelson-Morley: menentukan berapa gerak relatif eter terhadap bumi jika diasumsikan bumi bergerak dalam alam semesta mengelilingi matahari.