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