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

БДЗ3 / БДЗ3 Колесников ИВТ-15М Вариант 4

.docx
Скачиваний:
1
Добавлен:
30.05.2025
Размер:
72.33 Кб
Скачать

a = 6.1, b = 11.8, с = 9.24, x0 = 3, y0 = 4

1) Метод градиентного спуска:

Код:

clc,clear

a = 6.1;

b = 11.8;

c = 9.24;

e = 0.1;

x = 3;

y = 4;

alpha = 1;

fun_value = x.^2 + x*y + 2*y.^2 - a*x - b*y + c;

while true

grad_x = 2*x + y - a;

grad_y = x + 4*y - b;

if (abs(grad_x)<e && abs(grad_y)<e)

break

end

while true

x_new = x - grad_x*alpha;

y_new = y - grad_y*alpha;

fun_new_value = x_new.^2 + x_new*y_new + 2*y_new.^2 - a*x_new - b*y_new + c;

if fun_new_value<fun_value

x = x_new;

y = y_new;

fun_value = fun_new_value;

break

end

alpha = alpha/2;

end

end

fun_value

x

y

Результат:

fun_value = -10.9985

x = 1.8396

y = 2.4836

Координата точки минимума – (1.8396, 2.4836), значение в точке – -10.9985

2) Метод наискорейшего градиентного спуска:

Код:

clc,clear

syms a_s

a = 6.1;

b = 11.8;

c = 9.24;

e = 0.1;

x = 3;

y = 4;

while true

grad_x = 2*x + y - a;

grad_y = x + 4*y - b;

if (abs(grad_x)<e && abs(grad_y)<e)

break

end

epsi = 0.001;

delta = 0.01;

alpha = 0;

x_min = 0;

fun_alpha = (x-a_s*grad_x).^2 + (x-a_s*grad_x)*(y-a_s*grad_y) + 2*(y-a_s*grad_y).^2 - a*(x-a_s*grad_x) - b*(y-a_s*grad_y) + c;

f_min = subs(fun_alpha,(x_min));

while abs(delta) > epsi

x_min = x_min+delta;

if f_min>subs(fun_alpha,(x_min))

alpha = x_min;

f_min = subs(fun_alpha,(x_min));

else

delta = -delta/4;

end

end

x = x - alpha*grad_x;

y = y - alpha*grad_y;

end

fun_value = x.^2 + x*y + 2*y.^2 - a*x - b*y + c

x

y

Результат:

fun_value = -10.9998

x = 1.8157

y = 2.4928

Координата точки минимума – (1.8157, 2.4928), значение в точке – -10.9998

3) Метод Ньютона:

Код:

clc,clear

a = 6.1;

b = 11.8;

c = 9.24;

e = 0.1;

x_y = [3;4];

H = [2 1; 1 4];

while true

grad_x = 2*x_y(1) + x_y(2) - a;

grad_y = x_y(1) + 4*x_y(2) - b;

if (abs(grad_x)<e && abs(grad_y)<e)

break

end

grad = [grad_x;grad_y];

x_y = x_y - inv(H)*grad;

end

x = x_y(1);

y = x_y(2);

fun_value = x.^2 + x*y + 2*y.^2 - a*x - b*y + c

x

y

Результат:

fun_value = -11.0000

x = 1.8000

y = 2.5000

Координата точки минимума – (1.8, 2.5), значение в точке – -11

Соседние файлы в папке БДЗ3