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

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

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

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

Добавлен: 15.03.2025

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

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

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

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

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

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

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

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

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

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

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

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

это не удается, то можно и нужно проконсультироваться с преподавателем.

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

 

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

 

 

 

Пусть функция y = f (x1, x2 ,..., xn ) определена на множестве X .

 

 

 

Рассмотрим задачу в следующей постановке: требуется найти

x = ( x* , x* ,..., x* )

,

 

 

1 2

n

 

при котором

функция f достигает наименьшего значения на

множестве

X

 

( f (x ) f (x) для всех x X ).

 

 

 

Множество

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

допустимым множеством.

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

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

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

Функция fmincon вычисляет вектор x = ( x1* , x2* ,..., xn* ) , который является локальным минимумом функции f ( x1, x2 ,..., xn ) при условии, что переменные (x1, x2 ,..., xn ) удовлетворяют линейным неравенствам и уравнениям следующего вида:

1


(1)

a11x1 + a12 x2 +... + a1n xn b1

am1x1 + am2 x2 + ... + amn xn bm

(2)

c11x1 + c12 x2 + ... + c1n xn = d1

ck1x1 + ck 2 x2 + ... + ckn xn = dk

(3)

s1 x1 t1

sn xn tn

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

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

-когда локальный минимум не находится во внутренних точках допустимой

области, fmincon минимизирует f ( x1, x2 ,..., xn ) в точках, лежащих на границе

допустимой области.

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

1) минимизируемая функция f ( x1, x2 ,..., xn ) должна быть непрерывной функцией аргументов;

2)значения функции f ( x1, x2 ,..., xn ) должны быть действительными (не

комплексными!).

Рассмотрим три формата вызова функции 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 – точка (вектор координат), начиная с которой идет поиск минимума функции;

 

a11

a12

...

a1n

 

 

 

 

 

 

 

A – матрица

... ...

...

...

 

и b – вектор

(b , b ,..., b ) , посредством которых

 

 

 

 

 

 

 

 

1

2

m

 

 

 

am1

...

 

 

 

 

 

 

 

 

 

 

am1

amn

 

 

 

 

 

 

заданы ограничения (1);

 

 

 

 

 

 

 

 

 

 

 

c11

c12

...

c1n

 

 

 

 

 

 

 

 

C – матрица

... ...

...

...

 

 

и d – вектор

(d , d

 

,..., d

 

) , посредством которых

 

 

 

 

 

 

 

 

1

2

 

k

 

 

c

c

...

c

 

 

 

 

 

 

 

 

 

k1

k1

 

kn

 

 

 

 

 

 

 

 

заданы ограничения (2).

2


s – вектор (s1, s2 ,..., sk ) и t – вектор (t1, t2 ,..., tk ) , посредством которых заданы

ограничения (3).

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

векторов s и t задаются как -inf () и inf (+ ) .

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

[x,fm]=fmincon (…).

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

Пример 1. Зададимся вопросом, имеет ли функция f ( x1, x2 ) = x12 + x22 x1x2 x1 x2

точки экстремума? При положительном ответе найдем координаты точки экстремума и

значение функции в этой точке.

Решение.

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

>>[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)

6

4

2

0

-2 3

2

3

 

 

2

1

1

 

0 0

3


3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.1818

 

1.5455

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

.0909

 

2

 

 

 

 

 

1818

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

0.

 

 

 

 

 

.4545

 

.5455

 

 

 

 

 

 

 

 

 

 

90909

 

 

 

 

 

2.5

3

 

 

 

1

 

 

 

1

 

 

.8182

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

.90909

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0.

 

5455

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.1818

 

 

 

27273

 

 

 

 

 

 

2

 

 

 

.27273

 

 

 

 

 

 

 

2

.5455

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.36364

 

-

 

 

 

 

 

 

 

.

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

90909

 

-0

 

 

 

90909

 

 

 

 

0

 

 

 

 

 

36364

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.27273

 

 

 

 

.

 

 

 

1.5

 

 

 

 

0

 

 

 

 

 

 

27273

 

 

 

1818

 

 

 

 

 

 

 

 

 

0

 

 

36364

 

 

 

 

 

. 5455

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

2

 

1

 

 

 

 

 

 

0

 

1

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

.8182

 

 

 

 

 

 

 

 

 

.90909

 

 

 

0.5

 

 

 

 

 

 

.36364

 

 

2

 

 

 

 

 

 

 

 

 

.4545

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

-0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

.27273

 

.1818

 

 

.0909

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

0

.

2

 

 

 

 

 

 

 

 

 

 

 

5455

 

 

 

 

 

 

 

 

 

 

-0.36364

 

 

1

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

0.5

1

1.5

2

 

2.5

 

 

3

По рисункам локализуем точку минимума и зададим область ее локализации через систему неравенств типа (3): например, 0 x1 2 , 0 x2 2 . На рисунке видно, что в

этой области есть только один локальный минимум и этот локальный минимум совпадает с наименьшим значением функции на допустимом множестве. Для нахождения его используем функцию 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. Найдем наименьшее значение функции f ( x1, x2 ) = x12 + x22 x1x2 x1 x2

в области x1 + x2 0, 75 , x1 0 , x2 0

Решение.

По линиям уровня функции видно, что функция не имеет локальных минимумов внутри допустимой области. Следовательно, функция 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

4


Упражнения

 

Упражнение 1

 

Найдите локальные экстремумы функции z = (x +1)ex2 y2 +2,1y

в области x [5;5] ,

y [5;5]. С помощью графиков функций и линий уровня

локализуйте точки

экстремумов. Для поиска числовых значений экстремумов используйте функцию

fmincon.

Упражнение 2

Постройте график функции

z =1,9

1,3

x2

+x2

sin(0,6x ) cos x

и линии ее уровня в

 

1

2

 

 

 

 

 

 

1

2

области x [6;6],

y [6;6].

С помощью

графиков

функций и линий уровня

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

Упражнение 3

Внутри четырехугольника с вершинами в точках A1(5, 2) , A2 (2,5) , A3 (6, 4) , A4 (14, 6) найдите точку:

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

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

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

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