Нахождение минимума унимодальной функции методами Дихотомии и Золотого сечения

Автор работы: Пользователь скрыл имя, 10 Января 2012 в 12:54, курсовая работа

Краткое описание

Найти минимум функции y(x)=-4x-8x^3+6x^4 методом дихотомии и методом золотого сечения на отрезке [0;1.5]. Взять точность ε = 0.00001. Составить программы на любом алгоритмическом языке. Построить график функции. Вычисления: семь знаков после запятой. Сделать проверку полученных результатов. Проверить необходимые условия оптимальности.

Содержание работы

Постановка задачи……………………………………………………………..…3 стр.
Теория унимодальных функций.………..………………………….……3 стр.
Алгоритм метода дихотомии …………………………………………..….4 стр.
Программа решения задания методом дихотомии…….……..6 стр.
Результаты выполнения программы………………………………...…7стр.
Алгоритм метода золотого сечения………………………………………8стр.
Программа решения задания методом золотого сечения..10 стр.
Результаты выполнения программы…...……………………..….….12 стр.
Проверка результатов……………………………………………………..……13стр.
График функции на заданном отрезке [0;1,5]……..……………14 стр.

Содержимое работы - 1 файл

Вариант 8.docx

— 149.17 Кб (Скачать файл)

Министерство  образование и  науки Российской Федерации

Московский  Авиационный Институт

(Национальный  Исследовательский Университет) 
 
 

                  Факультет № 1   Авиационная техника”.                                                                                                                                       Кафедра : “Внешнее проектирование                                                                                                                      и эффективность авиационных                                                                                                     комплексов.»                                                                               Специальность :”Моделирование и                                                                                                     исследование операций в                                                                                                                                       организационно – технических                                                                                        системах”. 
                   

Курсовая  работа

по Численному моделированию задач специальности.

Нахождение  минимума унимодальной функции методами Дихотомии и Золотого сечения. 
 
 

                                                                                                                                          Исполнитель: Студент гр.01-216

                                                                                                                             Секретарев Максим Дмитриевич 
 
 
 
 
 
 
 
 
 

Москва

2011

Содержание

Постановка  задачи……………………………………………………………..…3 стр.

Теория унимодальных функций.………..………………………….……3 стр.

Алгоритм  метода дихотомии …………………………………………..….4 стр.

Программа решения задания методом дихотомии…….……..6 стр.

Результаты  выполнения программы………………………………...…7стр.

Алгоритм  метода золотого сечения………………………………………8стр.

Программа решения задания методом золотого сечения..10 стр.

Результаты выполнения программы…...……………………..….….12 стр.

Проверка  результатов……………………………………………………..……13стр.

График  функции на заданном отрезке  [0;1,5]……..……………14 стр. 

 

                                                            Вариант 8.

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

Найти минимум функции методом дихотомии и методом золотого сечения на отрезке [0;1.5]. Взять точность ε = 0.00001. Составить программы на любом алгоритмическом языке. Построить  график функции. Вычисления: семь знаков после запятой. Сделать проверку полученных результатов. Проверить необходимые условия оптимальности.

Теория унимодальных функций:

Нелинейное программирование  - определяет экстремум функции (максимум или минимум), при ограничениях, которые заданы линейными и нелинейными функциями.

Целевая функция  является линейной или нелинейной функцией.

Унимодальность.

Функция f(x) называется унимодальной на отрезке [a,b], если существует точка минимума на этом отрезке такая, что для любых точек , этого отрезка выполнены условия:

1)         ,

2)        .

Виды функций  показаны на рис.1 и 2.

На рис.1 даны примеры унимодальных функций.

На рис.2 даны примеры  не унимодальных функций. 

Данная задача является задачей нелинейного программирования, так как целевая функция является нелинейной. Рассмотрим два метода отыскания экстремума функции (минимума или максимума): метод дихотомии (половинного деления) и метод золотого сечения .

Алгоритм  метода дихотомии:

