logo
КР_ОПТ_с12

1.2.Визначення екстремумів функцій декілька змінних

Пошук мінімуму функції декілька змінних виконує функції fminsearch і fminunc. Визначати екстремуми цільової функції декілька змінних доцільно в такому порядку.

  1. Побудувати лінії рівня графіка цільової функції (двох змінних).

Лінії рівня цільової функції допомагають визначити початкову точку екстремуму, оскільки вживані алгоритми оптимізації реалізують пошук локальних мінімумів цільової функції.

Для побудови ліній рівня цільової функції можна використовувати такий код:

xs1 = % задати вектор зміни змінній 1;

xs2 = % задати вектор зміни змінній 2;

[x1,x2] = meshgrid(xs1,xs2);

z = % ввести код обчислення цільової функції

[C,h] = contour(x1, x2,z);

grid on

  1. Створити m-файл, що виконує обчислення значень цільової функції двох змінних.

Можна створити файл, наприклад, з ім'ям fun2. Функція fun2 приймає векторний аргумент x і повертає скаляр – значення цільової функції в точці x:

function f = fun2(x)

f = ... % обчислює значення функції в точці x.

При зверненні до цільової функції використовується покажчик на неї

x = fminsearch(@fun2,. . .)

  1. Задати параметри рішення задачі оптимізації:

Значення решти параметрів – за умовчанням. Параметри оптимізації задають командою optimset, варіанти використання цієї команди див. help optimset.

  1. Знайти рішення екстремальної задачі, використовуючи функцію fminsearch.

Можливий варіант програми має вигляд

clear, clc

x0 = % початкова точка (вектор)

options = optimset(. . .);

[x,fval] = fminsearch(@fun,x0,options);

fprintf(. . . ) % виведення значень x і fval

Використовуйте функцію fprintf для форматного виведення значень x і fval. Запишіть значення полий структури output.

  1. Позначити на графіці ліній рівня цільової функції точки екстремумів. Для цього можна використовувати функцію plot і команду hold on

  1. Побудувати графік зміни значення цільовій функції.

Графік треба побудувати залежно від кількості ітерацій до, тобто f(k). Для побудови графіка можна використовувати результати виводу в командне вікно відповідних значень на кожній ітерації. Ці результати одночасно можна записати у файл текстового формату, вставивши в програму команди

diary('имя_файла'), diary on

перед рядком виклику функції fminsearch. Вивід у файл закінчується після виконання в програмі команди diary off.

  1. Знайти рішення тієї ж екстремальної задачі, використовуючи функцію fminunc.

  1. Побудувати графік зміни значення цільовій функції залежно від кількості ітерацій тобто f(k).

  1. Зробити висновки за завданням.