
- •Постановка задачи
- •Численные методы одномерной минимизации
- •График функции
- •Поиск точного значения точки максимума с использованием необходимого и достаточного условий
- •1. Метод равномерного поиска
- •2. Метод деления интервала пополам
- •3. Метод дихотомии
- •4. Метод золотого сечения
- •5. Метод Фибоначчи
- •6. Метод квадратичной интерполяции (метод Пауэлла)
- •Сводная таблица
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Институт физико – технический
Направление подготовки 010400. Прикладная математика и информатика
Кафедра Прикладной математики
ОТЧЁТ
по лабораторной работе №1
«Численные методы одномерной минимизации»
по дисциплине «Методы оптимизации»
Вариант № 9
Выполнил студент гр. 0В21 ____________ Агеева Н. С.
(Подпись) (Ф.И.О.)
_____ _____________ 2014 г.
(Дата сдачи отчета)
Отчёт принят:
___________________________ ____________ Бабушкин Ю.В.
(Ученая степень, ученое звание, должность) (Подпись) (Ф.И.О.)
_____ _____________ 2014 г.
(Дата проверки отчета)
Томск 2014 г.
Цель работы: Приобретение практических навыков для решения задач одномерной минимизации численными методами.
Постановка задачи
Требуется
найти безусловный минимум функции
одной переменной
,
то есть, такую точку
,
что
.
Поставленная задача может быть решена с помощью необходимых и достаточных условий безусловного экстремума. Однако во многих практических случаях найти производные от заданной функции не представляется возможным. Поэтому решение задач одномерной оптимизации численными методами является актуальным при изучении методов оптимизации.
Численные методы одномерной минимизации
К основным численным методам одномерной минимизации относят:
- метод равномерного поиска;
- метод деления отрезка пополам;
- метод дихотомии;
- метод золотого сечения;
- метод Фибоначчи;
- метод квадратичной интерполяции и др.
№ |
F(X) = |
Тип экстремума |
Исходный интервал |
Погрешность |
9 |
|
max |
[0; 3] |
0.02 |
График функции
Поиск точного значения точки максимума с использованием необходимого и достаточного условий
Необходимое условие существования экстремума:
Пусть
точка
является
точкой экстремума функции
,
определенной в некоторой окрестности
точки
.
Тогда
либо производная
не
существует, либо
=0.
Достаточное условие существования экстремума:
Пусть
функция f непрерывна
и дважды дифференцируема в точке
.
Тогда при условии
и
является точкой локального максимума.
А если
и
,
то
является
точкой локального минимума.
Результат:
1. Метод равномерного поиска
Метод
относится к пассивным стратегиям поиска
точки экстремума. Задается начальный
интервал неопределенности
и количество вычислений
.
Вычисления производятся в
равноотстоящих друг от друга точках.
При этом интервал делится на
равных интервалов. Путем сравнения
величин
находится точка
,
в которой значение функции наименьшее.
Искомая точка
считается заключенной в интервале
.
Листинг программы:
N=150;
a=0;
b=3;
h=(b-a)/N;
for i=1:N+1
x(i)=a+(i-1)*h;
f(i)=-0.2*x(i)-sin(2*x(i));
end;
plot(x,f);
k=1;
xmin=x(1);
fmin=f(1);
for i=2:N+1
if f(i)<fmin
xmin=x(i);
fmin=f(i);
k=i;
end;
end;
k
xmin
fmin
R=2/(N+1)
Результат:
k = 43
xmin =0.8400
fmin
= -1.1620
fmax=1.1620
R = 0.0132
2. Метод деления интервала пополам
Метод относится к последовательным стратегиям и позволяет исключать из дальнейшего рассмотрения на каждой итерации в точности половину текущего интервала неопределенности. Алгоритм уменьшения интервала основан на анализе величин функции в трех точках, равномерно распределенных на текущем интервале (делящих его на четыре равные части). Поиск заканчивается, если длина текущего интервала неопределенности меньше заданной величины.
Листинг программы:
a(1)=0;
b(1)=3;
alpha=0.004;
k=1;
L(1)=b(1)-a(1);
while L(k)>alpha;
xc(k)=(a(k)+b(k))/2;
f=-0.2*xc(k)-sin(2*xc(k));
y(k)=a(k)+L(k)/4;
z(k)=b(k)-L(k)/4;
fy=-0.2*y(k)-sin(2*y(k));
fz=-0.2*z(k)-sin(2*z(k));
if fy<f
b(k+1)=xc(k);
a(k+1)=a(k);
xc(k+1)=y(k);
else
if fz<f
a(k+1)=xc(k);
b(k+1)=b(k);
xc(k+1)=z(k);
else
a(k+1)=y(k);
b(k+1)=z(k);
xc(k+1)=xc(k);
end;
end;
L(k+1)=b(k+1)-a(k+1);
k=k+1;
end;
k
xmin=(a(k)+b(k))/2;
fmin=-0.2*xmin-sin(2*xmin);
xmin
fmin
R=1/(2^(N/2))
Результат:
k = 11
xmin = 0.8350
fmin = -1.1621 fmax=1.1621
R = 0.0221