![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Компьютеры, Программирование
Программное обеспечение
Поиск максимума одной функции многих переменных методом покоординатного спуска и с помощью метода дихотомии |
Реферат В работе реализуется нахождение решения одной задачи на тему максимизации функций многих переменных. При этом рассматриваются методы дихотомии и покоординатного спуска. Пояснительная записка к курсовой работе состоит из двух основных частей: теоретической и практической. В теоретической части рассматривается поиск максимума одной функции многих переменных методом покоординатного спуска и с помощью метода дихотомии. Практическая часть содержит разработку программного обеспечения для решения заданной задачи выше указанными методами, реализованную на языке С . Объем пояснительной записки: 1 Количество рисунков: 3 Количество используемых источников: 3 СодержаниеВведение 1. Постановка задачи 2. Решение задачи с использованием метода дихотомии 2.1 Описание метода дихотомии 2.2 Алгоритм решения 3. Решение задачи с использованием метода покоординатного спуска 3.1 Описание метода покоординатного спуска 3.2 Алгоритм решения Заключение Список используемой литературы Приложение 1. Листинг программы№1 Приложение 2. Листинг программы №2 Приложение 3. Листинг программы №3 Приложение 4. Результаты работы программы №1 Приложение 5. Результаты работы программы №3 Введение В работе рассмотрены способы нахождения таких значений аргументов, при которых исходная функция максимальна, а вспомогательная (от которой зависит исходная) – минимальна. В параграфе 2 изложено решение задачи с использованием метода дихотомии. В параграфе 3 произведено исследование задачи методом покоординатного спуска. 1. Постановка задачи Исходная функция имеет вид: , где: xiR –– параметры исходной функции; p, qR –– некоторые параметры удовлетворяющие условию 1&l ;pq&l ;&i fi ;; с=c(x1 x ) –– вспомогательная функция, записанная в неявном виде →mi . Задача: Найти xi , : f(x1 x )=f(x1 x ). Выполним следующую замену: xi=axi b, . При этом значение функции не изменится: Таким образом, исходную область определения функции можно сузить до xiR. Так как знаменатель не должен быть равным нулю, то xi& e;xj i& e;j. Но тогда все параметры можно расположить по возрастанию: x1x2 xixi 1 x , а выбором a и b можно привести x1=0, x =1. Далее будем рассматривать задачу от -2 переменных, т.к. x1 и x являются константами. 2. Решение задачи с использованием метода дихотомии 2.1 Описание метода дихотомии Данный метод применяется для решения нелинейных уравнений. Если нелинейное уравнение достаточно сложное, то найти точно его корни удается весьма редко. Важное значение приобретают способы приближенного нахождения корней уравнения и оценка степени их точности. Пусть f(x)=0(1) Где f(x) определена и непрерывна в некотором конечном и бесконечном интервале a&l ;x&l ;b. Требуется найти все или некоторые корни уравнения (1).Всякое значение , обращающее функцию f(x) в нуль, называется корнем уравнения (1). Поставленная задача распадается на несколько этапов: 1.Отделение корней, т.е. установление возможно более тесных промежутков , в которых содержится только по одному корню. Нахождение приближенных (грубых) значений корней. Вычисление корней с требуемой точностью. Первая и вторая задача решаются аналитическими и графическими методами.
Отделение корней Если уравнение f(x) = 0 имеет только действительные корни, то полезно составить таблицу значений функции f(x).Если в двух соседних точках и функция имеет разные знаки, то между этими точками лежит по меньшей мере один корень. Корень будет заведомо единственным, если определена на отрезке и сохраняет постоянный знак. Графические методы Действительные корни уравнения f(x) = 0 приближенно можно определить как абсциссы точек пересечения графика функции f(x) с осью x. Приближенные значения корней, найденные грубо, в дальнейшем уточняют с помощью какого-либо итерационного метода. Метод дихотомии Дихотомия означает деление пополам. Пусть нашли такие точки и , что &l ; 0, т.е. на лежит по меньшей мере один корень. Найдем середину отрезка . Получаем . Если f(x2) = 0, то если f()0, то из двух половин отрезка выберем ту, для которой выполняется условие &l ; 0, т.к. корень лежит на этой половине. Затем вновь делим выбранный отрезок пополам и выбираем ту половину, на концах которой функция имеет разные знаки. Если требуется найти корень с точностью , то продолжим деление пополам (если конечно функция в середине какого-либо отрезка не обращается в нуль), пока длина очередного отрезка не станет &l ; 2. Тогда середина последующего отрезка установит значение с требуемой точностью. Метод дихотомии прост и очень надежен. Он сходится для любых непрерывных функций f(x), в том числе не дифференцируемых. Метод устойчив к ошибкам округления, но скорость сходимости невелика. К недостаткам метода следует отнести сходимость к неизвестно какому корню (если корни не отделены). Но указанный недостаток имеется у всех итерационных методов. Дихотомия применяется тогда, когда требуется высокая надежность счета, а скорость сходимости малосущественна. Метод иногда применяется для грубого нахождения корней с последующим уточнением по другому методу с большей скоростью сходимости. Этот метод относится к двусторонним (или к двух шаговым) методам, т.к. для вычисления очередного приближения необходимо знать два предыдущих. 2.2Алгоритм решения Для нахождения максимума функции будем перебирать всевозможные переменные xi, , с шагом необходимой длины. Затем будем находить значение функции с() методом дихотомии. Для этого вычислим производную функции , зависящей от с, и приравняем ее к 0. Найдем корень этого нелинейного уравнения методом дихотомии. Подставим конкретный набор и при нем найденное в исходную функцию, и получим ее значение. Перебирая все xi, найдем максимум функции. Перебирая всевозможные параметры p и q, получим некоторые наборы (в зависимости от p и q) на которых функция достигает максимума. 3. Решение задачи с использованием метода покоординатного спуска 3.1 Описание метода покоординатного спускаИзложим этот метод на примере функции трех переменных . Выберем нулевое приближение . Фиксируем значения двух координат . Тогда функция будет зависеть только от одной переменной ; обозначим ее через . Найдем минимум функции одной переменной и обозначим его через . Мы сделали шаг из точки в точку по направлению, параллельному оси ; на этом шаге значение функции уменьшилось.
Затем из новой точки сделаем спуск по направлению, параллельному оси , т. е. рассмотрим , найдем ее минимум и обозначим его через . Второй шаг приводит нас в точку . Из этой точки делаем третий шаг – спуск параллельно оси и находим минимум функции . Приход в точку завершает цикл спусков. Будем повторять циклы. На каждом спуске функция не возрастает, и при этом значения функции ограничены снизу ее значением в минимуме . Следовательно, итерации сходятся к некоторому пределу . Будет ли здесь иметь место равенство, т. е. сойдутся ли спуски к минимуму и как быстро? Это зависит от функции и выбора нулевого приближения. Метод спуска по координатам несложен и легко программируется на ЭВМ. Но сходится он медленно. Поэтому его используют в качестве первой попытки при нахождении минимума. 3.2 Алгоритм решения Будем перебирать с с шагом какой-либо малой длины. Зададим нулевое приближение, например: Найдем частные производные . Пусть при каком-то j Тогда k-ое приближение считаем по формулам: Шаг будем выбирать таким образом, чтобы и . В результате, закончив процесс по критерию , где -заданная точность мы придем к набору, при котором функция f максимальна. Подставим найденный набор и соответствующее в функцию f1=и перебрав все с, выберем те , при которых f1 минимальна. Заключение В ходе решения поставленной задачи рассмотрены случаи, когда =4,5,6. Были найдены две основные области наборов : 1) xi=0 или 1(количество 0 и 1 одинаково) 2) xi=0.5, . Причем участок 1&l ;p&l ;1.5 покрыт первой областью, при q&g ;&g ;p –– из первой области, при q≈p –– из второй области, а при p→&i fi ; область делилась между ними примерно пополам. На участке p&g ;2 появлялись области вида: i&l ;k =&g ; xi=0; i&g ; -k =&g ; xi=1; k-1&l ;i&l ; -k 1=&g ; xi=0.5. На участке 2&l ;q&l ;3 p2 существует область, в которой максимум достигается при вида: xi=a =&g ; x -i=1-a, 0&l ;a&l ;1. Список использованных источников Амосов А.А., Дубинский Ю.А., Копченова Н.В. Вычислительные методы для инженеров. М.: Высшая школа, 1994. 543с. Березин И.С. и Жидков Н. П. Методы вычислений. т.1. М.: “Наука”, 1965. 633c. Подбельский В.В. и Фомин С.С. Программирование на языке Си. М.: “Финансы и статистика”, 2000. 599с. Приложение 1. Листинг программы №1 //вывод на экран областей максимума функции #i clude &quo ;s dafx.h&quo ; #i clude &quo ;KE2.h&quo ; #i clude &quo ;ma h.h&quo ; #i clude &quo ;KE2Doc.h&quo ; #i clude &quo ;KE2View.h&quo ; #ifdef DEBUG #defi e ew DEBUG EW #u def HIS FILE s a ic char HIS FILE[] = FILE ; #e dif IMPLEME DY CREA E(CKE2View, CView) BEGI MESSAGE MAP(CKE2View, CView) //{{AFX MSG MAP(CKE2View) // O E - he ClassWizard will add a d remove mappi g macros here. // DO O EDI wha you see i hese blocks of ge era ed code! //}}AFX MSG MAP // S a dard pri i g comma ds O COMMA D(ID FILE PRI , CView::O FilePri ) O COMMA D(ID FILE PRI DIREC , CView::O FilePri ) O COMMA D(ID FILE PRI PREVIEW, CView::O FilePri Preview) E D MESSAGE MAP() CKE2View::CKE2View() { } CKE2View::~CKE2View() { } BOOL CKE2View::PreCrea eWi dow(CREA ES RUC & cs) { re ur CView::PreCrea eWi dow(cs); } void CKE2View::O Draw(CDC pDC) { CKE2Doc pDoc = Ge Docume (); ASSER VALID(pDoc); drawPoi (pDC); // ODO: add draw code for a ive da a here } BOOL CKE2View::O PreparePri i g(CPri I fo pI fo) { // defaul prepara io re ur DoPreparePri i g(pI fo); } void CKE2View::O Begi Pri i g(CDC / pDC /, CPri I fo / pI fo /) { // ODO: add ex ra i i ializa io before pri i g } void CKE2View::O E dPri i g(CDC / pDC /, CPri I fo / pI fo /) { // ODO: add clea up af er pri i g } #ifdef DEBUG void CKE2View::Asser Valid() co s { CView::Asser Valid(); } void CKE2View::Dump(CDumpCo ex & dc) co s { CView::Dump(dc); } CKE2Doc CKE2View::Ge Docume () // o -debug versio is i li e { re ur (CKE2Doc )m pDocume ; } #e dif // DEBUG i sg (floa a) { i sg; if (a&g ;0) sg=1; if (a==0) sg=0; if (a&l ;0) sg=-1; re ur (sg); } #defi e 6 void CKE2View::drawPoi (CDC pDC) { double c, f1, f, x, w, e,max,p=2,q=2,xx,yy; i i=0,j=0,k,m,a,b, l,bb=0; c= ew double = ew double,0,sizeof(double) 3); } f= ew double; f1= ew double; for(xx=0.5
Разумеется, всегда есть группа читателей, которые на вопрос, поставленный ребром, отвечают уклончиво и с оговорками. Как бы то ни было, статистик всегда сумеет разбить оценки поступков героя газетного рассказа либо на две категории хорошо и плохо, либо на три: хорошо, плохо и «смотря по тому», а может быть, если груда писем достаточно велика, сумеет разбить оценки более детально (полное одобрение, одобрение, слабое одобрение, безразличное отношение, слабое неодобрение, неодобрение, полное неодобрение), ввести балльную шкалу и построить гауссову кривую. В результате подобной статистической обработки поступок героя получает количественную оценку, которая может формулироваться, например, так поступок с баллом 3 на «шкале хорошего». С помощью анкетного опроса можно, конечно, оценивать не только поступки героев рассказа, но также и отношение общества к тем или иным шкалам моральных индексов. Таким образом, представляется достаточно очевидным, что развитие науки, изучающей мораль общества как функцию многих переменных, связано с переносом на эту важную область знания методов естествознания
1. Решение задач линейной оптимизации симплекс – методом
2. Решение задач линейного программирования симплекс методом
3. Решение задачи линейного программирования симплексным методом
4. Решения задач линейного программирования геометрическим методом
9. Решение задач транспортного типа методом потенциалов
10. Применение новейших экономико-математических методов для решения задач
13. Симплекс метод решения задачи линейного программирования
15. Методы поиска новых идей и решений. Совершенствование методов управления в менеджменте
16. Графический метод и симплекс-метод решения задач линейного программирования
17. Решение задач симплекс-методом
18. Решение дифференциальных уравнений 1 порядка методом Эйлера
19. Формирование структуры электронного учебника и решение задач на ней
20. Решение задач линейного программирования
21. Решение задач на построение сечений многогранников
25. Применение движений к решению задач
27. Система налоговых органов, их функции и задачи
28. Пример решения задачи по механике
30. Пути повышения эффективности обучения решению задач
31. От решения задач к механизмам трансляции деятельности
34. Применение спектральной сейсморазведки для решения задач инженерной геологии
35. Решение задачи одномерной упаковки с помощью параллельного генетического алго-ритма
36. Расчет экономической эффективности применения ПЭВМ для решения задачи
37. Общая схема решения задачи на персональном компьютере
41. Примеры решения задач по правоведению
42. Структура, функции и задачи муниципального образования г. Владикавказ
43. Excel: решение задач с подбором параметров
44. Примеры решения задач по программированию
45. Программная модель поиска глобального минимума нелинейных "овражных" функций двух переменных
46. Реализация на ЭВМ решения задачи оптимальной политики замены оборудования
47. Решение задач линейного программирования
48. Решение задач моделирования и оптимизации с помощью программ Excel и Mathcad
49. Решение задач оптимизации бизнес-процессов с использованием прикладных программ
50. Решение задач с помощью современых компьютерных технологий
51. Решение задачи оптимального управления
52. Решение задачи с помощью программ Mathcad и Matlab
53. Решение задачи с помощью программ Mathcad и Matlab
57. Функции, цели, задачи розничной торговли
59. Решение задач по курсу статистики
60. Функционально-графический подход к решению задач с параметрами
62. Обучение решению задач из раздела "Основы алгоритмизации и программирования"
64. Схематическое моделирование при обучении решению задач на движение (младшие школьники)
65. Решение задач по теплотехнике
66. Проектирование подстанции 110/6 кВ с решением задачи координации изоляции
67. Решение задач по теоретической механике
68. Примеры решения задач по курсу химии
69. Методика решения задач по теоретическим основам химической технологии
73. Формирование цен, ее состав и решенные задачи
74. Использование линейного программирования для решения задач оптимизации
75. Решение задач на переливание на бильярдном столе
76. Решение задач по эконометрике
77. Решение задачи о коммивояжере
80. Метод контурных токов, метод узловых потенциалов
82. Радиоволновые, радиационные методы контроля РЭСИ. Методы электронной микроскопии
83. Денежные потоки и методы их оценки. Методы оценки финансовых активов
84. Решение транспортной задачи методом потенциалов
85. Решение транспортной задачи методом потенциалов
89. Поиск решений системы линейных уравнений методом Гаусса
90. Решение прикладных задач методом дихотомии
91. Решение экономических задач программными методами
92. Логические задачи и методы их решения
93. Поиск нулей функции. Итерационные методы
94. Методика обучения решению текстовых задач алгебраическим методом
95. Эвристические методы решения творческих задач
97. Оптимизационные методы решения экономических задач
98. Решение оптимизационных управленческих задач на основе методов и моделей линейного программирования