Sabtu, 04 Juli 2020

Cara Mencari Nilai Minimum dan Maksimum Fungsi dengan MATLAB

Dalam analisis lanjutan dari fungsi di kalkulus, suatu fungsi dapat memiliki nilai minimum (minimum value) dan/atau nilai maksimum (maximum value). Nilai-nilai ini biasa juga disebut dengan nilai ekstrim (extreme values) dari fungsi. Kedua nilai ini sering digunakan dalam mencari solusi optimum suatu masalah yang berhubungan dengan optimasi. Sebagai contoh, mencari nilai minimum dari fungsi biaya produksi, menentukan nilai maksimum dari laba, dan lain sebagainya.
MATLAB menyediakan algoritma yang dapat digunakan untuk menentukan nilai minimum suatu fungsi dengan metode numerik atau iteratif. Untuk menentukan nilai maksimum suatu fungsi f(x) dalam MATLAB diperlukan sedikit manipulasi fungsi. Hal ini dikarenakan dalam MATLAB tidak tersedia perintah tersebut.  Adapun caranya adalah dengan mengubah fungsi f(x) menjadi g(x) = -f(x). Kemudian mencari nilai minimum dari fungsi g(x).  
MATLAB menyediakan fungsi atau perintah yang disebut optimizers yang khusus dipakai untuk mencari nilai minimum suatu fungsi. Terdapat dua optimizers MATLAB yang populer, yakni:
fminbnd(fun,x1,x2): untuk mencari nilai minimum lokal x dari fungsi fun, dimana fun merupakan fungsi satu variabel dan x1 < x < x2.
fminsearch (fun,x0): untuk mencari nilai minimum x dari fungsi fun dimulai dari titik tebakan awal (initial points) x0. Perintah ini digunakan untuk meminimumkan fungsi dengan lebih dari satu variabel atau multivariabel. 

Perhatikanlah contoh-contohnya berikut ini.
Contoh 1
Misalkan kita ingin mencari nilai minimum dari fungsi cosinus dalam rentang/interval 0 < x < 2pi. Masalah ini merupakan contoh dari meminimumkan fungsi satu variabel dengan menggunakan fminbnd. 
Ketiklah perintah berikut ini pada command window MATLAB.
>> x=fminbnd('cos',0,2*pi)
x =
    3.1416
>> rad2deg(x)%mengubah radian ke derajat
ans =
   180
>> [x,fval]=fminbnd('cos',0,2*pi)
x =
    3.1416
fval =
    -1
Hasil di atas menunjukkan bahwa nilai minimum fungsi cosinus dalam rentang/interval  0 < x < 2pi terjadi pada titik x = 3,1416 dengan nilai fungsi fval (objective function value)  = -1.
Contoh 2
Menentukan nilai minimum dari fungsi  dalam rentang/interval .
>> x=fminbnd(@(x)(1/3)*x^3+2*x^2-3*x+7,-10,10)
x =
   0.6458
  
Apabila ingin dicari nilai maksimum fungsi  dalam rentang/interval , kita tinggal menambahkan tanda negatif “ – “ di depan fungsi.
>> x=fminbnd(@(x)-((1/3)*x^3+2*x^2-3*x+7),-10,10)
x =
   -4.6457

Kita juga dapat memantau nilai-nilai dalam proses pencarian nilai minimum/maksimum fungsi dengan menggunakan perintah optimset seperti di bawah ini.
options = optimset('Display','iter');
[x,fval]=fminbnd(@(x)(1/3)*x^3+2*x^2-3*x+7,-10,10,options)
Tampilan hasil keluaran program di atas adalah sebagai berikut:
Func-count     x          f(x)         Procedure
    1       -2.36068      20.8425        initial
    2        2.36068      15.4488        golden
    3        5.27864      95.9203        golden
    4       0.151933      6.59154        parabolic
    5       0.278546      6.32674        parabolic
    6       0.572083      6.00072        parabolic
    7        1.25527      7.04489        golden
    8       0.663228       5.9873        parabolic
    9       0.647039       5.9865        parabolic
   10       0.645665      5.98649        parabolic
   11       0.645753      5.98649        parabolic
   12       0.645719      5.98649        parabolic
   13       0.645786      5.98649        parabolic

Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-04
x =
    0.6458
fval =
    5.9865

Pencocokan Kurva (Curve-Fitting) dengan MATLAB

Halo sobat semua. Dalam tulisan kali ini saya ingin berbagi tentang metode pencocokan kurva dengan menggunakan MATLAB. Yuk, simak uraiannya berikut ini. 
Pencocokan kurva (curve-fitting) merupakan suatu proses pencocokan (fitting) data ke dalam suatu fungsi suku banyak atau polinomial. Kurva yang terbentuk dapat berubah hasil dari fungsi linear (garis lurus), kuadrat, eksponensial, suku banyak/polinomial pangkat tiga, empat dan lain sebagainya. Dalam proses pencocokan kurva biasanya error atau kesalahan dihitung dengan metode kuadrat terkecil (least squares method).
MATLAB menyediakan perintah yang dapat kita gunakan untuk mencocokkan sekumpulan data dengan kurva tertentu. Dengan menggunakan perintah polyfit, MATLAB akan menampilkan koefisien dari suatu polinom yang tepat untuk data yang diberikan.
polyfit(x,y,n): menentukan koefisien polinomial berderajat n yang cocok dengan y.

