Файл: КПрМА Практикум 8.doc

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

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

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

Добавлен: 15.03.2025

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Практикум 8. Численный поиск экстремумов функций

Цель работыприобрести опыт численного нахождения экстремумов функций нескольких переменных.

Продолжительность работы - 2 часа.

Оборудование – работа выполняется в компьютерном классе с использованием пакета MATLAB.

Порядок выполнения

  1. Знакомство со справочным материалом по математике

  2. Знакомство со справочным материалом по пакету MATLAB.

  3. Изучение примеров.

  4. Самостоятельное выполнение упражнений. При выполнении упражнений в случае сообщения системы об ошибке рекомендуется найти и исправить ошибку самостоятельно; однако, если после многократных попыток сделать это не удается, то можно и нужно проконсультироваться с преподавателем.

P.S. Отчитываться перед преподавателем о выполнении упражнений не нужно. Однако, следует учесть, что их выполнение – залог успешного написания контрольной работы по модулю, поскольку контрольная работа составлена из аналогов упражнений.

Справочный материал по математике

Пусть функция определена на множестве .

Рассмотрим задачу в следующей постановке: требуется найти , при котором функция достигает наименьшего значения на множестве ( для всех ).

Множество обычно задают системой уравнений и/или неравенств и называют допустимым множеством.

Если нас интересует не наименьшее, а наибольшее значение функции на множестве , то переформулируем задачу. Вместо того, чтобы искать наибольшее значение функции на допустимом множестве, будем искать на этом множестве наименьшее значение функции .

Справочный материал по пакету MATLAB

В MatLab есть несколько встроенных функций, которые ищут как безусловные минимумы функции нескольких переменных, так и минимумы при наличии ограничений на значения аргументов. Эти программные функции не являются универсальными, каждая используется для решения лишь определенного класса задач (для определенного вида функций и ограничений). В качестве примера рассмотрим одну из таких встроенных функций – fmincon.

Функция fmincon вычисляет вектор , который является локальным минимумом функции при условии, что переменные удовлетворяют линейным неравенствам и уравнениям следующего вида:


(1)

(2)

(3)

Важное о функции fmincon:

- если функция имеет в области несколько точек минимума, fmincon найдет одну из них;

- когда локальный минимум не находится во внутренних точках допустимой области, fmincon минимизирует в точках, лежащих на границе допустимой области.

Условия применения fmincon:

1) минимизируемая функция должна быть непрерывной функцией аргументов;

2) значения функции должны быть действительными (не комплексными!).

Рассмотрим три формата вызова функции fmincon:

x=fmincon (fun,x0,A,b)

x=fmincon (fun,x0,A,b,C,d)

x=fmincon (fun,x0,A,b,C,d,s,t)

Здесь

fun - минимизируемая функция, представленная как строка (выражение в апострофах), или как имя файла функции, взятое в апострофы, или как дескриптор (указатель) на минимизируемую функцию;

x – точка минимума;

x0 – точка (вектор координат), начиная с которой идет поиск минимума функции;

A – матрица и b – вектор , посредством которых заданы ограничения (1);

C – матрица и d – вектор , посредством которых заданы ограничения (2).

s – вектор и t – вектор , посредством которых заданы ограничения (3).

Если какой-то из перечисленных выше входных параметров не используется, вместо него задается пустой аргумент ([]). Если отсутствуют ограничения сверху или снизу на отдельные компоненты в условиях (3), то соответствующие компоненты векторов s и t задаются как -inf и inf .

Чтобы получить не только координаты точки минимума, но и значение функции в найденной точке, нужно использовать более полное обращение к каждому виду функции fmincon:

[x,fm]=fmincon (…).

Примеры применений MATLAB

Пример 1. Зададимся вопросом, имеет ли функция точки экстремума? При положительном ответе найдем координаты точки экстремума и значение функции в этой точке.

Решение.

Чтобы прояснить ситуацию, построим график и линии уровня функции. С областью построения поэкспериментируем – будем менять ее, ища точку экстремума (в программе представлен конечный вариант).

>> [X,Y]=meshgrid(0:0.05:3,0:0.05:3);

>> f=X1.^2+X2.^2-X1.*X2-X1-X2;

>> surf(X1,X2,f)

[C,h]=contour(X1,X2,f,10);


clabel(C,h)

По рисункам локализуем точку минимума и зададим область ее локализации через систему неравенств типа (3): например, , . На рисунке видно, что в этой области есть только один локальный минимум и этот локальный минимум совпадает с наименьшим значением функции на допустимом множестве. Для нахождения его используем функцию fmincon. В качестве начальной точки x0 возьмем точку с координатами (0,5; 0,5) (эта точка удовлетворяет ограничениям).

s=[0 0];

t=[2 2];

x0=[0.5 0.5];

[x,fm]=fmincon(@(x)x(1).^2+x(2).^2-x(1).*x(2)-x(1)-x(2),x0,[],[],[],[],s,t)

x =

1 1

fm =

-1

Пример 2. Найдем наименьшее значение функции в области , ,

Решение.

По линиям уровня функции видно, что функция не имеет локальных минимумов внутри допустимой области. Следовательно, функция fmincon найдет минимум на границе.

clear

clc

s=[0 0];

t=[inf inf];

A=[1 1];

b=0.75;

x0=[0.25 0.25];

[x,fm]=fmincon(@(x)x(1).^2+x(2).^2-x(1).*x(2)-x(1)-x(2),x0,A,b,[],[],s,t)

x =

0.3750 0.3750

fm =

-0.6094

Упражнения

Упражнение 1

Найдите локальные экстремумы функции в области , . С помощью графиков функций и линий уровня локализуйте точки экстремумов. Для поиска числовых значений экстремумов используйте функцию fmincon.

Упражнение 2

Постройте график функции и линии ее уровня в области , . С помощью графиков функций и линий уровня локализуйте точки экстремумов. Для поиска числовых значений экстремумов используйте функцию fmincon.

Упражнение 3

Внутри четырехугольника с вершинами в точках , , , найдите точку:

а) сумма квадратов расстояний которой от вершин была бы наименьшей (поиск сопроводите графической иллюстрацией, найденную точку отметьте на графике);

б) сумма квадратов расстояний которой от вершин была бы наибольшей (поиск сопроводите графической иллюстрацией, найденную точку отметьте на графике).

Список литературы и информационных ресурсов

  1. Сборник задач по математике для втузов [Текст]: Учеб. пособие для втузов: В 4-х ч. Ч. 2: [Введение в анализ; Дифференциальное и интегральное исчисление функций одной переменной; Дифференциальное исчисление функций нескольких переменных; Кратные интегралы; Дифференциальные уравнения] / Под ред. А.В. Ефимова, А.С. Поспелова. - 5-е изд., перераб. и доп. - М.: Физматлит, 2009.

  2. В.Г.Потемкин "Введение в Matlab" (v 5.3) http://matlab.exponenta.ru

  3. Мещеряков В.В. Задачи по математике с MATLAB&SIMULINK – М.: ДИАЛОГ-МИФИ, 2007

  4. Амос Гилат. MATLAB. Теория и практика. 5-е изд./ Пер. с англ. Смоленцев Н.К. – М.:ДМК Пресс, 2016.

  5. http://matlab.exponenta.ru


5