Лабораторная работа № 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. Метод Фибоначчи Числа Фибоначчи определяются соотношениями: Fn2 Fn1 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 n1 (b0 a0 ), Fn2 (3) где n выбирается исходя из точности и начальной длины интервала (см. ниже соотношение (5)). На k -м шаге метода будет получена тройка чисел ak , bk , xk , локализирующая минимум f ( x) , такая, что k bk ak (b0 a0 ) Fnk 3 , 1 k n, a1 a0 , b1 b0 , Fn2 а точка xk , ak xk bk , с вычисленным значением f ( xk ) min f ( xi ) , 1i 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 ) / Fn2 , а точки x1 an F1 (b0 a0 ), Fn 2 x2 an F2 (b0 a0 ) Fn 2 совпадают и делят отрезок пополам. Рис. 3. Метод Фибоначчи Следовательно bn an b0 a0 . 2 Fn2 Отсюда можно выбрать n из условия b0 a0 (5) Fn 2 . С ростом n , из-за того, что Fn / Fn2 – бесконечная десятичная дробь, происходит искажение метода. Поэтому на очередном шаге в качестве новой точки берут из (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* Вид работы Баллы Реализовать методы дихотомии, золотого сечения, исследовать их сходимость и провести сравнение по числу вычислений функции для достижения заданной точности от 101 до 107 . Построить 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 и значения функции в них (по одной таблице для каждого метода при точности =107 ): 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. Метод дихотомии. Метод золотого сечения. Метод Фибоначчи. Метод квадратичной интерполяции (метод парабол) Алгоритм поиска интервала, содержащего минимум функции.