Лабораторная работа №6. Решение задачи безусловной оптимизации функций одной переменной
Требуется найти минимум заданной функции одной переменной методами равномерного поиска, золотого сечения и методом Ньютона. Пример. Пусть задана функция одной переменной . Требуется найти минимум функции на интервале [-10,10] с заданной точностью eps=0.001.
6.6.1 Метод равномерного поиска Метод реализован в процедуре Search. Входные параметры: - минимизируемая функция f типа FType, где FType=Function (x: Real): Extended ; - интервал неопределенности [ a , b ], на котором будет осуществляться поиск; - точность вычислений E; Выходные параметры: - интервал, в котором лежит искомое значение x; - fmin -минимальное значение функции ; - к- количество итераций .
Текст программы.
Function Search(a,b : Real; N : Integer; f : FType;var Res : Byte; E : Real) : Extended; Var Setka : Array of Real; //Содержит сетку узлов h : Real; //Шаг I : Integer; min : Extended; //Значение минимального элемента k : Integer; //Номер минимального элемента Begin If N<=2 Then Begin //Недопустимое число узлов сетки, должно быть больше 2-ух Res:=1;//Код ошибки Result:=0; Exit; End Else Begin Res:=0;//Ошибки нет End; If b<=a Then Begin //Границы заданы неверно Res:=2;//Код ошибки Result:=0; Exit; End;
h:=(b-a)/(N-1); //Вычисления шага
SetLength(Setka,N);
Setka[0]:=a;Setka[N-1]:=b; //Заполнение узлов сетки For I:=1 to N-2 Do Setka[I]:=a+h*I;//Заполнение узлов сетки
min:=f(Setka[0]);k:=0; //Поиск минимального элемента for I:=1 to N-1 do if f(Setka[I])<min Then Begin min:=f(Setka[I]);k:=I;End;
If (k=0) OR (k=N-1) Then Begin Result:=Setka[k];Exit;End; //Минимум находится на границе IterCount:=1; While (Setka[k+1]-Setka[k-1])>E do //Пока требуемая точность не достигнута делать ... Begin a:=Setka[k-1]; //Переход к новым границам b:=Setka[k+1]; h:=(b-a)/(N-1); //Вычисления шага Setka[0]:=a;Setka[N-1]:=b; //Заполнение узлов сетки For I:=1 to N-2 Do Setka[I]:=a+h*I;//Заполнение узлов сетки
min:=f(Setka[0]);k:=0; //Поиск минимального элемента for I:=1 to N-1 do if f(Setka[I])<min Then Begin min:=f(Setka[I]);k:=I;End; Inc(IterCount); End;//Конец цикла Result:=Setka[k]; End;
Результат работы программы. Полученный интервал равен [-0.688;-0.680]. fmin=-0.581 к=2 6.6.2 Метод золотого сечения Метод реализован в процедуре Gold_SechEx. Входные параметры: - минимизируемая функция f типа FType, где FType=Function(x : Real) : Extended ; - интервал неопределенности [ a , b ], на котором будет осуществляться поиск; - точность вычислений E; Выходные параметры: - RES - код ошибки; - интервал, в котором лежит искомое значение x; - fmin -минимальное значение функции; - к- количество итераций.
Текст программы.
Function GoldSechEx(a,b : Real;f : FType;var Res : Byte; E : Real): Real; var c,d : Real; //c,d - Точки деления
Begin If b<=a Then Begin //Границы заданы неверно Res:=1;//Код ошибки Result:=0; Exit; End Else Res:=0; c:=a+0.382*(b-a);//Задание точек деления d:=a+0.618*(b-a);//Задание точек деления If f(c)>f(d) Then //Проверка условий теоремы Begin a:=c; //Вычисление новых границ и точек деления c:=d; d:=c+0.382*(b-c); End Else Begin b:=d; //Вычисление новых границ и точек деления d:=c; c:=a+0.318*(b-a) End; IterCount:=1; While (b-a)>E do Begin If f(c)>f(d) Then //Проверка условий теоремы Begin a:=c; //Вычисление новых границ и точек деления c:=d; d:=c+0.382*(b-c); End Else Begin b:=d; //Вычисление новых границ и точек деления d:=c; c:=a+0.318*(b-a); End; Inc(IterCount); End;//Конец цикла Result:=a+(b-a)/2; End; {Function GoldSechEx;}
Результат работы программы. Полученный интервал равен [-0.683;-0.682] fmin=-0.581 К=22
6.6.3 Метод Ньютона Метод реализован в процедуре Search. Входные параметры: - a,b - границы поиска минимума; - f – функция, которую нужно минимизировать; - df и ddf – первая и вторая производные соответственно; - E – требуемая точность; - X – на входе хранит начальное приближение, на выходе возвращает точку минимума. Выходные параметры: - Res – возвращает код ошибки или ноль, если ошибок не было; - X -точка минимума; - fmin -минимальное значение функции ; - к- количество итераций . Текст программы.
Function Search(a,b : Real; f,df,ddf : FType;var Res : Byte; E : Real;Var X : Real) : Extended; Var I,J : Integer; X1 : Real; Begin IterCount:=0; X1:=X; Repeat X:=X1; X1:=X-df(X)/ddf(X); Inc(IterCount); Until (Abs(X1-X)<E) Or (X<a) Or (X>b); Result:=f(X); End;
Результат работы программы.
Полученная точка минимума х=-0,682 fmin=-0.581 К=5
Варианты заданий
1 f(x)=x2+e-0.35x®min 3 f(x)=x4-1,5arctgx®min 5 f(x)=-4x+e|x-0.2|®min 7 9 f(x)=x4-1,1arctg1,5x®min 11 15 f(x)=xsin x+2cos x®min 17 f(x)= ®min 19 f(x)=x2+2e-0.65x®min 21 f(x)=x4-1,3arctg 1,5x®min 23 f(x)=x2+3x(lnx-1)®min 25 f(x)=x2-2x-2cos x®min 27 f(x)=-3,4x+e|x-0,4|®min 29 f(x)=cos x/x2®min 2 f(x)=x2+3e-0,45x®min 4 f(x)=x2-x+e-x®min 6 f(x)=x-lnx®min 8 10 f(x)=-2,8x+e|x-0,6|®min 12 16 f(x)=-2,2x+e|x-0,8|®min 18 f(x)=(x-4)2+lnx®min 20 f(x)=x4-0,9arctg2,5x®min 22 f(x)=2x2+x+cos2x®min 24 f(x)=x4+e-x®min 26 f(x)=x2+5e-0,05x®min 28 f(x)=x2-2x-e-x®min 30 f(x)=ex+e-2x+2x®min
Популярное: Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (308)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |