Файл: Исследование операций и методы оптимизации км1.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 68

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Исследование операций и методы оптимизации КМ-1Выполнил студентГруппы: ИЭ-62-21 ФИО: Купчик Ю. Г.1.Задание.Составить программы реализующие методы поиска и найти точку минимума функции x^2+e^x на отрезке [-1;0] с количеством итераций n=18Сравнить заданные в варианте методы по получаемой длине локализации.1.1 Метод перебора на равномерной сетке.f = @(x) x^2 + exp(x);a = -1; b = 0; n = 18;x_vals = linspace(a, b, n+1);min_value = inf;for i = 1:length(x_vals)curr_value = f(x_vals(i));if curr_value < min_valuemin_value = curr_value;x_min = x_vals(i);endenddisp(['Минимальное значение функции: ', num2str(min_value)]);disp(['Точка минимума: ', num2str(x_min)]);1.2 Метод дихотомии.f = @(x) x^2 + exp(x);a = -1; b = 0; n = 18;for k = 1:nx_k = (a + b - 0.1) / 2;y_k = (a + b + 0.1) / 2;if f(x_k) < f(y_k)b = y_k;elsea = x_k;endendx_min = (a + b) / 2;min_value = f(x_min);disp(['Минимальное значение функции: ', num2str(min_value)]);disp(['Точка минимума: ', num2str(x_min)]);1.3 Метод золотого сечения.f = @(x) x^2 + exp(x);a = -1; b = 0; n = 18;phi = (1 + sqrt(5)) / 2;x_k = b - (b - a) / phi;y_k = a + (b - a) / phi;for k = 1:nif f(x_k) < f(y_k)b = y_k;y_k = x_k;x_k = b - (b - a) / phi;elsea = x_k;x_k = y_k;y_k = a + (b - a) / phi;endendx_min = (a + b) / 2;min_value = f(x_min);disp(['Минимальное значение функции: ', num2str(min_value)]);disp(['Точка минимума: ', num2str(x_min)]);1.4 Метод Фибоначчи.f = @(x) x^2 + exp(x);a = -1; b = 0; n = 18;F = zeros(1, n + 1);F(1) = 1;F(2) = 1;for i = 3:n+1F(i) = F(i-1) + F(i-2);endx_k = zeros(1, n+1);y_k = zeros(1, n+1);x_k(1) = a + (b - a) * F(n-1) / F(n+1);y_k(1) = a + b - x_k(1);for k = 2:nif f(x_k(k-1)) > f(y_k(k-1))a = x_k(k-1);x_k(k) = y_k(k-1);y_k(k) = a + b - x_k(k);elseb = y_k(k-1);y_k(k) = x_k(k-1);x_k(k) = a + b - y_k(k);endendx_min = (a + b) / 2;min_value = f(x_min);disp(['Минимальное значение функции: ', num2str(min_value)]);disp(['Точка минимума: ', num2str(x_min)]);1.5 Метод Больцано.f = @(x) x^2 + exp(x);a = -1; b = 0; n = 18;for k = 1:nx_k = a + (b - a) / 3;y_k = b - (b - a) / 3;if f(x_k) < f(y_k)b = y_k;elsea = x_k;endendx_min = (a + b) / 2;min_value = f(x_min);disp(['Минимальное значение функции: ', num2str(min_value)]);disp(['Точка минимума: ', num2str(x_min)]);1.6 Метод касательных.f = @(x) x^2 + exp(x);df = @(x) 2*x + exp(x);x0 = -0.5;n = 18;x_k = x0;for k = 1:nx_k1 = x_k - f(x_k) / df(x_k);x_k = x_k1;endmin_value = f(x_k);disp(['Минимальное значение функции: ', num2str(min_value)]);disp(['Точка минимума: ', num2str(x_k)]);1.7 Метод парабол.f = @(x) x^2 + exp(x);a = -1;b = 0;n = 18;tol = 1e-6;x1 = a;x2 = (a + b) / 2;x3 = b;f1 = f(x1);f2 = f(x2);f3 = f(x3);for i = 1:na0 = f1;a1 = (f2 - f1) / (x2 - x1);a2 = ((f3 - f1) / (x3 - x1) - (f2 - f1) / (x2 - x1)) / (x3 - x2);
x_min = 0.5 * (x1 + x2 - a1 / a2);f_min = f(x_min);if x_min < x2if f_min < f2x3 = x2;f3 = f2;x2 = x_min;f2 = f_min;elsex1 = x_min;f1 = f_min;endelseif f_min < f2x1 = x2;f1 = f2;x2 = x_min;f2 = f_min;elsex3 = x_min;f3 = f_min;endend% Проверка точностиif abs(x3 - x1) < tolbreak;endenddisp(['Минимальное значение функции: ', num2str(f_min)]);disp(['Точка минимума: ', num2str(x_min)]);2. Таблица результатов.

Название метода

Точка минимума

Перебор на равномерной сетке

-0.33333

Метод дихотомии

-0.35184

Метод золотого сечения

-0.35173

Метод Фибоначчи

-0.35195

Метод Больцано

-0.3516

Метод касательных

-1.0063

Метод парабол

-0.35173
2.1 Вывод.Наиболее точные результаты дали методы касательных и метод Больцано с очень маленькой длиной локализации, а метод золотого сечения и перебора на равномерной сетке дали наименее точные результаты.