Автор работы: Пользователь скрыл имя, 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 стр.
Метод локализации
минимума способом золотого сечения
является в некотором смысле оптимальным,
так как он дает максимальную скорость
убывания интервала локализации минимума
.
Рис.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(
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 и достигается в точке , т.е:
.
Проверка результатов:
Используем необходимое условие экстремума.
Найдем производную функции:
.
В точке минимума производная должна равняться нулю.
Подставим найденную нами точку минимума в производную
.
Точка минимума найдена
с указанной в постановке задачи точностью.
График функции на заданном интервале:
Информация о работе Нахождение минимума унимодальной функции методами Дихотомии и Золотого сечения