Методы одномерной оптимизации
Метод сканирования основан на табулировании функции в некотором интервале [a,b] значений функции с шагом h:
h = (b-a)/n (28)
где n – количество интервалов разбиения. Последовательно определяются значений функции f(x) во всех точках разбиения аргумента и запоминается наименьшее значение функции Rм и положение минимума (хм) (см. рис. 2).
а b h xм Rм
Рис. 2. Метод сканирования
Если в качестве шага сканирования выбрать заданную точность определения положения минимума , как это сделано в программе 12, то с этой точностью и получим искомое решение.
В программе 12 реализован метод сканирования одномерной функции R=f(x). Построением графика функции f(x) решается задача отделения одного экстремума. При желании, сканирование можно повторить с новым диапазоном поиска минимума. Эту же программу можно использовать для нахождения максимумов, если в программе сканирования в операторе while x b знак заменить на . В общем же случае любую программу находящую минимум функции можно превратить в программу поиска максимума, если выражение для функции заключить в скобки и поставить перед ними знак минус.
Программа 12
Метод требует длительных и объемных вычислений для получения минимума с высокой точностью. К достоинствам метода можно отнести тот факт, что алгоритм вычислений очень прост и кроме вычислений функции, практически никаких дополнительных вычислений не требуется. Рекомендуется использовать этот метод для функций, не требующих длительного времени их вычисления. Можно значительно сократить количество обращений к вычислению функции, если использовать методы, описанные ниже. Все они используют итерационные процедуры. На каждом шаге происходит уменьшение первоначального интервала [a,b] поиска.
Эффективность этих методов разная. Коэффициент K эффективности алгоритма тем больше, чем больше степень сжатия интервала поиска на каждом шаге оптимизации и тем меньше количество вычислений функции. Для метода сканирования можно рассчитать:
(29)
где S – количество вычислений функции, за которое начальная длина L диапазона, в котором находится минимум целевой функции, уменьшается до l.
(30)
Очевидно, что для увеличения коэффициента эффективности алгоритма надо увеличить степень сжатия диапазона поиска и уменьшить количество вычислений функции. Рассмотрим для этого алгоритм метода дихотомии, описанный в [10].
Метод дихотомии заключается в следующем. Начальный диапазон поиска делится пополам: х = (a + b)/2 . Затем определяют с какой стороны от х находится минимум. Сравнивают значения функции R(x+) и R(x-), где – некоторая малая величина, выбираемая в начале программы, которая в конце процедуры окажется погрешностью определения минимума. На рис. 3 минимум оказался слева, далее поиск продолжают в диапазоне новых значений a,b, причем b=x, а величина a остается прежней.
Рис. 3. Метод
дихотомии
Таким образом степень сжатия на каждом шаге оптимизации равна 2, при этом число вычислений функции равно 2, следовательно К=1. То есть эффективность метода дихотомии в 2 раза выше, чем сканирования.
Программа 13
Метод золотого сечения. Одним из наиболее эффективных методов по критерию К является метод золотого сечения. “Золотым сечением” или “золотым отношением” называют такое деление отрезка на две части, что “целое к большему относится также, как большее к меньшему”.
Можно показать, что отношение малой части отрезка к целому равно
В методе золотого сечения первоначальный отрезок (a, b) делится на части точками х1 и х2, причем обе точки делят отрезок в золотом соотношении с разных сторон:
Затем сравнивают значения целевой функции R(X1) и R(x2). Если R(X1) > R(x2), то минимум функции, очевидно, находится в интервале (X1, b). Если наоборот, R(X2) > R(x1), то минимум надо искать в диапазоне (a, X2), как это показано на рисунке. На втором шаге новый диапазон поиска также делится в золотом соотношении с двух сторон. И здесь оказывается, что вычислять значение функции R(x2) на втором шаге не надо – оно уже было вычислено как R(X1) на первом шаге. Можно показать, что Z(1-Z)(b-a)=(1-Z-Z)(b-a), если Z – “золотое отношение”.
Степень сжатия интервала поиска в этом методе составляет
Это меньше, чем в методе дихотомии, однако за счет того, что эта степень сжатия достигается не за два, а за одно вычисление функции, коэффициент эффективности в методе золотого сечения больше, чем в полтора раза выше по сравнению с методом дихотомии.
Программа 14
Существует метод одномерной оптимизации, использующий числа Фибоначчи. Этот метод также требует одного вычисления функции на шаге и имеет немного больший коэффициент сжатия, чем в методе золотого сечения. Однако, этот коэффициент не постоянный и при большом числе шагов стремится к 1.618, т. е. эффективность этих методов примерно одинакова.
Для целей отделения экстремумов и нахождения экстремумов очень можно использовать встроенные функции MathCad. После построения графика одномерной функции и отделения экстремумов можно вычислять минимумы и максимумы функции по-отдельности, как это показано в программе 15.
Программа 15
Из листинга программ 12–15 видно, что в пределах заданной точности все методы дают одинаковые результаты.
- Введение
- Глава 1 аппроксимация методом наименьших квадратов
- Программа 1
- Контрольные вопросы к главе 1
- Расчетная многовариантная задача № 1
- Варианты творческих заданий
- Глава 2. Способы сглаживания экспериментальных данных в mathcad
- Контрольные вопросы к главе 2
- Расчетная многовариантная задача № 2
- Варианты творческих заданий
- Глава 3. Интерполяция и экстраполяция
- Контрольные вопросы к главе 3
- Расчетная многовариантная задача № 3
- Варианты творческих заданий
- Глава 4. Оптимизация
- Методы одномерной оптимизации
- Контрольные вопросы к главе 4
- Расчетная многовариантная задача № 4
- Варианты творческих заданий
- Глава 5. Интегрирование
- Вычисление определенных интегралов
- Метод прямоугольников
- Метод трапеций
- Численное интегрирование с помощью квадратурных формул
- Метод парабол Симпсона
- Интегрирование с помощью встроенных функций MathCad
- Интегрирование функции, заданной таблично
- Интегральные уравнения получены на основании температурной зависимости теплоемкости индивидуального вещества:
- Контрольные вопросы к главе 5
- Расчетное многовариантное задание № 5
- Расчетное многовариантное задание № 6
- Варианты творческих заданий
- Глава 6. Дифференцирование
- Решение дифференциальных уравнений
- Метод Эйлера
- М етод Эйлера-Коши
- Метод Рунге-Кутта 4 порядка
- Решение дифференциальных уравнений с помощью встроенных функций MathCad
- Оду первого порядка
- Оду второго и выше порядка
- Решение систем оду первого порядка
- Решение «жестких» систем оду
- Контрольные вопросы к главе 6
- Расчетная многовариантная задача № 7
- Расчетная многовариантная задача № 8
- Литература
- Оглавление