Добавил:
unclefalkon
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ЛР2 / lab2_fast_spusk
.m clear
clc
close all;
y = @(x) 45*x(1)^2 - 88*x(1)*x(2) + 45*x(2)^2 + 102*x(1) + 268*x(2) - 21;
dyx1 = @(x) 90*x(1) - 88*x(2) + 102;
dyx2 = @(x) 90*x(2) - 88*x(1) + 268;
eps = 0.00001;
x = [1, -1];
iter_counter = 0;
value_counter = 0;
while (sqrt(dyx1(x)^2+dyx2(x)^2)>eps) %proverka normbI
f = @(a)y(x-a*[dyx1(x), dyx2(x)]);
tmp = lab1_porazryad(f, 0, 10^(-7));
alpha = tmp(1);
x = x-alpha*[dyx1(x), dyx2(x)];
value_counter = value_counter + 2 + tmp(2);
iter_counter = iter_counter + 1;
end
x_min = x;
f_min = y(x);
str = sprintf('Минимум функции %3f, в точке x1 = %3f, x2 = %3f', f_min, x_min(1), x_min(2));
disp(str);
str = sprintf('Количество вычислений - %d. Количество итераций метода - %d', value_counter, iter_counter);
disp(str);
clc
close all;
y = @(x) 45*x(1)^2 - 88*x(1)*x(2) + 45*x(2)^2 + 102*x(1) + 268*x(2) - 21;
dyx1 = @(x) 90*x(1) - 88*x(2) + 102;
dyx2 = @(x) 90*x(2) - 88*x(1) + 268;
eps = 0.00001;
x = [1, -1];
iter_counter = 0;
value_counter = 0;
while (sqrt(dyx1(x)^2+dyx2(x)^2)>eps) %proverka normbI
f = @(a)y(x-a*[dyx1(x), dyx2(x)]);
tmp = lab1_porazryad(f, 0, 10^(-7));
alpha = tmp(1);
x = x-alpha*[dyx1(x), dyx2(x)];
value_counter = value_counter + 2 + tmp(2);
iter_counter = iter_counter + 1;
end
x_min = x;
f_min = y(x);
str = sprintf('Минимум функции %3f, в точке x1 = %3f, x2 = %3f', f_min, x_min(1), x_min(2));
disp(str);
str = sprintf('Количество вычислений - %d. Количество итераций метода - %d', value_counter, iter_counter);
disp(str);
Соседние файлы в папке ЛР2