Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР2 / lab2_sopr_gradient

.m
Скачиваний:
14
Добавлен:
14.12.2022
Размер:
1.06 Кб
Скачать
clear
clc

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;

beta = 0;
p = [0, 0];

while (sqrt(dyx1(x)^2+dyx2(x)^2) > eps)
p = -1*[dyx1(x), dyx2(x)] + beta*p;
f = @(a)y(x+a*p);
tmp = lab1_porazryad(f, 0, 10^(-7));
alpha = tmp(1);

beta_znam = dyx1(x)^2+dyx2(x)^2;
x = x+alpha*p;
beta_chisl = dyx1(x)^2+dyx2(x)^2;
beta = beta_chisl/beta_znam;

if(mod(iter_counter+1, 2) == 0) %restart
beta = 0;
end

value_counter = value_counter + 4 + 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