close

Вход

Забыли?

вход по аккаунту

?

Лаба 2. Отчет

код для вставкиСкачать
Московский государственный технический университет им. Н.Э. Баумана
Калужский филиал
Отчет по лабораторной работе №2
«Поиск минимума функции многих переменных»
Вариант 2
Выполнил: студент группы ЭВМ-71
Салтыков В.С.
Проверил: Корнюшин Ю.П.
Калуга, 2012
1. Условие варианта
f(x)
№ варианта
a
f  x1, x2   ax1  bx2  e
(cx12 dx22 )
2
2,0
b
c
-1,3 0,04
2. Структурная схема алгоритма
Начало
e, a; b; c; d;
x11; x12;
h1; h2;
f(x1, x2)
f1 := f(x11, x12)
f2 := f(x11+h1, x12)
нет
f2 >= f1
да
x21 = x11 + h1
x22 = x12
f2 = f(x11-h1, x12)
f2 >= f1
нет
да
x21 = x11 - h1
x22 = x12
f2 = f(x11, x12+h2)
f2 >= f1
нет
да
x21 = x11
x22 = x12 + h2
f2 = f(x11, x12-h2)
f2 >= f1
нет
да
нет
x21 = x11
x22 = x12 - h2
нет
(x21<>x11)and(x22<>x12)
x11 = x21
x12 = x22
p1
p2
fp
f3
да
=
=
=
=
x11 + 2*(x21-x11)
x12 + 2*(x22-x12)
f(p1, p2)
f(x21, x22)
fp < f3
да
x11 = p1
x12 = p2
нет
h1 = h1/1.01
h2 = h2/1.01
(h1 > e)and(h2 > e)
да
xmin1
xmin2
fmin
Конец
x21 = x11
x22 = x12
d
1,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
Документ
Категория
Программирование, Базы данных
Просмотров
4
Размер файла
248 Кб
Теги
лаба, отчет
1/--страниц
Пожаловаться на содержимое документа