Московский государственный технический университет им. Н.Э. Баумана
Калужский филиал
Отчет по лабораторной работе №3
«Поиск минимума функции многих переменных
при наличии ограничений»
Вариант 2
Выполнил: студент группы ЭВМ-71
Салтыков В.С.
Проверил: Корнюшин Ю.П.
Калуга, 2012
1. Условие варианта
№ варианта |
f(x) |
a |
b |
c |
d |
2 |
ограничения: , и |
2,7 |
1,2 |
0,4 |
|
2. Листинг программы
a = 2.7; b = 1.2; c = 0.4;
e = 0.000001; % ТОЧНОСТЬ
x11 = 6; x12 = 7; % НАЧАЛЬНЫЕ ЗНАЧЕНИЯ
h1 = 0.1; h2 = 0.1; % ШАГ
while ((h1 > e)&&(h2 > e))
f1 = fun(a, b, c, x11, x12);
f2 = fun(a, b, c, x11+h1, x12);
if(f2 >= f1)
if((x11-h1 > 1)&&(x11-h1+x12 > 4))
f2 = fun(a, b, c, x11-h1, x12);
else
f2 = fun(a, b, c, x11, x12);
end
if (f2 >= f1)
if((x12+h2 > 2)&&(x11+h2+x12 > 4))
f2 = fun(a, b, c, x11, x12+h2);
else
f2 = fun(a, b, c, x11, x12);
end
if(f2 >= f1)
if((x12-h2 > 2)&&(x11-h2+x12 > 4))
f2 = fun(a, b, c, x11, x12-h2);
else
f2 = fun(a, b, c, x11, x12);
end
if (f2 >= f1)
x21 = x11;
x22 = x12;
else
x21 = x11;
x22 = x12 - h2;
end
else
x21 = x11;
x22 = x12 + h2;
end
else
x21 = x11 - h1;
x22 = x12;
end
else
x21 = x11 + h1;
x22 = x12;
end
if((x21 ~= x11)&&(x22 ~= x12))
if((x12 > 2)&&(x11+x12 > 4))
p1 = x11 + 2*(x21-x11);
p2 = x12 + 2*(x22-x12);
else
p1 = x11;
p2 = x12;
end
fp = fun(p1, p2);
f3 = fun(x21, x22);
if(fp < f3)
x11 = p1;
x12 = p2;
end
else
x11 = x21;
x12 = x22;
end
h1 = h1/1.01;
h2 = h2/1.01;
end
xmin1 = x11 % МИНИМАЛЬНОЕ ЗНАЧЕНИЕ
xmin2 = x12 % МИНИМЛЬНОЕ ЗНАЧЕНИЕ
fmin = (a*xmin1+b*xmin2+xmin2*xmin1^2)^2 + cos((xmin2+c*xmin1)^2) % МИНИМУМ ФУНКЦИИ
% ВЫЧИСЛЕНИЕ ФУНКЦИИ
function f = fun(a, b, c, x1, x2)
f = (a*x1+b*x2+x2*x1^2)^2 + cos((x2+c*x1)^2);
3. Результаты вычислений
xmin1 = 1.0000
xmin2 = 3.0000
fmin = 87.0250
4. Структурная схема алгоритма