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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

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

                    Рис.4

Принцип работы метода золотого сечения  показан на рисунке 4. 
 
 
 
 

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

program zolsech;

uses crt;

var z,x0,x1,e,r,x2,x3,a,b: real;

i:integer;

function f(x:real):real;

begin

f:=-4*x-8*power(x,3)+6*power(x,4);

end;

Begin

i:=0;

clrscr;

r:=(3-sqrt(5))/2;

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

readln(x0);readln(x1);

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

read(e);

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

repeat

z:=0;

i:=i+1;

x2:=x0+(x1-x0)*r;

if (f(x0)<=f(x2)) and (f(x2)<f(x1))then begin

 x1:=x2;

 z:=1;

 end;

if(f(x2)<=f(x0)) and (f(x0)<=f(x1)) then begin

 z:=1;

 a:=x0;

 b:=x1;

 x0:=x2;

 x3:=x0+r*(x1-x0);

 if (f(x2)<=f(x3)) then begin

 z:=1;

 x0:=a;

 x1:=x3;

 end;

 if (f(x2)>=f(x3)) then begin

 z:=1;

 x0:=x2;

 x1:=b;

 end;

  end;

 if (z=0 )then begin

if (f(x1)<=f(x2))and (f(x2)<f(x0))then begin

 x0:=x2;

  end;

if (f(x2)<=f(x1))and (f(x1)<=f(x0))then begin

a:=x0;

b:=x1;

x0:=x2;

x3:=x0+r*(x1-x0);

if (f(x2)<=f(x3)) then begin

x0:=a;

x1:=x3;

end;

if (f(x2)>=f(x3)) then begin

x0:=x2;

x1:=b;

end;

end;

end;

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

writeln;

until abs(x1-x0)<e;

 x2:=(x0+x1)/2;

 writeln('min=',f(x2):7:5,' в точке',x2:7:5);

 end. 
 

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

 

№ Ите-рации  

a

 
f(a)
 
x’
 
f(x’)
 
x’’
 
f(x’’)
 
b
 
f(b)
0 0.0000000 0.000000000 0.5729490 -3.149885071     1.5000000 -2.625000000
1 0.5729490 -3.149885071 0.9270510 -5.650386550     1.5000000 -2.625000000
2 0.9270510 -5.650386550 1.1458980 -6.275748757 1.2811529 -5.7829688 1.5000000 -2.625000000
3 0.9270510 -5.650386550 1.0623059 -6.198678905     1.2811529 -5.782968806
4 1.0623059 -6.198678905 1.1458980 -6.275748757 1.1975608 -6.1893661 1.2811529 -5.782968806
5 1.0623059 -6.198678905 1.1139687 -6.275310965     1.1975608 -6.189366131
6 1.1139687 -6.275310965 1.1458980 -6.275748757 1.1656315 -6.2561024 1.1975608 -6.189366131
7 1.1139687 -6.275310965 1.1337021 -6.280134541 1.1458980 -6.2757488 1.1656315 -6.256102446
8 1.1139687 -6.275310965 1.1261646 -6.279996511     1.1458980 -6.275748757
9 1.1261646 -6.279996511 1.1337021 -6.280134541 1.1383605 -6.2791400 1.1458980 -6.275748757
10 1.1261646 -6.279996511 1.1308230 -6.280334789 1.1337021 -6.2801345 1.1383605 -6.279140032
11 1.1261646 -6.279996511 1.1290437 -6.280301749     1.1337021 -6.280134541
12 1.1290437 -6.280301749 1.1308230 -6.280334789 1.1319227 -6.2802954 1.1337021 -6.280134541
13 1.1290437 -6.280301749 1.1301434 -6.280336257 1.1308230 -6.2803348 1.1319227 -6.280295425
14 1.1290437 -6.280301749 1.1297233 -6.280328451     1.1308230 -6.280334789
15 1.1297233 -6.280328451 1.1301434 -6.280336257     1.1308230 -6.280334789
16 1.1301434 -6.280336257 1.1304030 -6.280337755 1.1305634 -6.2803374 1.1308230 -6.280334789
17 1.1301434 -6.280336257 1.1303038 -6.280337483     1.1305634 -6.280337409
18 1.1303038 -6.280337483 1.1304030 -6.280337755 1.1304643 -6.2803377 1.1305634 -6.280337409
19 1.1303038 -6.280337483 1.1303651 -6.280337695     1.1304643 -6.280337737
20 1.1303651 -6.280337695 1.1304030 -6.280337755     1.1304643 -6.280337737
21 1.1304030 -6.280337755 1.1304264 -6.280337765 1.1304409 -6.2803378 1.1304643 -6.280337737
22 1.1304030 -6.280337755 1.1304175 -6.280337763     1.1304409 -6.280337761
23 1.1304175 -6.280337763 1.1304264 -6.280337765 1.1304319 -6.2803378 1.1304409 -6.280337761
24 1.1304175 -6.280337763 1.1304230 -6.280337764     1.1304319 -6.280337764
25 1.1304230 -6.280337764 1.1304275 -6.280337765     1.1304319 -6.280337764

Результаты  выполнения программы 2:

                      Табл.2 

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

 . 
 

Проверка  результатов:

Используем необходимое  условие экстремума.

Найдем производную  функции:

 

.

В точке минимума производная должна равняться нулю.

Подставим найденную  нами точку минимума в производную 

.

 Точка минимума найдена с указанной в постановке задачи точностью. 
 
 
 
 
 
 
 
 
 
 

  График функции на заданном интервале:

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