- •Программирование численных методов в экстремальных задачах
- •Предисловие
- •Практическое занятие 1. Исследование методов одномерного поиска минимума унимодальных функций
- •1.1. Требования задания
- •1.2. Контрольные вопросы
- •1.3. Содержание отчета
- •Практическое занятие 2. Исследование методов полиномиальной интерполяции для поиска минимума целевых функций
- •2.1. Требования задания
- •2.2. Контрольные вопросы
- •2.3. Содержание отчета
- •Практическое занятие 3. Исследование методов линейного поиска
- •3.1. Требования задания
- •3.2. Контрольные вопросы
- •3.3. Содержание отчета
- •Практическое занятие 4. Исследование градиентных методов
- •4.1. Требования задания
- •4.2. Контрольные вопросы
- •4.3. Содержание отчета
- •Практическое занятие 5. Проектирование программы оптимизации
- •5.1. Требования задания
- •5.2. Контрольные вопросы
- •5.3. Содержание отчета
- •Практическое занятие 6. Исследование модификаций ньютоновских оптимизационных процессов
- •6.1. Требования задания
- •6.2. Контрольные вопросы
- •6.3. Содержание отчета
- •Практическое занятие 7. Исследование методов переменной метрики
- •7.1. Требования задания
- •7.2. Контрольные вопросы
- •7.3. Содержание отчета
- •Практическое занятие 8. Исследование методов сопряженных градиентов
- •8.1. Требования задания
- •8.2. Контрольные вопросы
- •8.3. Содержание отчета
- •Практическое занятие 9. Исследование методов безусловной оптимизации нулевого порядка
- •9.1. Требования задания
- •9.2. Контрольные вопросы
- •9.3. Содержание отчета
- •Практическое занятие 10. Исследование алгоритмов случайного поиска
- •10.1. Требования задания
- •10.2. Контрольные вопросы
- •10.3. Содержание отчета
- •Практическое занятие 11. Исследование методов нелинейного программирования
- •11.1. Требования задания
- •11.2. Контрольные вопросы
- •11.3. Содержание отчета
- •Список литературы
- •1. Метод средней точки (метод Больцано)
- •2. Метод трехточечного поиска на равных интервалах
- •3. Метод Ньютона
- •4. Метод линейной интерполяции (метод секущих)
- •5. Метод кубической интерполяции для одномерной минимизации
- •6. Метод Фибоначчи
- •7. Метод Хука–Дживса с одномерной минимизацией
- •8. Метод Зангвилла
- •9. АлгоритмLPτ-поиска
- •10. Формулы методов переменной метрики
- •11. Минимизация целевых функций в MicrosoftExcel97
- •12. Тестовые функции
- •Содержание
- •197376, С.-Петербург, ул. Проф. Попова, 5
4. Метод линейной интерполяции (метод секущих)
Метод секущих предлагает заменить вторую производную f ''(xk) в ньютоновской формуле ее линейной аппроксимацией (f '(xk) –f '(xk – 1))/(xk–xk – 1).
Тем самым очередное приближение xk + 1к стационарной точкеx*задается формулой видаxk + 1 = xk – f '(xk)(xk – xk – 1)/(f '(xk) – f '(xk – 1)).
Легко видеть, что xk + 1– точка пересечения с осью абсцисс секущей прямой, проходящей через точкиxkиxk – 1.
В отличие от метода Ньютона метод секущих гарантирует сходимость точек {xk} к стационарной точкеx*, однако сходимость метода достигается ценой потери быстродействия. Как правило, метод дихотомии оказывается эффективнее метода секущих, хотя последний и получен из более быстродействующей схемы.
Начальный этап. Пусть методом Свенна получен интервал неопределенности [a1, b1], границы которого удовлетворяют неравенствуf '(a1)f '(b1) < 0. Задать– погрешность вычисления минимума и принятьk = 1.
Основной этап.
Шаг 1. Найти очередное приближениеxk + 1к минимумуx*и проверить условие окончания поиска:
(1) xk + 1 = bk – f '(bk)(bk – ak)/(f '(bk) – f '(ak));
(2) еслиf '(xk + 1) ≤ , то остановиться.
Шаг 2. Уменьшить интервал поиска минимума:
(1) еслиf '(xk + 1) > 0, тоak + 1 = ak,bk + 1 = xk + 1, в противном случае принятьak + 1 = xk + 1,bk + 1 = bk;
(2) положитьk = k + 1 и перейти к шагу 1.
5. Метод кубической интерполяции для одномерной минимизации
Суть алгоритма заключается в том, что на каждой итерации функция f(x) аппроксимируется кубическим полиномомF(x), точка минимумаx(*)которого берется в качестве текущего приближения к искомому минимумух*. Алгоритм предполагает вычисления в каждой очередной точке значений функцииf(x) и ее производнойf '(x).
Начальный этап. Задать,x1,h1– параметры метода, имеющие общепринятый смысл. Методом Свенна установить начальный интервал [a,b]:
(1) изменить направление поискаh1= –h1, еслиf '(x1) > 0;
(2) вычислятьfkв точкахxk + 1=xk+hkприhk= 2hk – 1,k= 2, 3, ...,m– 1 до тех пор, пока не продвинемся в точкуxm, такую, чтоf '(xm)f '(xm – 1) < 0;
(3) еслиxm – 1<xm, то положитьa=xm – 1,b=xm, иначе –a=xm,b=xm – 1.
Основной этап.
Шаг 1. Найти аппроксимирующий минимум:
(1) вычислить параметр = (z + w – f '(a))/(f '(b) – f '(a) + 2w), где z = = f '(a) + f '(b) + 3(f(a) – f(b))/(b – a), w = (z2 – f '(a)f '(b))1/2;
(2) принять аппроксимирующий минимум
x(*)=a + (b – a), если 0 ≤ ≤ 1,
x(*)=a, если< 0, и
x(*)=b, если> 1.
Шаг 2. Проверить критерий окончания поиска:
eслиf '(x(*))<илиx(*)=a, илиx(*)=b, поиск окончить. Иначе вернуться к шагу 1, используя новый интервал [a,x(*)], еслиf '(x(*)) > 0, либо интервал [x(*),b], еслиf '(x(*)) < 0.
6. Метод Фибоначчи
Метод Фибоначчи является процедурой линейного поиска минимума унимодальной функции f(x) на замкнутом интервале [a, b], отличающейся от процедуры золотого сечения тем, что очередная пробная точка делит интервал локализации в отношении двух последовательных чисел Фибоначчи. Последовательность чисел Фибоначчи задается условиямиF0 = F1= 1,Fk + 1 = Fk + Fk – 1,k = 1, 2, ... . Начальными членами последовательности будут 1, 1, 2, 3, 5, 8, 13, ... . Стратегия поиска Фибоначчи требует заранее указатьn – число вычислений минимизируемой функции и– константу различимости двух значенийf(x). Рассмотрим один из возможных вариантов метода.
Начальный этап.
(1) Задать начальный интервал [a1, b1], длину конечного интервалаLnи определить числоnтак, чтобы выполнялось условиеFn > (b1 – a1)/Ln. Вычислить ≤ L1/Fn + 1.
(2) Взять 2 пробные точки1 = a1 + (Fn – 2/Fn)(b1 – a1) и1 = a1 + (Fn – 1/Fn)(b1 – a1). Положитьk = 1.
Основной этап.
Шаг 1. Сократить текущий интервал локализации:
(1) еслиf(k) <f(k), то положитьak + 1=ak,bk + 1=k,k + 1=kи вычислить новую точкуk + 1=ak + 1+ (Fn – k – 2/Fn – k)Lk + 1, гдеLk + 1=bk + 1–ak + 1; перейти к шагу 2;
(2) еслиf(k) ≥f(k), то положитьak + 1=k,bk + 1=bk,k + 1=kи вычислитьk + 1=ak + 1+ (Fn – k – 1/Fn – k)Lk + 1.
Шаг 2. Проверить критерий окончания поиска:
(1) заменитьkнаk+ 1;
(2) еслиk=n– 1, перейти к шагу 3, иначе – к шагу 1.
Шаг 3. Найти аппроксимирующий минимумx(*):
(1) положитьk=k+;
(2) eслиf(k) >f(k), тоx(*)= (k+bk)/2. В противном случае –x(*)= (ak+k)/2.