Uploaded by sasa.sasa.00.00

Лабораторная работа 1 2019

advertisement
Лабораторная работа № 1
Методы одномерного поиска
Цель работы
Ознакомиться с методами одномерного поиска [3,12], используемыми
в многомерных методах минимизации функций n переменных. Сравнить
различные алгоритмы по эффективности на тестовых примерах.
Методические указания
1. Общая схема методов поиска минимума на отрезке
Пусть функция f ( x) унимодальна на отрезке [a0 , b0 ] . Необходимо
найти точку минимума функции на этом отрезке с заданной точностью  .
Все методы одномерного поиска базируются на последовательном
уменьшении интервала, содержащего точку минимума.
Возьмем внутри отрезка [a0 , b0 ] две точки x1 и x2 : a0  x1  x2  b0 ,
и вычислим значения функции в этих точках. Из свойства унимодальности
функции можно сделать вывод о том, что минимум расположен либо на
отрезке [ a0 , x2 ] , либо на отрезке [ x1 , b0 ] . Действительно, если f ( x1 )  f ( x2 ) ,
то минимум не может находиться на отрезке [ x2 , b0 ] , а если f ( x1 )  f ( x2 ) , то
минимум не может находиться на отрезке [a`0 , x1 ] . Если же f ( x1 )  f ( x2 ) , то
минимум находится на интервале [ x1 , x2 ] .
Алгоритм заканчивается, когда длина интервала, содержащего
минимум, становится меньше  . Различные методы одномерного поиска
отличаются выбором точек x1 , x2 . Об эффективности алгоритмов можно
судить по числу вычислений функции, необходимому для достижения
заданной точности.
2. Метод дихотомии (деления отрезка пополам)
Точки x1 , x2 выбираются на расстоянии    от середины отрезка:
x1  (ai  bi  ) / 2,
x2  (ai  bi  ) / 2
(1)
За одну итерацию интервал неопределенности уменьшается примерно в два
(b  a )
раза (рис. 1). За n итераций длина интервала будет примерно равна 0 n 0 .
2
ln  (b0  a0 )  
Для достижения точности  потребуется n 
итераций. На
ln 2
каждой итерации минимизируемая функция вычисляется дважды.
Рис. 1. Метод дихотомии
2. Метод золотого сечения
Точки x1 , x2 находятся симметрично относительно середины отрезка
[a0 , b0 ] и делят его в пропорции золотого сечения, когда длина всего отрезка
относится к длине большей его части также, как длина большей части
относится к длине меньшей части:
b0  a0 b0  x1
b  a0 x2  a0
и 0
.


b0  x1 x1  a0
x2  a0 b0  x2
Отсюда
(3  5)
(bi  ai )  ai  0.381966011  (bi  ai ),
2
( 5  1)
x2  ai 
(bi  ai )  ai  0.618003399  (bi  ai ) 
2
 bi  0.381966011 (bi  ai ).
x1  ai 
(2)
5 1
 1.618...
2
раз, но на следующей итерации мы будем вычислять функцию только один
x x
b  x2
раз, так как по свойству золотого сечения 2 1  0.381... и
 0.618....
b  x1
b  x1
ln((b0  a0 ) )
(рис. 2). Для достижения точности  потребуется n 
итераций.
5 1
ln
2
Неточное задание величины
5 на ЭВМ уже при достаточно
небольшом количестве итераций может приводить к погрешностям и потере
точки минимума, так как она выпадает из интервала неопределенности.
Поэтому, вообще говоря, при реализации алгоритма возможность такой
ситуации должна быть предусмотрена.
За одну итерацию интервал неопределенности уменьшается в
Рис. 2. Метод золотого сечения
3. Метод Фибоначчи
Числа Фибоначчи определяются соотношениями:
Fn2  Fn1  Fn , n  1,2,3..., F1  F2 =1.
С помощью индукции можно показать, что
представимо в виде (формула Бинэ):

 
n -е число Фибоначчи

n
n
Fn   (1  5) / 2  (1  5) / 2  / 5, n  1,2,...


Из этой формулы видно, что при больших n :


n
Fn  (1  5) / 2 / 5, так что
числа Фибоначчи с увеличением n растут очень быстро.
На начальном интервале вычисляют точки
F
x1  a0  n (b0  a0 ),
Fn 2
F
x2  a0  n1 (b0  a0 ),
Fn2
(3)
где n выбирается исходя из точности и начальной длины интервала (см.
ниже соотношение (5)).
На k -м шаге метода будет получена тройка чисел ak , bk , xk ,
локализирующая минимум f ( x) , такая, что
 k  bk  ak  (b0  a0 )
Fnk 3
, 1  k  n, a1  a0 , b1  b0 ,
Fn2
а точка xk , ak  xk  bk , с вычисленным значением
f ( xk )  min f ( xi ) ,
1i k
совпадает с одной из точек
F
F
x1  ak  n  k 1 (bk  ak )  ak  n  k 1 (b0  a0 ),
Fn  k  3
Fn  2
F
F
x2  ak  n  k  2 (bk  ak )  ak  n  k  2 (b0  a0 ),
Fn  k  3
Fn  2
(4)
расположенных на отрезке  ak , bk  симметрично относительно его середины
(рис. 3). При k  n процесс заканчивается. В этом случае длина отрезка
 n  bn  an  (b0  a0 ) / Fn2 ,
а точки
x1  an 
F1
(b0  a0 ),
Fn 2
x2  an 
F2
(b0  a0 )
Fn 2
совпадают и делят отрезок пополам.
Рис. 3. Метод Фибоначчи
Следовательно
bn  an b0  a0

 .
2
Fn2
Отсюда можно выбрать n из условия
b0  a0
(5)
 Fn 2 .

С ростом n , из-за того, что Fn / Fn2 – бесконечная десятичная дробь,
происходит искажение метода. Поэтому на очередном шаге в качестве новой
точки берут из (4) наиболее удалённую от xk 1 на предыдущем шаге.
4. Поиск интервала, содержащего минимум функции
В рассмотренных методах требуется знать начальный отрезок,
содержащий точку минимума. Поиск отрезка на прямой заключатся в том,
что возрастающие по величине шаги осуществляются до тех пор, пока не
будет пройдена точка минимума функции, т.е. убывание функции сменится
на возрастание.
Например, интервал может быть выделен с помощью следующего
алгоритма. На первом шаге выбираем начальную точку x0 и определяем
направление убывания функции.
Шаг 1. Если f ( x0 )  f ( x0   ) , то полагаем: k=1, x1  x0   , h   .
Иначе, если f ( x0 )  f ( x0   ) , то x1  x0   , h   .
Шаг 2. Удваиваем h и вычисляем xk 1  xk  h .
Шаг 3. Если f ( xk )  f ( xk 1 ) , то полагаем k  k  1 и переходим к шагу
2. Иначе – поиск прекращаем, т.к. отрезок xk 1 , xk 1  содержит точку
минимума.
5. Поиск минимума функции n переменных в заданном направлении
Пусть требуется найти минимум функции n переменных f ( x ) , где
x  ( x1 , x2 ,..., xn ) , в направлении вектора s . Для этого нужно найти минимум
функции g ()  f ( x    s ) рассмотренными выше методами,  – величина
шага в заданном направлении.
Порядок выполнения работы
№
1
2
3*
Вид работы
Баллы
Реализовать методы дихотомии, золотого сечения,
исследовать их сходимость и провести сравнение
по числу вычислений функции для достижения
заданной точности  от 101 до 107 . Построить
6
график зависимости количества вычислений
минимизируемой функции от
десятичного
логарифма задаваемой точности  .
Реализовать
алгоритм
поиска
интервала,
содержащего минимум функции.
Реализовать метод Фибоначчи, сравнить его с
2
методами дихотомии и золотого сечения
*) Выполняется по желанию студентов
Варианты заданий
1. f  x   sin  x  , x    / 2, / 2.
2. f  x   cos  x  , x 0,  .
3. f  x    x  2  , x   2,20 .
2
4. f  x    x  15  5 , x   2,200 .
2
5. f  x    x  5 , x   10,15 .
4
6. f  x   e x , x  0,100 .
7. f  x   x 2  2 x  4 , x  10,20 .
8. f  x   x3  x , x  0,1 .
9. f  x   x5  x 2 , x  0,1 .
10. f  x    x / e x , x   0,3 .
11. f  x   x 4  x , x  0,1 .
12. f  x   x 4 / ln x , x 1.1, 1.5 .
Содержание отчета




Отчет должен содержать:
титульный лист;
цель работы;
задание;
таблицы с результатами исследований по каждому методу, где должны
быть отражены границы и длины интервалов на каждой итерации,
соотношение длины интервала на i  1 итерации к длине интервала на
i итерации, точки x1 и x2 и значения функции в них (по одной таблице
для каждого метода при точности  =107 ):
i
1
2
3
ai
bi
bi  ai
bi  ai
bi 1  ai 1
x1
x2
f ( x1 )
f ( x2 )
 график зависимости количества вычислений целевой функции от
логарифма задаваемой точности  (на одном графике построить
зависимости для разных методов);
 таблица, показывающая процесс поиска интервала, содержащего
минимум:
Интервал,
x
f
(
x
)
содержащий
i
i
i
минимум
1
2
3
 выводы по всем пунктам задания.
Контрольные вопросы
1.
2.
3.
4.
5.
Метод дихотомии.
Метод золотого сечения.
Метод Фибоначчи.
Метод квадратичной интерполяции (метод парабол)
Алгоритм поиска интервала, содержащего минимум функции.
Download