Автор работы: Пользователь скрыл имя, 11 Ноября 2014 в 22:20, контрольная работа
В наиболее общем смысле теория оптимизации представляет собой совокупность фундаментальных математических результатов и численных методов, ориентированных на нахождение и идентификацию наилучших вариантов из множества альтернатив и позволяющих избежать полного перебора и оценивания возможных вариантов. Процесс оптимизации лежит в основе всей инженерной деятельности, поскольку классические функции инженера заключаются в том, чтобы, с одной стороны, проектировать новые, более эффективные, менее дорогостоящие технические системы и, с другой стороны, разрабатывать методы повышения качества функционирования существующих систем.
Введение
Задание
1. Анализ методов определения минимального, максимального значения функции без ограничения
1.1 Методы прямого поиска
1.2 Градиентные методы
1.3 Методы второго порядка
2. Нахождение экстремума функции без ограничения
2.1 Метод наискорейшего спуска
2.2 Метод сопряженных направлений
3. Анализ методов определения минимального, максимального значения функции при наличии ограничений
3.1 Методы возможных направлений
3.2 Методы проекции градиента
3.3 Методы линеаризации
3.4 Методы штрафов
4. Нахождение экстремума функции при наличии ограничения
4.1 Метод симплексных процедур
5. Синтез оптимальной по быстродействию системы с помощью принципа максимума Понтрягина
Звулючение
Список литературы
Приложение
fun(x,y);
printf ("x=%2.3f\ny=%2.3f\nA%d(%2.3f;
if ((n1(x,y)>=0)&(n2(x,y)<=0)&(
{printf("tochka udovl nerav f(A%d)=%2.3f\n",h,fun(x,y));
if (fun(x,y)>max) max=fun(x,y),k=x,t=y,m=h;
else max=max; }
else
printf("tochka ne udovletv neravenstvu\n");
printf("----------------------
na=0.0;nb=1.0;nc=0.0;h=h+1;
printf("f4(x,y,z)=2x^2+2xy+y^
x=((2*b*nc/nb)-2*d-2*c*nc*na+(
y=(-nc/nb)-(na/nb)*x;
fun(x,y);
printf ("x=%2.3f\ny=%2.3f\nA%d(%2.3f;
if ((n1(x,y)>=0)&(n2(x,y)<=0)&(
{printf("tochka udovl nerav f(A%d)=%2.3f\n",h,fun(x,y));
if (fun(x,y)>max) max=fun(x,y),k=x,t=y,m=h;
else max=max; }
else
printf("tochka ne udovletv neravenstvu\n\n");
printf("----------------------
printf("Nahodim znacheniya funkzii v vershinah figuri\n");
printf("----------------------
x=0.0;y=2;h=h+1;
printf ("A%d(%2.3f;%2.3f)\nf%d(A%d)=%
printf ("---------------\n");
if (fun(x,y)>max) max=fun(x,y),k=x,t=y,m=h;
else max=max;
x=6.0;y=2;h=h+1;
printf ("A%d(%2.3f;%2.3f)\nf%d(A%d)=%
printf ("---------------\n");
if (fun(x,y)>max) max=fun(x,y),k=x,t=y,m=h;
else max=max;
x=4.0;y=0.0;h=h+1;
printf ("A%d(%2.3f;%2.3f)\nf%d(A%d)=%
printf ("---------------\n");
if (fun(x,y)>max) max=fun(x,y),k=x,t=y,m=h;
else max=max;
x=1.33;y=0;h=h+1;
printf ("A%d(%2.3f;%2.3f)\nf%d(A%d)=%
printf ("----------------------------
if (fun(x,y)>max) max=fun(x,y),k=x,t=y,m=h;
else max=max;
printf("Maximalnoe znach funkzii f%d=%2.3f\nA%d(%2.3f;%2.3f)-
getch ();}
Результат работы программы
-----METOD SIMPLEX PROCEDURE-----
f(x,y)=2x^2+2xy+y^2+2x+2y+0.5
1)1.5x+y-2>=0;
2)y-2<=0;
3)x-y<=4;
4)y>=0
------------------------------
f1(x,y,z)=2x^2+2xy+y^2+2x+2y+
x=1.200
y=0.200
A1(1.200;0.200)
tochka udovl nerav f(A1)=6.700
------------------------------
f2(x,y,z)=2x^2+2xy+y^2+2x+2y+
x=-1.500
y=2.000
A2(-1.500;2.000)
tochka ne udovletv neravenstvu
------------------------------
f3(x,y,z)=2x^2+2xy+y^2+2x+2y+
x=1.200
y=-2.800
A3(1.200;-2.800)
tochka ne udovletv neravenstvu
------------------------------
f4(x,y,z)=2x^2+2xy+y^2+2x+2y+
x=-0.500
y=0.000
A4(-0.500;0.000)
tochka ne udovletv neravenstvu
------------------------------
Nahodim znacheniya funkzii v vershinah figuri
------------------------------
A5(0.000;2.000)
f5(A5)=8.500
-------------------
A6(6.000;2.000)
f6(A6)=116.500
-------------------
A7(4.000;0.000)
f7(A7)=40.500
-------------------
A8(1.330;0.000)
f8(A8)=6.698
------------------------------
Maximalnoe znach funkzii f6=116.500
A6(6.000;2.000)-tochka maximuma