Метод градиентного спуска
Ознакомление с методами поиска экстремума нелинейной выпуклой функции нескольких переменных и решение таких задач с помощью ЭВМ. Листинг программы поиска экстремума нелинейной функции. Рассмотрение выполнения программы на примере конкретной функции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 05.06.2016 |
Размер файла | 21,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования Российской Федерации
Уфимский Государственный Авиационный Технический Университет
Лабораторная работа №3
МЕТОД ГРАДИЕНТНОГО СПУСКА
Выполнил студент
группы ПИ-304з
Чудаков Кирилл
Проверил преподаватель:
Поречный С.С
Уфа 2014
1. Цель работы
Ознакомление с методами поиска экстремума нелинейной выпуклой функции нескольких переменных и решение таких задач с помощью ЭВМ.
2. Описание метода
Задача состоит в отыскании минимума функции двух переменных f(x,y) (следует отметить, что если необходимо найти максимум некоторой функции F(x,y), то эта задача сводится к поиску минимума функции f(x,y)=F(x,y) ).
Большинство численных методов состоит в отыскании некоторой последовательности (x0,y0), (x1,y1),..,(xk,yk), которая при k®R (или при k®kM) сходится к точке минимума (x*,y*). Если при этом выполняется f(x0,y0)>f(x1,y1)>..>f(xk,yk), то есть значения функции монотонно убывают при увеличении k, то такой метод называется методом спуска.
Известно, что вектор градиента функции
направлен в сторону наибольшего возрастания функции f(x,y). Поэтому в качестве направления движения можно принять противоположное градиенту направление (антиградиент), т.е. координаты точек пересчитываются по формулам
;
Выбор величины ak, с которой связана длина k-го шага, в общем случае является сложной задачей. Если ak мало, то движение будет слишком медленным и потребует значительного объема вычислений. Если ak велико, то существует возможность перескочить точку минимума и выйти на противоположный склон функции. При этом возможно нарушение требования монотонного убывания последовательности f(xk,yk) и появляется опасность зацикливания, то есть колебания последовательности (xk,yk) в некоторой окрестности точки минимума (x*,y*) без приближения к ней.
Существует несколько различных способов выбора ak. В данной работе рассматривается разновидность метода с дроблением шага. Для этого задается начальное приближение (x0,y0) и начальное значение a0 (например, x0=y0=0, 0=1). Вычисление x1,y1 и всех последующих xk+1,yk+1 производится по формуле (5.1). При этом если окажется, что f(xk+1,yk+1)>f(xk,yk), то величина ak уменьшается в два раза и вычисление xk+1,yk+1 повторяется от точки (xk,yk) с новым значением ak. Если же значение функции убывает, то величина ak=ak1.
Критерием окончания счета принимается неравенство
либо одновременное выполнение двух неравенств
,
Листинг программы
#include <iostream.h>
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,d,e;
float x[9999],y[9999],fxy[9999],r[9999];
cout<<"VVedite dla uravnenia f(x,y)=ax+bx+e^(cx^2+dy^2) koeffizent a:"<<endl; cin>>a;
cout<<"b:"<<endl; cin>>b;
cout<<"c:"<<endl; cin>>c;
cout<<"d:"<<endl; cin>>d;
cout<<"vvedite to4nost' e:"; cin>>e;
int n=0;
power: n++;
x[0]=0;
y[0]=0;
r[0]=1;
fxy[0]=1;
x[n]=x[n-1]-r[n-1]*(a+2*c*x[n-1]*exp(c*x[n-1]*x[n-1]+d*y[n-1]*y[n-1]));
y[n]=y[n-1]-r[n-1]*(b+2*d*y[n-1]*exp(c*x[n-1]*x[n-1]+d*y[n-1]*y[n-1]));
fxy[n]=a*x[n]+b*y[n]+exp(c*x[n]*x[n]+d*y[n]*y[n]);
if(fxy[n]>fxy[n-1])
{
r[n]=r[n-1]/2;
}
else
{
r[n]=r[n-1];
} cout<<"f[n]"<<fxy[n]<<endl;
if(fabs(a+2*c*x[n-1]*exp(c*x[n-1]*x[n-1]+d*y[n-1]*y[n-1]))>=e/2 && fabs(b+2*d*y[n-1]*exp(c*x[n-1]*x[n-1]+d*y[n-1]*y[n-1]))>=e/2) goto power;
else
{
cout<<"r["<<n<<"]="<<r[n]<<endl;
cout<<"x["<<n<<"]="<<x[n]<<endl<<"y["<<n<<"]="<<y[n]<<endl<<"f(x,y)="<<fxy[n]<<endl;
};
}
Пример
Рассмотрим выполнение программы на примере функции , где
a |
b |
c |
d |
|
1 |
-1.4 |
0.01 |
0.11 |
|
2 |
-1.3 |
0.04 |
0.12 |
экстремум нелинейный функция листинг
VVedite dla uravnenia f(x,y)=ax+bx+e^(cx^2+dy^2) koeffizent a:
1
b:
-1.4
c:
0.01
d:
0.11
vvedite to4nost' e:0.0001
f[1]=-1.70693
f[2]=-3.38065
f[3]=-4.24626
f[4]=-4.96938
f[5]=-5.61447
f[6]=-6.18591
f[7]=-6.68664
f[8]=-7.11966
f[9]=-7.48826
f[10]=-7.7964
f[11]=-8.04873
f[12]=-8.25068
f[13]=-8.40834
f[14]=-8.5282
f[15]=-8.61688
f[16]=-8.68071
f[17]=-8.72544
f[18]=-8.756
f[19]=-8.77641
f[20]=-8.78975
f[21]=-8.79831
f[22]=-8.80372
f[23]=-8.8071
f[24]=-8.80919
f[25]=-8.81046
f[26]=-8.81124
f[27]=-8.81171
f[28]=-8.81199
f[29]=-8.81216
f[30]=-8.81226
f[31]=-8.81232
f[32]=-8.81235
f[33]=-8.81237
f[34]=-8.81239
f[35]=-8.81239
f[36]=-8.8124
f[37]=-8.8124
f[38]=-8.8124
f[39]=-8.8124
f[40]=-8.8124
f[41]=-8.8124
f[42]=-8.81241
f[43]=-8.81241
f[44]=-8.81241
f[45]=-8.81241
f[46]=-8.81241
r[46]=1
x[46]=-11.2509
y[46]=1.43215
f(x,y)=-8.81241
Press any key to continue
VVedite dla uravnenia f(x,y)=ax+bx+e^(cx^2+dy^2) koeffizent a:
2
b:
-1.3
c:
0.04
d:
0.12
vvedite to4nost' e:0.001
f[1]=-4.25265
f[2]=-7.25985
f[3]=-8.23204
f[4]=-8.54052
f[5]=-8.59224
f[6]=-8.59782
f[7]=-8.59863
f[8]=-8.59875
f[9]=-8.59911
f[10]=-8.5992
f[11]=-8.59947
f[12]=-8.59955
f[13]=-8.59976
f[14]=-8.59984
f[15]=-8.6
f[16]=-8.60007
f[17]=-8.6002
f[18]=-8.60025
f[19]=-8.60035
f[20]=-8.6004
f[21]=-8.60048
f[22]=-8.60052
f[23]=-8.60058
f[24]=-8.60062
f[25]=-8.60067
f[26]=-8.60069
f[27]=-8.60073
f[28]=-8.60076
f[29]=-8.60079
f[30]=-8.60081
f[31]=-8.60083
f[32]=-8.60085
f[33]=-8.60087
f[34]=-8.60088
f[35]=-8.6009
f[36]=-8.60091
f[37]=-8.60092
f[38]=-8.60093
f[39]=-8.60094
f[40]=-8.60095
f[41]=-8.60096
f[42]=-8.60097
f[43]=-8.60097
f[44]=-8.60098
f[45]=-8.60098
f[46]=-8.60099
f[47]=-8.60099
f[48]=-8.601
f[49]=-8.601
f[50]=-8.601
f[51]=-8.601
f[52]=-8.60101
f[53]=-8.60101
f[54]=-8.60101
f[55]=-8.60101
f[56]=-8.60101
f[57]=-8.60102
f[58]=-8.60102
f[59]=-8.60102
f[60]=-8.60102
f[61]=-8.60102
f[62]=-8.60102
f[63]=-8.60102
f[64]=-8.60102
f[65]=-8.60102
f[66]=-8.60102
f[67]=-8.60102
f[68]=-8.60102
f[69]=-8.60102
f[70]=-8.60102
f[71]=-8.60103
f[72]=-8.60103
f[73]=-8.60103
f[74]=-8.60103
f[75]=-8.60103
f[76]=-8.60103
f[77]=-8.60103
f[78]=-8.60103
f[79]=-8.60103
f[80]=-8.60103
f[81]=-8.60103
f[82]=-8.60103
f[83]=-8.60103
f[84]=-8.60103
f[85]=-8.60103
f[86]=-8.60103
f[87]=-8.60103
f[88]=-8.60103
f[89]=-8.60103
f[90]=-8.60103
f[91]=-8.60103
f[92]=-8.60103
f[93]=-8.60103
f[94]=-8.60103
f[95]=-8.60103
f[96]=-8.60103
f[97]=-8.60103
f[98]=-8.60103
f[99]=-8.60103
f[100]=-8.60103
f[101]=-8.60103
r[101]=1
x[101]=-5.69418
y[101]=1.23396
f(x,y)=-8.60103
Press any key to continue
Размещено на Allbest.ru
...Подобные документы
Методика разработки программной модели числового метода поиска экстремума функции двух переменных, конструирование ввода исходных данных и вывода с сохранением. Исследование ограничений на функцию, обусловленные методом поиска и средствами моделирования.
курсовая работа [195,4 K], добавлен 17.04.2010Необходимые условия экстремума. Разработка машинного алгоритма и программы многомерной оптимизации для градиентного метода с использованием метода равномерного поиска. Проверка необходимых и достаточных условий экстремума для найденной точки минимума.
курсовая работа [249,8 K], добавлен 25.09.2013Выбор наиболее эффективного метода поиска экстремума для функции. Оценка погрешности определения точки минимума. Проверка унимодальности уравнения аналитическим методом и по графику. Сравнение алгоритмов по количеству обращений к функции и по точности.
контрольная работа [909,0 K], добавлен 14.08.2019Нахождение стационарной точки. Расчет безусловного экстремума функции методами прямого поиска. Графическое пояснение метода равномерного симплекса. Метод поиска Хука-Дживса. Метод сопряженных направлений Пауэлла. Разработка программного модуля расчетов.
курсовая работа [1,4 M], добавлен 16.09.2012Пример расчета экстремума функции методом прямого поиска с дискретным шагом. Результаты отладки программы на контрольных примерах. Составление инструкции по использованию программы. Обработка результатов исследований визуальными средствами Excel.
курсовая работа [1,0 M], добавлен 20.05.2012Ознакомление с методами решения оптимизационных задач. Алгоритм метода ломанных. Определение наименьшего значения целевой функции. Описание метода анализа математической модели. Расчет поиска минимума по методу ломаных. Листинг программы, интерфейс.
курсовая работа [2,2 M], добавлен 06.12.2014Исследование типовых примеров задач оптимизации. Реализация программы в среде MatLab для их решения. Изучение функций нелинейной оптимизации. Определение оптимума целевой функции одной или нескольких переменных. Поиск оптимальных настроек регулятора.
лабораторная работа [188,8 K], добавлен 07.12.2016Основа технологии использования программного комплекса LabVIEW, достоинства системы. Программирование, основанное на архитектуре потоков данных. Методы нахождения экстремума. Использование метода Гаусса-Зейделя для поиска максимума двумерной функции.
контрольная работа [648,0 K], добавлен 18.03.2011Создание программы для поиска минимума функции двух вещественных переменных в заданной области с помощью генетического алгоритма. Генетические алгоритмы и операторы. Создание начальной популяции. Размножение. Мутация и селекция. Тестирование программы.
курсовая работа [131,6 K], добавлен 22.02.2015Решение задачи на тему максимизации функций многих переменных. Описание метода дихотомии, его применение для решения нелинейных уравнений. Решение данной задачи с использованием метода покоординатного спуска. Составление алгоритмов, листинг программы.
курсовая работа [138,5 K], добавлен 01.10.2009Программная реализация приложения для вычисления заданных функций. Процедура поиска минимума функции. Применение методов Хука-Дживса и градиентного спуска для решения задачи. Исследование функции в окрестности базисной точки, определение ее координат.
контрольная работа [767,1 K], добавлен 02.02.2014Задача оптимизации с точки зрения математики как задача нахождения экстремума вещественной функции в некоторой области. Классификация и типы методов оптимизации, условия их практического использования. Создание программы, ее листинг, описание алгоритмов.
курсовая работа [181,7 K], добавлен 22.06.2012Решение нелинейного уравнения вида f(x)=0 с помощью программы Excel. Построение графика данной функции и ее табулирование. Расчет матрицы по исходным данным. Проведение кусочно-линейной интерполяции таблично заданной функции с помощью программы Mathcad.
контрольная работа [1,8 M], добавлен 29.07.2013Изучение аналитических и численных методов поиска одномерного и многомерного безусловного экстремума. Решение поставленной задачи с помощью Mathcad и Excel. Реализация стандартных алгоритмов безусловной оптимизации средствами языка программирования С++.
курсовая работа [488,5 K], добавлен 21.10.2012Составление схемы алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Пример вычисления степенного ряда с помощью схемы Горнера. Описание переменных программы, листинг, процедуры и функции.
курсовая работа [67,6 K], добавлен 20.11.2012Дифференциальные уравнения как уравнения, в которых неизвестными являются функции одного или нескольких переменных, причем в уравнения входят не только сами функции, но и их производные. Решение операторным методом, с помощью рядов, методом Эйлера.
курсовая работа [301,4 K], добавлен 27.03.2011Решение задачи по методу Адамса. Блок-схема функции main. Блок-схема функции Adams. Листинг программы. Блок-схема функции MMinor. Блок-схема функции MatrixMultiply. Блок-схема функции Determinant. Результат решения задачи на ЭВМ.
курсовая работа [68,9 K], добавлен 16.04.2004Постановка задачи нелинейного программирования. Критерии оптимальности в задачах с ограничениями. Задачи с ограничением в виде равенств. Метод исключения переменных. Интерпретация условий Куна-Таккера. Функции нескольких переменных. Методы прямого поиска.
реферат [330,0 K], добавлен 29.09.2008Исследование нечеткой модели управления. Создание нейронной сети, выполняющей различные функции. Исследование генетического алгоритма поиска экстремума целевой функции. Сравнительный анализ нечеткой логики и нейронной сети на примере печи кипящего слоя.
лабораторная работа [2,3 M], добавлен 25.03.2014Численные методы в задачах без ограничений. Схема методов спуска. Среда редактора Visual Basic. Использование объектов ActiveX в формах. Блок-схема алгоритма моделирования. Задачи оптимизирования детерменированных функций с единственной точкой экстремума.
курсовая работа [129,5 K], добавлен 26.04.2010