
- •В.В.Бурляев численные методы в примерах на excel
- •1. Решение нелинейного уравнения с одним неизвестным.
- •1.1 Отделение корней.
- •1.2 Уточнение корней: метод итераций.
- •1.3 Уточнение корней: метод Ньютона.
- •1.4. Уточнение корней: метод бисекции ( деления отрезка пополам ).
- •1.5 Уточнение коней: подпрограмма excel “Подбор параметра”.
- •2. Системы линейных алгебраических уравнений.
- •2.1. Матричный метод.
- •2.2. Метод приближенных вычислений.
- •2.3. Метод Гаусса – Зайделя.
- •3. Решение систем нелинейных уравнений.
- •3.1. Выбор начальных приближений.
- •3.2 Метод Ньютона.
- •3.3. Метод итераций.
- •4. Численные методы одномерной оптимизации.
- •4.1. Метод дихотомии.
- •4.2. Метод золотого сечения.
- •4.3. Встроенная подпрограмма excel “Поиск решения”.
- •5. Многомерные задачи оптимизации.
- •5.1. Безусловная оптимизация: метод покоординатного спуска.
- •5.2. Безусловная оптимизация: метод наискорейшего спуска.
- •5.3. Безусловная оптимизация: подпрограмма excel “Поиск решения”.
- •5.4. Условная оптимизация: метод штрафных функций.
- •5.5. Условная оптимизация: подпрограмма excel “Поиск решения”.
- •5.6. Условная оптимизация: линейное программирование.
- •6. Метод наименьших квадратов.
- •7. Вычисление определенных интегралов.
- •8. Численное решение обыкновенного дифференциального уравнения
- •8.1. Метод Эйлера.
- •8.2. Метод Рунге-Кутта четвертого порядка.
- •8.3. Метод прогноза и коррекции: метод Адамса.
- •9. Решение систем обыкновенных дифференциальных уравнений.
- •9.1. Задача Коши.
- •9.2. Краевая задача: метод стрельбы.
- •9.3. Краевая задача: метод прогонки.
- •10. Численное решение уравнений с частными производными
5.3. Безусловная оптимизация: подпрограмма excel “Поиск решения”.
Подпрограмма Поиск решения позволяет решать не только задачи одномерной, но и многомерной оптимизации. В ней можно воспользоваться двумя более мощными методами: методом сопряженных градиентов и методом Ньютона. Оба метода - градиентные. Отличие их от метода наискорейшего спуска заключается в том, что составляющие антиградиента в них - частные производные целевой функции- вычисляются не аналитически, а методами численного дифференцирования.
Продемонстрируем применение этой подпрограммы для решения задачи примера 5.1 на том же рабочем листе. Выделим ячейки А31 и В31 под независимые переменные Х1 и Х2, а ячейку С31 - под целевую функцию u.
Занесем в ячейку С31 формулу =(В31- A31^2)^2+(1-A31)^2. Cделав ячейку С31 текущей, вызовем подпрограмму командой меню Сервис- Поиск решения. В появившемся диалоге занесем в поле Установить целевую ячейку адрес С31, а в поле Изменяя ячейки - адреса A31:B31.
Теперь надо щелкнуть по кнопке Параметры. Откроется диалог Параметры поиска решения, в котором можно выбрать переключатели поля Оценка - квадратичная, поля Производные - прямые, поля Метод - сопряженных градиентов.
Щелкнув по кнопке Выполнить, получим новый диалог, в котором щелкнем по кнопке ОК. В результате в ячейке А31 получим минимальное значение Х1, а в ячейке В31 - минимальное значение Х2. Легко убедиться, что оба они очень близки к 1.
При желании можно повторить вычисления, выбрав другие значения переключателей и сравнив результаты вычислений.
5.4. Условная оптимизация: метод штрафных функций.
Чтобы воспользоваться этим методом, необходимо иметь следующие исходные данные:
а) формулу целевой функции f(X1,X2, ... , Xn),
б) Е - точность нахождения значений независимых переменных, при которых функция достигает минимума,
в) начальные приближения X10,X20 ... , Xn0,
г) формулы функций - ограничений в виде равенств g(X1,X2, ... , Xn)=0,
д) формулы функций - ограничений типа неравенств h(X1,X2, ... , Xn)>=0.
Здесь важно, что ограничения записаны в канонической форме, т.е. они или равны, или больше или равны нулю.
Сущность метода состоит в том, что задачу условной оптимизации при наличии ограничений мы заменяем на задачу безусловной оптимизации: поиска минимума некоторой другой - расширенной целевой функции без каких-либо ограничений
R(X1,X2, ... , Xn)= f (X1,X2, ... , Xn)+ Bs(X1,X2, ... , Xn),
где s - штрафная функция, В - коэффициент штрафа.
Штрафная функция должна учитывать заданные ограничения, а именно:
1) она должна равняться нулю для всех значений Х-ов, удовлетворяющих заданным ограничениям, т.е. когда все Х лежат в разрешенной области,
2) она должна быть очень большой, стремиться к бесконечности для тех точек, которые лежат в запрещенной области там, где ограничения не выполняются.
Таким образом, при выполнении ограничений в разрешенной области функции f (X1,X2, ... , Xn) и R(X1,X2, ... , Xn) имеют один и тот же минимум. Если хотя бы одно из ограничений нарушится, значение штрафной функции сильно возрастает и значение функции R(X1,X2, ... , Xn) значительно удаляется от минимума функции f(X1,X2, ... , Xn). Другими словами, при несоблюдении ограничений на целевую функцию налагается “штраф”.
Пусть есть только по одному ограничению типа равенства и неравенства. Тогда шрафную функцию можно записать в виде
s(X1,X2, ... , Xn)= g2(X1,X2, ... , Xn)+ h2(X1,X2, ... , Xn) {1 - sign[h(X1,X2, ... , Xn)]},
где sign[Z] -знаковая функция, равная 1 при Z>0 и равная -1 при Z<0.
Если ограничение типа равенства выполняется, то g = 0, в противном случае первое слагаемое штрафной функции g2(X1,X2, ... , Xn) больше нуля и при умножении на коэффициент штрафа сильно увеличивает значение расширенной целевой функции.
Если ограничение типа неравенства выполняется, то h(X1,X2, ... , Xn) больше нуля, т.е. знаковая функция равна 1 и выражение в фигурных скобках равно нулю. В противном случае это выражение равно2, а значит второе слагаемое штрафной функции больше нуля и при умножении на коэффициент штрафа сильно увеличивает значение расширенной целевой функции. Таким образом, эта формула обеспечивает выполнение условий, наложенных на штрафную функцию. Если ограничений любого вида несколько, то для каждого из низ записываются аналогичные формулы и все они суммируются.
Доказано, что если минимум f лежит внутри разрешенной области, то минимумы R и f совпадают. В противном случае минимум R лежит снаружи вблизи границ разрешенной области. Поэтому этот метод называют иногда методом внешних штрафных функций.
Наибольшую трудность при применении этого метода вызывает выбор значения коэффициента штрафа В, который, по существу, определяет “вес” штрафной функции по сравнению с исходной целевой функцией. Нельзя сразу задать величину В очень большой, например, В=1000000, т.к. в этом случае “вес” штрафной функции намного превышает “вес” целевой функции и компьютер найдет минимум не функции f, а функции s. Поэтому используется следующий итерационный алгоритм.
Положим В=1. Из точки начального приближения методом покоординатного спуска ( или любым другим прямым методом поиска, т.к. знаковая функция не дифференцируема) начнем искать минимум расширенной целевой функции. Когда на каком-либо шаге покоординатного спуска модуль штрафной функции уменьшится приблизительно на порядок, увеличим величину коэффициента штрафа В на два порядка и продолжим поиск минимума расширенной целевой функции. Этот прием следует использовать до тех пор, пока модуль штрафной функции не станет меньше заданной точности Е.
Формальной проверкой правильности решения может служить близость полученных значений Х-ов к границе допустимой области ограничений, причем с внешней стороны.
Пример 5.3.
Решим задачу примера 5.1 методом штрафных функций. Как известно, координаты точки минимума есть (1;1). Введем ограничение типа неравенства (Х12+Х22)<= 0,64. Это означает, что решение может находиться лишь внутри окружности с центром в начале координат и радиусом, равным 0,8. Таким образом, настоящий минимум лежит в запрещенной области и решение должно быть близко к окружности, определяемой ограничением, причем с внешней стороны.
Прежде всего перепишем формулу неравенства в каноническом виде
0,64 -(Х12+Х22) >= 0 .
Вернемся к рабочему листу EXCEL, на котором проведено решение примера 5.1 методом покоординатного спуска. Там столбцы А и В отведены под независимые переменные, столбец С - под функцию f, столбец D - под значения погрешности D. Проведем подготовительный этап для метода штрафных функций. Для этого выделим блок А5:D17 и уничтожим его содержимое, нажав на клавиатуре клавишу “Delete”. В ячейку D3 занесем формулу = 0,64-(A3^2+B3^2), в ячейку Е3 - формулу =D3^2*(1- ЗНАК(D3)), где функция ЗНАК соответствует знаковой функции sign. Если теперь в ячейку F3 занести 1, то в ячейке G3 можно сформировать формулу расширенной целевой функции =C3+F3*G3. На этом подготовительный этап заканчивается.
1 итерация. Скопируем формулы блока С3:G3 в блок С4: G30. Следует заметить, что заранее неизвестно, сколько итераций потребуется для получения решения. Поэтому может случиться, что формулы из 3 строки придется скопировать и ниже 30 строки. Сделаем ячейку А4 пустой, а в ячейку В4 занесем 0,5. Теперь определим ячейку G4 текущей и проведем первый шаг метода покоординатного спуска так, как это описано в примере 6.1. Продолжим шаги метода покоординатного спуска до тех пор, пока модуль чисел в столбце Е не уменьшится на порядок по сравнению с числом в ячейке Е3.
2 итерация. Изменим значение величины коэффициента штрафа, занеся число 100 в соответствующую ячейку столбца F, и вновь продолжим покоординатный спуск до тех пор, пока модуль чисел в столбце Е снова не уменьшится еще на порядок.
После этого следует опять увеличить В на два порядка и так до тех пор, пока какое-нибудь число в строке Е не станет меньше по модулю заданного значения Е. Числа в соответствующей строке в столбцах А и В и есть координаты точки минимума.