Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Алгоритм нахождения максимума функции




Простейшая задача нахождения максимума функции решается по следующему алгоритму:

1. Задаются границы a и b, в пределах которых имеется максимум функции.

2. Интервал [a,b] разбивается на определенное количество шагов.

3. Функция табулируется в пределах заданного интервала, и каждое вычисленное значение функции сравнивается с максимальным (заданным до начала табулирования).

4. Находится максимальное значение функции на заданном интервале с определенным шагом и выводится на печать.

БЛОК-СХЕМА АЛГОРИТМА ИМЕЕТ ВИД:

Рис. 4. Блок – схема алгоритма нахождения максимума функции

Естественно, что с уменьшением шага изменения аргумента точность вычисления максимума увеличивается.

Можно воспользоваться и следующим алгоритмом:

1. Найти значение максимума по алгоритму, представленному выше.

2. Для дальнейшего рассмотрения выбрать отрезок [xmax-dx, xmax+dx] и выполнить вычисление максимума с шагом, например, dx/10.

3. Сравнить два найденных значения.

max1 – значение максимума с шагом dx и max2 – значение максимума с шагом dx/10. Если |max2-max1| <=E (где Е – заданная степень точности вычисления), то закончить решение задачи и max2 вывести на печать, если нет, то вычисление продолжить дальше, повторяя п.2.

Такую задачу удобнее решать, используя процедуру нахождения максимального значения функции.

Блок – схема решения задачи имеет вид:

Рис. 5. Блок – схема алгоритма нахождения максимума функции

Методы оптимизации функций одной переменной

Метод равномерного поиска

Этот метод основан на том, что переменной x присваиваются значения x+∆x с шагом ∆x = const и вычисляются значения F(x). Если F(x n+1)>F(xn), переменной x даётся новое приращение. Как только F(xn+1)станет меньше F(x) поиск останавливается. При малой заданной погрешности этот метод неэкономичен по затратам машинного времени.

Метод поразрядного приближения

Этот метод является разновидностью метода равномерного поиска и реализуется следующим алгоритмом:

1. Задаём начальное приближение x=x₀ слева от максимума F(x) и вычисляем F(x₀). Задаём D=h, где h=∆x – начальный шаг поиска.

2. Полагаем, что G=F(xn), где вначале F(xn)=F(x₀), задаём x=x+D и вычисляем F(x n+1)=F(x).

3. Проверяем условие F(x n₊₁)>G; если оно выполняется, идём к п.2, если нет, то к п.4.

4. Полагаем D=-D/4. Проверяем условие |D|>E/4, где E – заданная погрешность вычисления xn в точке максимума. Если оно выполняется, идём к п.2, т.е. обеспечиваем поиск максимума в другом направлении с шагом в 4 раза меньше прежнего. Если данное условие выполняется, процесс вычисления заканчиваем.

Метод дихотомии

Метод дихотомии (деление интервала поиска [a, b] пополам) реализуется следующим алгоритмом:

1. Проверяем условие |b-a|<2E, где E – заданная погрешность вычисления xn. Если это условие выполняется, идём к п.6; если не выполняется, идём к п.2.

2. Делим интервал поиска [a, b] пополам и вычисляем две абсциссы, симметрично расположенные относительно точки

x=(a + b)/2

x1=(a + b - E)/2 и x2=(a + b + E)/2

3. Для этих значений x вычисляем F(x₁)>F(x₂).

4. Проверяем условие F(x₁)>F(x₂). Если оно выполняется, полагаем b=x₂ и идём к п.1. Если не выполняется, идём к п.5.

5. Полагаем a=x₁ и идём к п.1.

6. Выводим на печать xn=(a+b)/2 и вычисляем F(xn).

Метод Фибоначчи

В методе Фибоначчи точка деления интервала исследования определяется с каждым новым расчётом (в методе дихотомии необходимо на каждом шаге выполнять два расчёта). В интервал исследования попадет предыдущий расчёт и для продолжения поиска достаточно произвести расчёт симметрично имеющемуся.

Допустим, задано число расчётов (шагов) N. Необходимо их произвести так, чтобы интервал, в котором лежит оптимум, был минимальным. Числа Фибоначчи, используемые в этом методе, определяются следующим образом:

FN=FN-1+FN-2

F0=F1=1

Алгоритм метода Фибоначчи состоит из следующих этапов:

1) Изменяют масштаб исходного интервала, в котором лежит оптимум. В качестве единицы измерения принимают 1=X₀/FN, или если задана длина l, в котором лежит оптимум, находят его на исходном интервале длиной X₀. Для этого, разделив X₀ на 1, находят ближайшее большее число Фибоначчи FN,
а по нему определяют N – число необходимых расчётов для определения интервала.

2) Расставляют первые две точки и на интервале исследования X0 на расстоянии FN-2 от конца b.

3) Вычисляют значение целевой функции в этих точках для сужения интервала исследования. Пусть > , тогда интервал [ , FN] исключается из рассмотрения.

4) На новом интервале исследования снова расставляют две точки и , но в одной из них уже известно значение целевой функции = .

5) Переходят к этапу 3 и т.д., пока не достигают искомого интервала, в котором находится значение переменной, максимизирующее её целевую функцию.

На рис. 6 показан процесс сужения интервала исследования:

 

 

 

 

 

 

Рис. 6. Процесс сужения интервала исследования.

Последний N–й расчёт определяет интервал длиной l, в котором находится экстремум целевой функции.

Метод золотого сечения

Золотое сечение проводит деление отрезка АВ на две неравные части так, чтобы было справедливо соотношение (рис. 7).

 

 

Рис. 7

Метод золотого сечения позволяет сужать отрезок [a, b] каждый раз вычисляя лишь одно значение F(x), а не два, как в методе дихотомии.

Данный метод реализуется следующим алгоритмом:

1. Находим коэффициент дробления k=(√5-1)/2 отрезка [a, b].

2. Находим абсциссу х1=a + (1-k)*(b-a) и вычисляем F(x1).

3. Находим абсциссу х2=a + k*(b-a) и вычисляем F(х2).

4. Проверяем выполнение условия |x2-x1|<E, где E – заданная погрешность вычисления xn. Если это условие выполняется, вычисляем xn = (x1+ x2)/2 и F(xn), после чего останавливаем счёт с выдачей значений xm и F(xn). Если данное условие не выполняется, идём к п.5.

5. Проверяем условие F(x1) < F(x2). Если оно выполняется, полагаем, а = х1, х1 = х2 и F(x1) = F(x2), после чего идём к п.3. и п.4.

Если F(x1) ≥ F(x2), полагаем b = x2, x2 = x1, f(x1) = f(x2), после чего выполняем п.2 и п.4





Поделиться с друзьями:


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 2360 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Стремитесь не к успеху, а к ценностям, которые он дает © Альберт Эйнштейн
==> читать все изречения...

2176 - | 2134 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.