Лабы / Лаб 5 Одномерная оптимизация
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Факультет Радиотехнологий связи
Учебная дисциплина «Прикладные методы оптимизации в радиотехнических системах»
ОТЧЁТ
Тема: «Методы одномерной оптимизации»
Выполнили:
Приняла:
Санкт-Петербург 2023
Цель работы: изучение и анализ поисковых алгоритмов минимизации функции одной переменной: дихотомического, Фибоначчи и «золотого сечения».
Блок-схемы:
Метод дихотомии.
|
Метод Фибоначчи.
|
Метод «золотого сечения».
Аналитическое нахождение:
, изначальное уравнение (9 вариант)
Промежуток
, находим производную
, приравниваем ее к 0
, находим значение х из уравнения
, х относится к промежутку
находим значение функции от х
Коды для методов:
Метод дихотомии
script
clc;
clear;
a=0;
b=1;
e=0.001;
n=0;
while abs(b-a)>2*e
x=(b+a)/2;
x1=x-e/2;
x2=x+e/2;
y1=x1^5-x1^2;
y2=x2^5-x2^2;
if y1>y2
a=x1;
else
b=x2;
end
n=n+1;
end
XX=0:0.001:1;
YY=XX.^5-XX.^2;
plot(XX,YY); hold on;
last=(a+b)/2;
ygrek=last.^5-last.^2;
plot(last, ygrek,'-ko');
grid on;
disp(strcat('x=',num2str(last)));
disp(strcat('y=',num2str(ygrek)));
n=10
x=0.73658
y=-0.32573
Метод Фибоначчи
script
clc
clear
n=7;
a=0;
b=1;
F1=1;
F2=1;
for i=1:n
F=F1+F2;
F1=F2;F2=F;
Fk(i)=F;
end
while n>2
L=abs(b-a);
x1=a+(Fk(n-1)/Fk(n))*L;
x2=b-(Fk(n-1)/Fk(n))*L;
f1=x1^5-x1^2;
f2=x2^5-x2^2;
if f1>f2
b=x1;
f1=f2;
x1=x2;
L=abs(b-a);
x2=a+(b-x1);
f2=(x2)^5-(x2)^2;
else
a=x2;
f2=f1;
x2=x1;
L=abs(b-a);
x1=b-(x2-a);
f1=(x1)^5-(x1)^2;
end
n=n-1;
end
funn=f1-f2;
if funn<0
FF=f1;
XF=x1;
else
FF=f2;
XF=x2;
end
xx=0:0.01:1;
yy=xx.^5-xx.^2;
plot(xx,yy); hold on;
plot(XF,FF,'-ko')
disp(strcat('x=',num2str(XF)));
disp(strcat('y=',num2str(FF)));
x=0.73529
y=-0.32572
Метод «золотого сечения»:
script
clc;
clear;
a=0;
b=1;
l=1;
t=0.618;
e=0.01;
n=0;
while abs(a-b)>e
n=n+1;
x1=a+l*t;
x2=b-l*t;
y1=x1^5-x1^2;
y2=x2^5-x2^2;
if y1>y2
b=x1;
y1=y2;
x1=x2;
l=b-a;
x2=a+(b-x1);
y2=x2^5-x2^2;
else
a=x2;
y2=y1;
x2=x1;
l=b-a;
x1=b-(x2-a);
y1=x1^5-x1^2;
end
end
funn=y1-y2;
if funn<0
FF=y1;
XF=x1;
else
FF=y2;
XF=x2;
end
xx=0:0.01:1;
yy=xx.^5-xx.^2;
disp(num2str(n));
plot(xx,yy); hold on;
plot(XF,FF,'-ko');
disp(strcat('x=',num2str(XF)));
disp(strcat('y=',num2str(FF)));
n=10
x=0.73765
y=-0.32573
Зависимость количества повторений от выбранной точности
|
|
|
|
|
|
17 |
14 |
10 |
7 |
4 |
1 |
24 |
20 |
15 |
10 |
5 |
1 |
Вывод:
Были изучены различные методы одномерной оптимизации. Было установлено, что зависимость числа повторений от точности зависит обратно пропорционально (чем меньше, тем n больше). Экспериментальным путем было установлено, что при равных значениях точности в методе Фибоначчи меньшее число повторений n.