clear all; % Введення початкових даних для пошуку екстремуму DlgInputTitle = 'ТССА ЛР №1 Метод прямого перебору - модифікований'; PromptDlgInput = {'Параметр системи X1_MIN X1_MAX', 'Параметр системи X2_MIN X2_MAX', ... 'Цільова функція коефіцієнти поліному A0...A5', ... 'Тип екстремуму min/max', 'Початковий крок зміни значень X1', 'Початковий крок зміни значень X2', ... 'Максимальне значення N'}; % Додали поле для введення максимального значення N DefDlgInput = {'0 1', '0 1', '1 1 0 0 0 0', 'min', '0.01', '0.01', '5'}; % Встановили значення за замовчуванням для максимального значення N LineNo = 1; AddOpts.Resize = 'on'; AddOpts.WindowStyle = 'normal'; AddOpts.Interpreter = 'none'; % Діалогове вікно введення початкових даних AnswerDlg = inputdlg(PromptDlgInput, DlgInputTitle, LineNo, DefDlgInput, AddOpts); % Зчитування початкових даних X1 = str2num(AnswerDlg{1}); X1_min = X1(1); X1_max = X1(2); % Параметр системи X1_MIN X1_MAX X2 = str2num(AnswerDlg{2}); X2_min = X2(1); X2_max = X2(2); % Параметр системи X2_MIN X2_MAX % Цільова функція коефіцієнти поліному A0...A5 A0_5 = str2num(AnswerDlg{3}); A0 = A0_5(1); A1 = A0_5(2); A2 = A0_5(3); A3 = A0_5(4); A4 = A0_5(5); A5 = A0_5(6); TypeExtr = AnswerDlg{4}; % Тип екстремуму min/max Delta_X1 = str2num(AnswerDlg{5}); % Початковий крок зміни значень X1 Delta_X2 = str2num(AnswerDlg{6}); % Початковий крок зміни значень X2 % Додатковий параметр - максимальне значення N max_N = str2num(AnswerDlg{7}); % Максимальне значення N % Значення N, які потрібно перевірити N_values = 1:max_N; % Масиви для збереження часу та витрат на пошук times = zeros(size(N_values)); costs = zeros(size(N_values)); % Проведення пошуку та вимірювання витрат для кожного значення N for i = 1:numel(N_values) N = N_values(i); [solution, time_taken] = search_solution(N); times(i) = time_taken; % Витрати на пошук можуть бути залежні від часу, кількості ітерацій і т. д. costs(i) = time_taken; % Поки що припустимо, що витрати - це час end % Побудова графіка залежності витрат на пошук від величини plot(N_values, costs, '-o'); xlabel('N'); ylabel('Витрати на пошук'); title('Залежність витрат на пошук від значення N'); % Знаходження оптимального значення N та відповідних витрат на пошук [min_cost, idx_optimal] = min(costs); optimal_N = N_values(idx_optimal); fprintf('Оптимальне значення N: %d\n', optimal_N); fprintf('Витрати на пошук при оптимальному значенні N: %f\n', min_cost); % Введення додаткових даних для побудови графіків [X1_grid, X2_grid] = meshgrid([X1_min:Delta_X1:X1_max], [X2_min:Delta_X2:X2_max]); Q_sys = A0 + A1.*X1_grid + A2.*X2_grid + A3.*X1_grid.*X2_grid + A4.*X1_grid.^2 + A5.*X2_grid.^2; % Виведення графіків % 3-D графік figure; Q_sys_graf = mesh(X1_grid, X2_grid, Q_sys); title('Цільова функція складної системи'); xlabel('Параметр системи X1'); ylabel('Параметр системи X2'); zlabel('Значення цільової функції Q sys'); % Контурні лінії на графіку figure; contour(X1_grid, X2_grid, Q_sys, round((X1_max - X1_min) / Delta_X1)); colorbar('vert'); title('Значення цільової функції складної системи Q sys'); xlabel('Параметр системи X1'); ylabel('Параметр системи X2'); % Функція для пошуку рішення для заданого значення N function [solution, time_taken] = search_solution(N) % Ваш код для пошуку рішення при значенні N % Приклад: solution = 'Результат пошуку'; % Повернути значення, якщо потрібно tic; % Початок відліку часу % Ваш код пошуку рішення time_taken = toc; % Кінець відліку часу end