МОСК лаб1

3
Згідно завдання будую графік даної функції. Для початку будую його в інтервалі
Х=[0;5]
Графік функції:

Функція не є унімодальною і є розбіжною, тому для подальшого досліджування функції на екстремум, необхідно побуджувати її на інтервалі, де є всього один мінімум або максимум. Шукатимемо мінімум тому виберу інтервал Х=[0,5;1,5]

Тепер, на даному проміжку, функція є унімодальною і має всього 1 мінімум.

МЕТОДИ ОДНОПАРАМЕТРИЧНОЇ ОПТИМІЗАЦІЇ
Метод дихотомії
Блок схема алгоритму для методу Дихотомії
13 EMBED Visio.Drawing.11 1415











Програма реалізована в середовищі MATLAB:
clear;clc
a=0.5
b=1.5
x=[a:0.01:b]
y=1-exp(x).*sin(x.^3);
i=0;
E=(b-a)/1000;
del=E/2;
while (b-a)>=2*E
i=i+1;
disp(i)
x1=(a+b-del)/2;
x2=(a+b+del)/2;
y1=my_f(x1);
y2=my_f(x2);
if y1>=y2
a=x1;
b=b;
else a=a;
b=x2;
end
end
xmin=(a+b)/2;
ymin=my_f(xmin);
disp(xmin);disp(ymin);
%для порівняння
xminpor=fminsearch('my_f',0)
yminpor=my_f(xminpor)
plot(x,y,'k',xmin,ymin,'*b',xminpor,yminpor,'om');grid;

Підпрограма my_f:
function y=my_f(x);
y=1-exp(x).*sin(x.^3);



















Отриманий графік

Результати виконання програми:
I=10
Xmin= 1.21522436523437
Ymin=-2.28697201504522

Результати за fminsearch:
xminpor =1.214875
yminpor =-2.28697724364331




















Метод Фібоначі
Блок-схема алгоритму для реалізації методу Фібоначі
13 EMBED Word.Picture.6 1415









Програма реалізації методу в середовищі MATLAB
clear;clc
a=0.5;
b=1.5;
x=[a:0.01:b];
y=1-
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·earch('my_f',0)
yminpor=my_f(xminpor)
plot(x,y,'k',x2,fx2,'*k',xminpor,yminpor,'ok');grid;


Підпрограма my_f:
function y=my_f(x);
y=1-exp(x).*sin(x.^3);







Отриманий графік



Результати виконання програми:

I=17
Xmin=1.21529618033815
Ymin=
·-2.28696983216559
Результати за fminsearch:

xminpor = 1.214875
yminpor = -2.28697724364331


















Метод Золотого Перетину
Блок-схема алгоритму для реалізації методу Золотого Перетину
13 EMBED Visio.Drawing.11 1415










Програма для реалізації методу в середовищі MATLAB
clear;clc
a=0.5
b=1.5
x=[a:0.01:b]
y=1-exp(x).*sin(x.^3);
tau=1.618033989;
i=0;
E=(b-a)/1000000;
while (b-a)>=2*E
i=i+1;
disp(i)
x1=a;
x2=a+(1-tau^(-1)).*(b-a);
x3=a+tau^(-1).*(b-a);
x4=b;
y2=my_f(x2);
y3=my_f(x3);
if y2 a=x1;
b=x3;
x2=x1+tau^(-1)*(x3-x1);
else if y2>y3
a=x2;
b=x4;
x3=x1+(1-tau^(-1))*(x4-x2);
end
end
end
xmin=(a+b)/2;
ymin=my_f(xmin);
disp(xmin);disp(ymin);
xminpor=fminsearch('my_f',0)
yminpor=my_f(xminpor)
plot(x,y,'k',xmin,ymin,'*b',xminpor,yminpor,'om');grid;

Підпрограма my_f:
function y=my_f(x);
y=1-exp(x).*sin(x.^3);













Отриманий графік


Результат виконання програми:

I=13
Xmin=1.21537486195504
Ymin=-2.28696700630052

Результат fminsearch

xminpor =1.214875
yminpor =-2.28697724364331

Побудую таблицю за результатами методів

Результати:
Результати
Метод
xmin
ymin
i
Del,%
Xmin(fmin)

Дихотомії
1.215224365
-2.286972015
10
0.029
1.214875

Фібоначі
1.215296180
-2.286969832
17
0.034
1.214875

Золотого перетину
1.215374861
-2.286967006
13
0.041
1.214875

Висновок: На даній лабораторній роботі я навчився використовувати алгоритми одновимірної оптимізації для пошуку екстремуму процесу. У моєму випадку найкращий результат дав метод дихотомії, проте це не означає, що інші два методи є менш ефетивними, тому що порівнював результат кожного з них із результатами пошуку команди fminsearch, яка може мати також похибку.
Root Entry

Приложенные файлы

  • doc 14878918
    Размер файла: 310 kB Загрузок: 0

Добавить комментарий