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.
Baca juga: Interpolasi pada MATLAB
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
Baca juga: Fungsi Statistika pada MATLAB
Contoh 3
Menentukan
nilai minimum dari fungsi f(x1,x2) = 3 + x1 –
x2 + 3x12 + 2x1x2 + x22
dengan nilai tebakan awal (initial points)
x0 = [0,0]. Masalah ini merupakan contoh dari meminimumkan fungsi
multivariabel dengan menggunakan fminsearch.
Caranya,
ketiklah perintah berikut pada jendela editor, simpan dengan nama file tertentu
lalu jalankan.
fun = @(x)3+x(1)-x(2)+3*x(1)^2 + 2*x(1)*x(2)+x(2)^2;
x0 = [0,0];
options =
optimset('PlotFcns',@optimplotfval);
[x,fval] = fminsearch(fun,x0,options)
Tampilan
hasil keluaran program di atas adalah sebagai berikut:
x
=
-0.5000
1.0000
fval
=
2.2500
Nilai x
menyatakan nilai minimum fungsi, yaitu di titik [-0.5,1] dengan nilai fungsi fval
= 2.2500.
Selain
itu MATLAB juga secara otomatis akan menampilkan plot proses optimasi hingga
mencapai nilai minimum, seperti di bawah ini.
Plot proses optimasi fungsi |
Dari
plot di atas, dapat kita perhatikan bahwa fungsi f(x1,x2)
= 3 + x1 – x2 + 3x12 + 2x1x2
+ x22 mencapai nilai minimum sebesar 2,25 setelah
iterasi ke-60.
Contoh 4
Misalkan
kita ingin mencari nilai minimum dari fungsi Rosenbrock yang cukup terkenal dan
sering dibahas dalam topik optimasi. Fungsi ini terdiri dari dua variabel dan
dapat dinyatakan sebagai berikut:
f(x1,x2) = 100(x2-x12)2
+ (1-x1)2
Selanjutnya,
akan dicari nilai minimum dari fungsi tersebut dengan nilai tebakan awal (initial points) x0 = [-2,2].
Caranya,
ketiklah perintah berikut pada jendela editor, simpan dengan nama file tertentu
lalu jalankan.
fun = @(x)100*(x(2) - x(1)^2)^2 + (1 -
x(1))^2;
x0 = [-2,2];
options =
optimset('PlotFcns',@optimplotfval);
[x,fval] = fminsearch(fun,x0,options)
Tampilan
hasil keluaran program di atas adalah sebagai berikut:
x
=
1.0000
1.0000
fval
=
3.9243e-10
Nilai x
menyatakan nilai minimum fungsi, yaitu di titik [1,1] dengan nilai fungsi fval
= 3.9243e-10 atau mendekati 0.
Adapun tampilan plot proses optimasi hingga mencapai nilai minimum ditunjukkan
seperti pada gambar berikut ini.
Plot proses optimasi fungsi |
Apabila
ingin mengamati lokasi nilai minimum fungsi secara visual, maka sebaiknya
dilakukan pemplotan fungsi tiga-dimensi. Dengan pemplotan fungsi ini, maka
posisi nilai minimumnya dapat diamati dengan jelas. Teknik ini berlaku untuk
fungsi dengan dua variabel bebas. Perhatikanlah sintaks dalam pemplotan berikut
ini.
fun = @(x)100*(x(2) - x(1)^2)^2 + (1 -
x(1))^2;
X=linspace(-2,2,50);
Y=linspace(-2,3,50);
for i = 1:length(X)
for j=1:length(Y)
Z(i,j)=fun([X(i) Y(j)]);
end
end
surf(X,Y,Z);
Plot fungsi f(x1,x2) = 100(x2-x12)2 + (1-x1)2 |
Demikianlah pembahasan tentang cara mencari nilai minimum dan maksimum suatu fungsi dengan menggunakan MATLAB. Nantikan artikel menarik lainnya seputar pemrograman MATLAB. Semoga bermanfaat.😊
Baca juga:
Tidak ada komentar:
Posting Komentar