Идея метода проста и прозрачна : делить зону, где находиться точка минимума пополам и отбрасывать часть интервала, где минимума нет.

Пусть минимальная  точка    находится на интервале  0.На первом шаге разделим этот промежуток точкой  Сделаем два измерения функции или два эксперимента (с целью выявления, справа или с лева от точки  находиться  минимум ). Для этого достаточно определить значение функции в   , где - точность вычисления. Это значение должно быть достаточно малым, но не настолько, что бы знак разности       сохранял информацию о положении минимума. То есть в силу унимодальности  функции, если  , то  , если  , то  .

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

Анологично, производя  шаги поиска минимального значкния функции , до тех пор пока на  -том шаге после экспериментов отрезок   , где находится точка, в которой функция принимаем минимальное значение, не станет  меньше чем  ( т.е   ).

Метод дихотомии позволяет быстро попасть в точку минимума функции. Для нахождения экстремума с точностью    от исходного промежутка нужно сделать всего   измерений, так как .

                    Рис.3

Принцип работы метода дихотомии показан на рис.3

Программа решения задания  методом дихотомии:

Решение задачи методом  дихотомии:

program dihotom;

uses crt;

var x0,x1,e,x2,a,b,w:real;

i:integer;

begin

clrscr;

i:=0;

writeln(‘начало и конец отрезка’);

readln(x0);readln(x1);

