ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Государственное образовательное учреждение высшего профессионального

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего профессионального
образования
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Институт кибернетики
Кафедра прикладной математики
Дисциплина методы оптимизации
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №1
Численные методы одномерной минимизации
Выполнил
студент гр. 8Б90
Колыванов К.А.
доцент кафедры ПМ
Бабушкин Ю.В.
Проверил
Томск 2012
Цель работы: Приобретение практических навыков для решения задач
одномерной минимизации численными методами.
Постановка задачи
Требуется найти безусловный минимум функции одной переменной,
1
𝐹(𝑥) = 𝑥 +
то есть, такую точку x*  R , что F ( x* )  min F ( x) , на отрезке
ln⁡(𝑥)
xR
[1.5; 3] с погрешностью 𝜖 = 0.01.
Поставленная задача может быть решена с помощью необходимых и
достаточных условий безусловного экстремума. Однако, во многих
практических случаях найти производные от заданной функции не
представляется возможным. Поэтому решение задач одномерной
оптимизации численными методами является актуальным при изучении
методов оптимизации.
- метод равномерного поиска;
Начало
𝐿0 , 𝑁
𝑖⁡ = ⁡1
Нет
𝑖⁡ < ⁡𝑁
Да
𝐹(𝑥𝑖 )
∙𝐿0
= 𝑎0 + 𝑖
𝐿0
𝑁+1
𝑥 ∗ = min 𝐹(𝑥𝑖 )
𝑥𝑖
𝑖 =𝑖+1
𝑥∗
Конец
function an = se(a, b, n)
%1st method
L0 = abs(b - a); %Length of the segment at the beginning
i = 1:n;
x = a + i*L0/(n + 1);
%F(x) is given
f = x + 1./log(x);
an = min(f);
for i = 1:n
if (an == f(i))
an = i;
break;
end
end
an = x(an);
end
- метод деления отрезка пополам;
Начало
𝐿0 , 𝜖
𝐿0 ⁡ > 𝜖
𝑥𝑐
𝑥𝑐 =
𝑎+𝑏
2
𝐹(𝑥𝐶 )
𝐿0
4
𝐿0
𝑧=𝑏−
4
𝑦=𝑎+
𝐹(𝑦), 𝐹(𝑧)
𝐹(𝑦)
< 𝐹(𝑥𝑐 )
𝐹(𝑧)
< 𝐹(𝑥𝑐 )
𝑎=𝑦
𝑏=𝑧
𝑏 = 𝑥𝑐
𝑥𝑐 = 𝑦
𝑎 = 𝑥𝑐
𝑥𝑐 = 𝑦
𝐿0 = |𝑎 − 𝑏|
Конец
function an = halfdiv(a, b, al)
%2nd method
L0 = abs(b - a);
xc = (a + b)/2;
while (L0 > al)
xc = (a + b)/2;
fxc = xc + 1/log(xc);
y = a + L0/4;
z = b - L0/4;
fy = y + 1/log(y);
fz = z + 1/log(z);
if (fy < fxc)
b = xc;
xc = y;
elseif (fz < fxc)
a = xc;
xc = z;
else
a = y;
b = z;
end
L0 = abs(b - a);
end
an = xc;
end
- метод дихотомии;
Начало
𝐿0 , 𝜖
𝛼=
𝜖
100
𝐿0 ⁡ > 𝜖
𝑎+𝑏
2
𝑎+𝑏−𝛼
2
𝑎+𝑏+𝛼
𝑧=
2
𝑦=
𝐹(𝑦), 𝐹(𝑧)
𝐹(𝑦) < 𝐹(𝑥𝑐 )
𝑎=𝑦
𝑏=𝑧
𝐿0 = |𝑎 − 𝑏|
Конец
function an = di(a, b, eps)
%3rd Method dichotomy
al = eps/100;
L0 = abs(b - a);
while (L0 > eps)
y = (a + b - al)/2;
z = (a + b + al)/2;
fy = y + 1/log(y);
fz = z + 1/log(z);
if (fy <= fz)
b = z;
else
a = y;
end
L0 = abs(b - a);
end
an = (a + b)/2;
end
- метод золотого сечения;
Начало
𝐿0 , 𝜖
3 − √5
𝐿0
2
𝑧 =𝑎+𝑏−𝑦
𝑦=𝑎+
𝑎+𝑏
2
𝐿0 ⁡ > 𝜖
𝐹(𝑦), 𝐹(𝑧)
𝐹(𝑦) ≤ 𝐹(𝑧)
𝑎=𝑦
𝑦=𝑧
𝑧 = 𝑎+𝑏−𝑧
𝑏=𝑧
𝑧=𝑦
𝑦 =𝑎+𝑏−𝑦
𝐿0 = |𝑏 − 𝑎|
Конец
function an = gr(a, b, al)
%golden ratio method
L0 = abs(b - a);
y = a + (3 - sqrt(5))/2*L0;
z = a + b - y;
while(L0 > al)
fy = y + 1/log(y);
fz = z + 1/log(z);
if (fy <= fz)
b = z;
z = y;
y = a + b - y;
else
a = y;
y = z;
z = a + b - z;
end
L0 = abs(b - a);
end
an = (a + b)/2;
end
- метод Фибоначчи;
Начало
𝐿0 , 𝜖
𝛼=
𝜖
4
𝐿0
> 𝐹𝑖𝑁
𝜖
𝑘=0
𝐹𝑖𝑁+1 = 𝐹𝑖𝑁 + 𝐹𝑖𝑁−1
𝐹𝑖𝑁−2
(𝑏 − 𝑎)
𝐹𝑖𝑁
𝐹𝑖𝑁−1
𝑦=𝑎+
(𝑏 − 𝑎)
𝐹𝑖𝑁
𝑦=𝑎+
𝑁 =𝑁+1
𝑁 ≠ 𝑘+3
𝑦=𝑧
𝑧 =𝑦+𝛼
𝐹(𝑦), 𝐹(𝑧)
𝐹(𝑦), 𝐹(𝑧)
𝐹(𝑦) ≤ 𝐹(𝑧)
𝐹(𝑦) ≤ 𝐹(𝑧)
𝑎=𝑦
𝑦=𝑧
𝐹𝑖𝑁−𝑘−2
𝑧=𝑎+
(𝑏 − 𝑎)
𝐹𝑖𝑁−𝑘−1
𝑏=𝑧
𝑧=𝑦
𝐹𝑖𝑁−𝑘−3
𝑦=𝑎+
(𝑏 − 𝑎)
𝐹𝑖𝑁−𝑘−1
𝑏=𝑧
𝑘 =𝑘+1
𝑎=𝑦
𝑎+𝑏
2
Конец
function an = fi(a, b, al)
%fibonacci method
eps = al/4;
L0 = abs(b - a);
f = zeros(1,2);
f(1) = 1;
f(2) = 1;
i = 2;
while (L0/al > f(i))
f(i + 1) = f(i) + f(i - 1);
i = i + 1;
end
N = i; %number of F numbers
k = 0;
y = a + f(N - 2)/f(N)*(b - a);
z = a + f(N - 1)/f(N)*(b - a);
while (N ~= (k + 3))
fy = y + 1/log(y);
fz = z + 1/log(z);
if (fy <= fz)
b = z;
z = y;
y = a + f(N - k - 3)/f(N - k - 1)*(b - a);
else
a = y;
y = z;
z = a + f(N - k - 2)/f(N - k - 1)*(b - a);
end
k = k + 1;
end
y = z;
z = y + eps;
fy = y + 1/log(y);
fz = z + 1/log(z);
if (fy <= fz)
b = z;
else
a = y;
end
an = (a + b)/2;
end
- метод квадратичной интерполяции и др.
Download