Contoh 1
Diketahui data berikut:

x
10
20
30
40
50
60
70
80
90
100
y
27.53
52.43
75.63
102.67
125.34
150.33
177.4
202.34
228.56
253.7
Misalkan kita menduga data tersebut cocok digambarkan dengan fungsi linear, maka pada MATLAB dituliskan:

x=[10   20  30  40  50  60  70  80  90  100];
y=[22.53 49.43 75.63   95.67   100.34  150.33  177.4   189.34  228.56  233.7];
p=polyfit(x,y,1)
MATLAB akan menampilkan hasil berikut:
p =
    2.4353    -1.6460
Artinya bahwa data di atas dapat dinyatakan dengan fungsi:

Sekarang, mari kita coba lihat hasilnya:
x=[10   20  30  40  50  60  70  80  90  100];
y=[22.53 49.43 75.63   95.67   100.34  150.33  177.4 189.34  228.56  233.7];
p=polyfit(x,y,1)
y1=polyval(p,x);
plot(x,y,'*')
hold on
plot(x,y1)
Pencocokan kurva dengan fungsi linear
Contoh 2
Dari suatu penelitian diperoleh data berikut:

x
1
2
3
4
5
6
7
8
9
10
y
0.93
2.1
8.5
15.5
24.3
28.7
42.2
50
80.2
90.3
Selanjutnya data tersebut akan dicocokkan dengan polinomial tertentu.
Misalkan dengan mengamati data sekilas, kita menduga bahwa fungsi yang cocok mewakili data tersebut adalah fungsi kuadrat. Pada MATLAB kita tuliskan.
x=[1    2   3   4   5   6   7   8   9   10];
y=[0.93 2.1 8.5 15.5 24.3 28.7  42.2 50  80.2 90.3];
>> p=polyfit(x,y,2)

p =
    1.0166   -1.2247    1.8703

Artinya bahwa data di atas dapat dinyatakan dengan fungsi:

Sekarang, mari kita coba lihat hasilnya:
x=[1  2   3   4   5   6   7   8   9   10];
y=[0.93 2.1 8.5 15.5 24.3 28.7  42.2 50  80.2 90.3];
p=polyfit(x,y,5);
y1=polyval(p,x);
plot(x,y,'o')
hold on
plot(x,y1)
Pencocokan kurva dengan fungsi kuadrat

Senin, 29 Juni 2020

Interpolasi pada MATLAB

Halo sobat semua. Dalam tulisan ini saya ingin berbagi tentang metode interpolasi dengan menggunakan MATLAB. Yuk, simak uraiannya berikut ini. 
Dalam proses pengumpulan data di lapangan atau eksperimen laboratorium bisa saja terjadi kendala, seperti data kurang lengkap atau data hilang yang dapat mengganggu analisis data. Permasalahan tersebut dapat diselesaikan dengan menggunakan interpolasi (interpolation). Interpolasi merupakan suatu teknik mencari nilai-nilai antara yang tidak ada dalam suatu data. Selain berguna mengisi data yang hilang atau kosong, interpolasi juga biasa digunakan untuk memuluskan kurva. Intepolasi terbagi atas beberapa jenis, diantaranya: interpolasi linear, kuadrat, polinomial, Lagrange, dan Newton. Interpolasi yang paling mudah digunakan adalah interpolasi linear.
Dalam MATLAB terdapat berbagai perintah/fungsi yang dapat digunakan untuk interpolasi data. Interpolasi dalam MATLAB dibedakan atas dua jenis, yaitu interpolasi untuk data grid (grid data points) dan data gerombol (scattered data points).  Dalam tulisan ini akan dibahas beberapa interpolasi MATLAB yang umum, diantaranya:
vq = interp1(x,v,xq,method): mencari hasil interpolasi data berdimensi satu. Titik-titik sampel data dinyatakan dengan (x,v). Vektor xq menyatakan sekumpulan titik untuk interpolasi (xq,vq). Beberapa method yang tersedia yaitu linear (default), nearest, cubic, spline, pchip, makima, dan lain-lain.

Vq = interp2(X,Y,V,Xq,Yq,method): mencari hasil interpolasi untuk data grid dua dimensi. Titik-titik sampel data dinyatakan dengan (X,Y,V). Vektor Xq dan Yq menyatakan sekumpulan titik untuk interpolasi (Xq, Yq, Vq). Beberapa method yang tersedia yaitu linear (default), nearest, cubic, spline, dan makima.