writeln(‘точность');

read(e);

writeln('f(x)= -4*x-8*x^3+6*x^4');

repeat

i:=i+1;

x2:=(x0+x1)/2;

w:=-4*x2-8*power(x2,3)+6*power(x2,4);

a:=x2+e/2;

b:=x2-e/2;

write (i,'-ое деление ',' f(',x2:5:2,') = ',w:7:5,'  на интервале [',x0:5:2,',',x1:5:2,']');

writeln;

if ((-4*a-8*power(a,3)+6*power(a,4))-(-4*b-8*power(b,3)+6*power(b,4))>0)

then begin x0:=x0 ; x1:=x2; end else

if ((-4*a-8*power(a,3)+6*power(a,4))-(-4*b-8*power(b,3)+6*power(b,4))<0)

then begin x0:=x2;x1:=x1; end;

until (x1-x0)<e;

x2:=(x0+x1)/2;

writeln('min=',(-4*x2-8*power(x2,3)+6*power(x2,4)):7:5,' в точке,x2:7:5);

end. 
 

 

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

Ите-

рации

 
a
 
f(a)
 
 
 
 
 
 
 
        
 
 
 
 
 
b
 
    
 
          
0 0.0000000 0.000000000 0.7500050 -4.476599375 0.7500000 -4.476562500 0.7499950 -4.476525625 1.5000000 -2.625000000 -0.000073750
1 0.7500000 -4.476562500 1.1250050 -6.279786171 1.1250000 -6.279785156 1.1249950 -6.279784140 1.5000000 -2.625000000 -0.000002031
2 1.1250000 -6.279785156 1.3125050 -5.532578691 1.3125000 -5.532623291 1.3124950 -5.532667890 1.5000000 -2.625000000 0.000089199
3 1.1250000 -6.279785156 1.2187550 -6.119543158 1.2187500 -6.119562149 1.2187450 -6.119581139 1.3125000 -5.532623291 0.000037981
4 1.1250000 -6.279785156 1.1718800 -6.246525665 1.1718750 -6.246533990 1.1718700 -6.246542314 1.2187500 -6.119562149 0.000016648
5 1.1250000 -6.279785156 1.1484425 -6.274099291 1.1484375 -6.274102785 1.1484325 -6.274106277 1.1718750 -6.246533990 0.000006986
6 1.1250000 -6.279785156 1.1367238 -6.279584466 1.1367188 -6.279585666 1.1367138 -6.279586864 1.1484375 -6.274102785 0.000002398
7 1.1250000 -6.279785156 1.1308644 -6.280334137 1.1308594 -6.280334220 1.1308544 -6.280334301 1.1367188 -6.279585666 0.000000164
8 1.1250000 -6.279785156 1.1279347 -6.280220916 1.1279297 -6.280220448 1.1279247 -6.280219978 1.1308594 -6.280334220 -0.000000939
9 1.1279297 -6.280220448 1.1293995 -6.280317897 1.1293945 -6.280317703 1.1293895 -6.280317509 1.1308594  -6.280334220 -0.000000389
10 1.1293945 -6.280317703 1.1301320 -6.280336133 1.1301270 -6.280336077 1.1301220 -6.280336020 1.1308594 -6.280334220 -0.000000113
11 1.1301270 -6.280336077 1.1304982 -6.280337667 1.1304932 -6.280337680 1.1304882 -6.280337692 1.1308594 -6.280334220 0.000000025
12 1.1301270 -6.280336077 1.1303151 -6.280337532 1.1303101 -6.280337511 1.1303051 -6.280337488 1.1304932 -6.280337680 -0.000000044
13 1.1303101 -6.280337511 1.1304066 -6.280337758 1.1304016 -6.280337753 1.1303966 -6.280337748 1.1304932 -6.280337680 -0.000000009
14 1.1304016 -6.280337753 1.1304524 -6.280337752 1.1304474 -6.280337756 1.1304424 -6.280337760 1.1304932 -6.280337680 0.000000008
15 1.1304016 -6.280337753 1.1304295 -6.280337764 1.1304245 -6.280337765 1.1304195 -6.280337764 1.1304474 -6.280337756 -0.000000001
16 1.1304245 -6.280337765 1.1304409 -6.280337760 1.1304359 -6.280337763 1.1304309 -6.280337764 1.1304474 -6.280337756 0.000000004
17 1.1304245 -6.280337765 1.1304352 -6.280337763 1.1304302 -6.280337764 1.1304252 -6.280337765 1.1304359 -6.280337763 0.000000002
18 1.1304245 -6.280337765 1.1304224 -6.280337764 1.1304274 -6.280337765 1.1304324 -6.280337764 1.1304302 -6.280337764 0.000000000

                      Табл.1 

Окончательный результат: минимальное значение функции   на отрезке [0,1.5] равно -6.2803378 и достигается в точке , т.е:

 . 
 

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

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

Перейдем к описанию процедуры поиска минимума с использованием золотого сечения . Пусть для определенности  f(Х1)<f(X2) .Разделим отрезок [Х1, X2] золотым сечением на две части так ,что бы меньший отрезок примыкал к точке Х1 .Обозначим через точку Х’ точку сечения .Могут быть два случая : 

1) f(Х1)<=f(X’)<f(X2) Здесь минимум локализован на отрезке [Х1,X’] ,длина которого равна 0,38(X2- Х1) . Далее с отрезком [Х1,X’] мы будем поступать так ,как ранее с отрезком [Х1, X2] .

2)  f(X’)<=f(Х1)<=f(X2) . В этом случае, для того чтобы сократить интервал поиска минимума ,нам нужно произвести еще одно измерение f(X). Выберем точку Х’’ так ,чтобы отрезок [X’, X2] делился этой точкой в золотом сечении (меньший отрезок примыкал к точке Х’) .Если f(X’)<=f(X’’) , то минимум локализован на отрезке [Х1,X’] , если f(X’)>=f(X’’)  , то минимум локализован на отрезке [Х’, X2] , причем Х’’ делит этот отрезок в золотом сечении . Больший из двух отрезков, на которые разбивается интервал локализации минимума, мы опять делим в золотом сечении точкой Х’’’ и.т.д. ,пока интервал локализации не станет достаточно малым .При этом после каждого измерения функции интервал локализации составляет 0,68 от длины предыдущего интервала локализации .

Информация о работе Нахождение минимума унимодальной функции методами Дихотомии и Золотого сечения