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

Описание алгоритма решения задачи. Главные особенности применения градиентного метода к функции. Иллюстрация для линий равного уровня и поверхности. Результат работы программы для модельной задачи, градиент функции. Листинг программы, его содержание.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 08.08.2012
Размер файла 818,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

КАФЕДРА ВЫСШЕЙ И ПРИКЛАДНОЙ МАТЕМАТИКИ

Контрольная работа по теме:

“Метод градиентного спуска в среде Maple

Введение

Цель работы: Реализовать метод градиентного спуска в среде Maple.

Постановка задачи:

Пусть целевая функция имеет вид:

И задача оптимизации задана следующим образом:

Основная идея метода заключается в том, чтобы идти в направлении наискорейшего спуска, а это направление задаётся антиградиентом :

где л[j] выбирается

постоянной, в этом случае метод может расходиться;

дробным шагом, т.е. длина шага в процессе спуска делится на некое число;

наискорейшим спуском:

Теоретическая часть

Пусть имеем систему уравнений (А)

Предположим, что функции действительные и непрерывно дифференцированные в их общей области определения. Рассмотрим функцию

(B)

Очевидно, что каждое решение системы (А) превращает в ноль функцию U(x); наоборот, числа, для которых функция U(x) равняется нулю, является корнем системы (А).

Предположим, что система имеет лишь изолированное решение, которое представляет собой точку строго минимума функции U(x) в n-мерном пространстве .

Пусть x - вектор системы (А) и x0 - его нулевое приближение. Через точку x0 проведем поверхность уровня функции U(x). Если точка x0 довольно близка к корню x, то при наших предположениях поверхность уровня

U(x)= U(x0)

будет похожа на эллипсоид.

Из точки x0 движемся по нормали к поверхности U(x)= U(x0) до тех пор, пока эта нормаль не затронет в некоторой точке x1 какой-то другой поверхности уровня U(x)= U(x1).

Потом, отправляясь от точки x1, снова движемся по нормали к поверхности уровня U(x)= U(x1) до тех пор, пока эта нормаль не затронет в некоторой точке x2 новой поверхности уровня U(x)= U(x2), и т.д.

Поскольку U(x0)>U(x1)>U(x2)>..., то, двигаясь таким путем, мы быстро приближаемся к точке с наименьшим значением U ("дно ямы"), что отвечает искомому решению исходной системы. Обозначим через

градиент функции U(x).

Находить нужное решение будем по формуле:

Остается определить множители . Для этого рассмотрим скалярную функцию

Функция () дает изменение уровня функции U вдоль соответствующей нормали к поверхности уровня в точке xp. Множитель надо выбрать таким образом, чтобы () имела минимум. Беря производную по и приравнивая ее нулю, получаем уравнение

.

Наименьший положительный корень этого уравнения и даст нам значение .

Будем считать, что - малая величина, квадратом и высшими степенями которой можно пренебрегать. Имеем:

Раскладывая функции за степенями с точностью до линейных членов, получим:

, .

Где матрица W - Якоби вектор-функции f.

Дальше, имеем:

.

Отсюда,

где W'(x) - транспонированная матрица Якоби.

Поэтому окончательно

,

.

Описание алгоритма решения задачи:

1. Задают начальное приближение и точность расчёта

2. Рассчитывают

где

Проверяют условие остановки:

Если или (выбирают одно из условий), то j = j + 1 и переход к шагу 2.

Иначе и останов.

Применим градиентный метод к функции

. Тогда последовательные приближения будут выглядеть так:

Рис. 1

Рис. 2

Результат работы программы для модельной задачи:

Задаем функцию, а так же шаг и необходимую точность

Находим градиент функции

Задаем начальное приближение

Далее строим итерационную последовательность и находим значения переменных с необходимой степенью точности

Как мы видим, программа работает верно. Для наглядности построим график функции:

Рис. 3

Результат работы программы для функции

Задаем функцию, а так же шаг и необходимую точность

Находим градиент функции

Задаем начальное приближение

Далее строим итерационную последовательность и находим значения переменных с необходимой степенью точности

Результат работы программы для функции

Задаем функцию, а так же шаг и необходимую точность

Находим градиент функции

Задаем начальное приближение

Далее строим итерационную последовательность и находим значения переменных с необходимой степенью точности

Результат работы программы для функции

Задаем функцию, а так же шаг и необходимую точность

Находим градиент функции

градиентный метод листинг программа

Задаем начальное приближение

Далее строим итерационную последовательность и находим значения переменных с необходимой степенью точности

Листинг программы

> restart;