Contoh 1
%mendeklarasikan titik-titik sampel (x,v)
x = 0:pi/4:2*pi;
v = cos(x);
%mendeklarasikan titik di sumbu-x untuk interpolasi
xq = 0:pi/16:2*pi;
%interpolasi dan plot
figure
vq1 = interp1(x,v,xq);
plot(x,v,'ro',xq,vq1,'b:.');
xlim([0 2*pi]);
title('Interpolasi linear/standar');
Plot interpolasi linear

Minggu, 28 Juni 2020

Fungsi Statistika pada MATLAB

Halo sobat pembaca semua. Dalam artikel kali ini akan dibahas kegunaan MATLAB dalam menganalisis data dengan perhitungan statistika. MATLAB menyediakan beragam perintah atau fungsi yang dapat digunakan untuk analisis data dan lain sebagainya. Adapun langkah pertama yang harus dilakukan dalam menganalisis data ataupun fungsi pada MATLAB adalah menuliskan data tersebut ke dalam bentuk vektor atau matriks.

Apabila proses pengumpulan data telah selesai, tahapan selanjutnya yang biasa dilakukan adalah mengolah atau menganalisis data tersebut. MATLAB menyediakan beberapa perintah yang dapat memudahkan proses analisis data dengan metode statistika dasar, seperti mean, median, modus, nilai maksimum, minimum, simpangan baku, ragam, dan lain sebagainya. Untuk lebih jelasnya, simaklah uraiannya berikut ini.


Dalam MATLAB tersedia beberapa perintah yang dapat kita gunakan untuk menganalisis ukuran pemusatan (mean, median, modus) serta nilai minimum dan maksimum suatu data.
mean(x): menghitung nilai rata-rata aritmatika dari suatu vektor baris/kolom.
mean(A): menghitung nilai rata-rata dari elemen setiap kolom suatu matriks.
mean(A,dim): menghitung rata-rata menurut kolom atau baris dari suatu matriks.
Bentuk perintah di atas juga dapat kita gunakan untuk perintah-perintah berikut:
median(…): menghitung median atau nilai tengah.
mode(…): menghitung modus atau nilai yang paling sering muncul.
min(…): menentukan nilai minimum.
max(…): menentukan nilai maksimum.
[S,L] = bounds (A): menentukan nilai minimum/smallest (S) dan maksimum/largest (L) dari larik A. Perintah ini mirip min dan max.
Agar lebih jelas, perhatikanlah contoh-contoh di bawah ini.
Contoh 1
Diketahui data berat badan dari 10 orang berikut ini.
>> x=[52.3 62.4 49.5 60.2 63.5 74 77 65.5 66.4 68.5];
Selanjutnya dapat dihitung:
>> mean(x) %nilai rata-rata  
ans =
   63.9300
>> median(x) %nilai tengah
ans =
   64.5000
>> min(x) %nilai minimum
ans =
   49.5000
>> max(x) %nilai maksimum
ans =
    77
>> [S,L]=bounds(x)
S =
   49.5000

L =
    77

Contoh 2
>> y = [2 2 2 3 4 2 5 6 8 2 9]
y =
2     2     2     3     4     2     5     6     8   2     9
Selanjutnya dapat dihitung:
>> mode(y) %nilai modus
ans =
     2
Contoh 3
Misalkan, kita memiliki data dalam bentuk matriks berikut:
>> A = [12 7 8 9; 8 4 9 15; 10 13 15 9; 7 9 6 8]
A =
    12     7     8     9
     8     4     9    15
    10    13    15     9
     7     9     6     8
Selanjutnya dihitung:
>> mean(A) % menghitung rata-rata menurut kolom
ans =
    9.2500    8.2500    9.5000   10.2500

>> mean(A,1) %menghitung rata-rata menurut kolom
ans =
    9.2500    8.2500    9.5000   10.2500

>> mean(A,2) %menghitung rata-rata menurut baris
ans =
    9.0000
    9.0000
   11.7500
    7.5000

>> median(A) %menghitung median menurut kolom
ans =
    9.0000    8.0000    8.5000    9.0000

>> median(A,2)    %menghitung median menurut baris
ans =
    8.5000
    8.5000
   11.5000
    7.5000

>> min(A)%menentukan nilai minimum menurut kolom
ans =
     7     4     6     8

>> min(A,[],2) %menentukan nilai minimum menurut baris
ans =
     7
     4
     9
     6

>> max(A) %menentukan nilai maksimum menurut kolom
ans =
    12    13    15    15

>> max(A,[],2)%menentukan nilai maksimum menurut baris
ans =
    12
    15
    15
     9

Contoh 4
Perhatikanlah contoh menentukan nilai modus berikut ini.
>> B=[2 3 4 5; 2 4 3 1; 2 3 4 2; 3 3 4 4]
B =
     2     3     4     5
     2     4     3     1
     2     3     4     2
     3     3     4     4
>> mode(B) %menentukan modus menurut kolom
ans =
     2     3     4     1

>> mode(B,2) %menentukan modus menurut baris
ans =
     2
     1
     2
     3

Jika setiap anggota dalam vektor atau matriks muncul sama banyak atau dengan kata lain tidak ada modus, maka MATLAB akan menampilkan bilangan terkecil.