Добавил:
unclefalkon
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ЛР2 / lab2_neuton
.m clear
clc
syms x1 x2
y = 45*x1^2 - 88*x1*x2 + 45*x2^2 + 102*x1 + 268*x2 - 21;
dyx1 = diff(y, x1);
dyx2 = diff(y, x2);
H = hessian(y, [x1, x2]);
H_inv = inv(H);
eps=0.00001;
x=[1, -1];
iter_counter = 0;
value_counter = 0;
while (sqrt(subs(dyx1, {x1, x2}, x)^2+subs(dyx2, {x1, x2}, x)^2) > eps)
x = x - (subs(H_inv, {x1,x2}, x) * [subs(dyx1, {x1, x2}, x), subs(dyx2, {x1, x2}, x)]')';
value_counter = value_counter + 2;
iter_counter = iter_counter + 1;
end
x_min = x;
f_min = subs(y, {x1, x2}, 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
syms x1 x2
y = 45*x1^2 - 88*x1*x2 + 45*x2^2 + 102*x1 + 268*x2 - 21;
dyx1 = diff(y, x1);
dyx2 = diff(y, x2);
H = hessian(y, [x1, x2]);
H_inv = inv(H);
eps=0.00001;
x=[1, -1];
iter_counter = 0;
value_counter = 0;
while (sqrt(subs(dyx1, {x1, x2}, x)^2+subs(dyx2, {x1, x2}, x)^2) > eps)
x = x - (subs(H_inv, {x1,x2}, x) * [subs(dyx1, {x1, x2}, x), subs(dyx2, {x1, x2}, x)]')';
value_counter = value_counter + 2;
iter_counter = iter_counter + 1;
end
x_min = x;
f_min = subs(y, {x1, x2}, 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