- •Основные источники погрешностей.
- •Понятие погрешности.
- •Абсолютная и относительная погрешности функции.
- •Ловушки вычислений
- •Особенности машинной арифметики
- •1. Точные и приближенные методы решения линейных уравнений
- •2 Алгоритм отделения корней методом последовательного перебора
- •3.Алгоритмы уточнения корня
- •О точности полученных приближений (x2, , xcp) можно судить по невязке:
- •Точные и приближенные методы решения систем линейных уравнений
- •Общая постановка задач оптимизации.
- •Условия существования экстремума. Аналитические методы решения.
- •Безусловная одномерная оптимизация.
- •Определение интервала унимодальности.
- •Методы прямого поиска. (деления интервала)
- •Методы безусловной минимизации функций многих переменных. Многомерный поиск без использования производных.
- •Метод циклического покоординатного спуска.
- •Алгоритм циклического покоординатного спуска
- •Метод Хука и Дживса.
- •4. Многомерный поиск, использующий производные.
- •5. Метод наискорейшего спуска
- •Численное интегрирование
- •Постановка задачи
- •6 Численное дифференцирование
- •6.2. Метод Рунге-Кутта
- •7. Решение задач интерполяции и экстраполяции.
Безусловная одномерная оптимизация.
Задачи безусловной одномерной минимизации представляют собой простейшую математическую модель оптимизации, в которой целевая функция зависит от одной переменной, а допустимым множеством является отрезок вещественной оси:
f(x) min ,
x [a, b].
К математическим задачам одномерной минимизации приводят прикладные задачи оптимизации с одной управляемой переменной. Кроме того минимизация функций одной переменной является как правило необходимым элементом многих методов минимизации многомерных функция безусловной и условной оптимизации.
На первый взгляд кажется, что задача минимизации функции одной переменной является довольно элементарной. В самом деле, если функция f(x), которую нужно минимизировать на отрезке [a, b], дифференцируема, то достаточно найти нули производной, присоединить к ним концы отрезка, выделить из этих точек локальные минимумы и, наконец, среди последних найти ту точку, в которой достигается абсолютный минимум.
Однако для широкого класса функций эта задача не так уж проста. Во-первых, задача решения уравнения f'(x)=0 может оказаться, как это и бывает в отдельных ситуациях, весьма сложной. С другой стороны, в практических задачах часто не известно, является ли функция дифференцируемой. Ввиду этого существенное значение приобретают методы оптимизации не требующие вычисления производной.
Методы, использующие только значения функции и не требующие вычисления ее производных, называются прямыми методами минимизации. Большим достоинством прямых методов является то, что от целевой функции не требуется дифференцируемости и, более того, она может быть не задана в аналитическом виде. Единственное, на чем основаны алгоритмы прямых методов минимизации, это возможность определения значений f(x) в заданных точках. Методами поиска определяется достаточно малый интервал, в котором находится минимум, осуществляя при этом наименьшее количество вычислений функции (так как затраты на вычисления могут быть весьма велики).
Рассмотрим наиболее распространенные на практике прямые методы поиска точки минимума. Так как для приближенного определение точки оптимума исследуют поведение функции в конечном числе точек, то методы отличаются друг от друга лишь способом выбора этих точек. Суть методов состоит в построении последовательности отрезков стягивающихся к точке минимума.
Самым слабым требованием на функцию f(x), позволяющим использовать эти методы, является ее унимодальность, то есть функция имеет на заданном отрезке только одну точку минимума. Прежде, чем применять эти методы, необходимо выделить интервал, содержащий искомую точку минимума, и убедиться, что она там единственная. В противном случае предлагаемые методы будут определять только один локальный минимум.
Определение интервала унимодальности.
Для определения интервала, содержащего точку минимума, обычно используют следующую процедуру.
Выбирают две стартовые точки x и у такие, что y=x+s.
Затем, если f(x)>f(y), определяют следующие точки xk+1 = xk + s до тех пор, пока не будет получено f(xk) < f(xk+1).
В этом случае полученный интервал [x, xk+1] "накрывает" искомую точку минимума.
Если же f(x) < f(y), то выбирается противоположное направление. Точки строятся по правилу xk+1 = xk - s до тех пор, пока не будет получено f(xk) < f(xk+1).
Основной проблемой при применении описанной процедуры является правильный выбор величины s. Во многих прикладных задачах переменная изменяется в пределах многих степеней десятки (например, от 0,001 до 10000). Тогда при неправильном выборе величины s минимизация может потребовать слишком больших затрат (при очень малом s - на "накрытие" точки минимума, а при большом - на последующее за "накрытием" сужение отрезка до требуемой точности).
Для того чтобы преодолеть эту проблему, был предложен подход с удвоением шага. В этом случае определение верхней границы интервала осуществляется по правилу
xk+1 = x0 + 2ks.
После того, как точка минимума была накрыта, нижняя граница интервала определяется тем же самым процессом, но с изменением знака перед s и в обратном направлении.
И последнее, что следует здесь учесть - это возможность того, что целевая функция вообще является постоянной. Для учета этого обстоятельства необходимо вводить максимальную длину шага, которая не должна быть превышена в процессе определения отрезка, содержащего точку минимума.