U:=x^2+y^2;

lambda:=0.1;

epsilon:=0.0001;

> Ux:= diff(U,x);

Uy:= diff(U,y);

> x:=1;

y:=2;

> N1:=Ux;

N2:=Uy;

> x:=x-lambda*N1;

y:=y-lambda*N2;

i:=1:

> N1:=Ux;

N2:=Uy;

x:=x-lambda*N1;

y:=y-lambda*N2;

> Nx:=max(N1,N2);

while (abs(lambda*Nx)>epsilon) do

N1:=Ux;

N2:=Uy;

x:=x-lambda*N1:

y:=y-lambda*N2:

Nx:=max(N1,N2);

i:=i+1:

end do:

> print(X=x,Y=y);

print(`kolli4estvo iteraciy`); i;

print(`zna4enie funkcii`); U;

Выводы

Численное решение нелинейных алгебраических уравнений является сложной и не до конца разрешимой задачей вычислительной математики.

При решении систем нелинейных уравнений иногда поступают следующим образом. Строится функционал, минимум которого достигается в решении системы. Затем, задавши начальное приближение к точке минимума, проводят итерации каким-либо из методов спуска. И таким путём получают удовлетворительное приближение к решению системы. Исходя из этого приближения, проводят уточнения при помощи какого-либо итерационного метода.

В ходе выполненной работы была составлена программа, реализующая метод градиентного спуска с постоянным шагом. Проведенные испытания показали, что программа работает правильно. Программа была написана в среде Maple.

Список используемой литературы

1. Акулич И.Л. Математическое программирование в примерах и задачах: Учеб. пособие для студентов эконом. спец. вузов. - М.: Высш. шк., 1986.

2. Гилл Ф., Мюррей У., Райт М. Практическая оптимизация. Пер. с англ. - М.: Мир, 1985.

3. Коршунов Ю.М., Коршунов Ю.М. Математические основы кибернетики. - М.: Энергоатомиздат, 1972.

4. Максимов Ю.А., Филлиповская Е.А. Алгоритмы решения задач нелинейного программирования. - М.: МИФИ, 1982.

5. Максимов Ю.А. Алгоритмы линейного и дискретного программирования. - М.: МИФИ, 1980.

6. Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. - М.: Наука, 1970. - С. 575-576.

Размещено на Allbest.ru


Подобные документы

  • Оптимизация решения задачи с помощью алгоритма отжига. Анализ теории оптимизации как целевой функции. Метод градиентного спуска. Переменные и описание алгоритма отжига. Представление задачи коммивояжера через граф. Сведение задачи к переменным и решение.

    курсовая работа [784,0 K], добавлен 21.05.2015

  • Особенности метода неопределенных множителей Лагранжа, градиентного метода и метода перебора и динамического программирования. Конструирование алгоритма решения задачи. Структурная схема алгоритма сценария диалога и описание его программной реализации.

    курсовая работа [1010,4 K], добавлен 10.08.2014

  • Программная реализация приложения для вычисления заданных функций. Процедура поиска минимума функции. Применение методов Хука-Дживса и градиентного спуска для решения задачи. Исследование функции в окрестности базисной точки, определение ее координат.

    контрольная работа [767,1 K], добавлен 02.02.2014

  • Математическое обоснование метода решения задачи: определенный интеграл, квадратурная формула Симпсона (формула парабол). Словесное описание алгоритма и составление его блок-схемы. Выбор языка программирования. Текст программы решения задачи, ее листинг.

    курсовая работа [593,6 K], добавлен 09.07.2012

  • Решение задачи на тему максимизации функций многих переменных. Описание метода дихотомии, его применение для решения нелинейных уравнений. Решение данной задачи с использованием метода покоординатного спуска. Составление алгоритмов, листинг программы.

    курсовая работа [138,5 K], добавлен 01.10.2009

  • Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.

    курсовая работа [446,0 K], добавлен 19.06.2014

  • Особенности метода численного интегрирования функции одной переменной. Замена на каждом элементарном отрезке подынтегральной функции на многочлен первой степени (линейную функцию). Разработка алгоритма программы, ее листинг. Пример работы программы.

    контрольная работа [217,9 K], добавлен 14.07.2012

  • Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.

    контрольная работа [150,4 K], добавлен 03.05.2014

  • Особенности разработки программы и выбор методов решения задачи. Составление алгоритма, распределение регистров программы и формирование файлов. Описание процедуры очистки памяти, сложения, вычитания, умножения. Тестирование и листинг программы.

    лабораторная работа [51,2 K], добавлен 14.05.2011

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.