Файл: Mathematica для математиков. Часть Реализация основных понятий математического анализа.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 287
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
122
????????????????????????????????????????????????????????????????????????[????, ????, ????]
−
ⅈ
3
Полученное число это коэффициент при
t
i
e
3
в разложении Фурье функции
t
t
f
на интервале
,
. Тогда, в соответствии с (4), он равен
????/(????????)????????????????????????????????????[???? ????????????[−????????????], {????, −????, ????}]
−
ⅈ
3
3.6
Поиск экстремальных значений.
Многие задачи – как из области математики, так и из других областей науки и техники – приводят к задаче о нахождении наибольшего или наименьшего значения некоторой функции. В системе Mathematica имеется большой набор функций, предназначенных для решения таких задач.
3
.6.1 Экстремумы дискретных наборов
Для поиска минимальных или максимальных значений среди чисел, входящих в список, используются функции Min и Max.
В формате Min[x
1
,x
2
,...] или Max[x
1
,x
2
,...] функция возвращает минимальный/максимальный элемент из набора x
1
,x
2
,....
????????????[????, ????, ????????]
2
Функции работают как с приближенными, так и точными числами.
????????????[????, ????. ????, ????????]
14
В формате Min[{x
1
,x
2
,...},{y
1
,y
2
,...},...] функция возвращает минимальный элемент из всех списков. Аналогичный формат есть у функции Max.
????????????[{????, ????, ????, ????}]
1
????????????[{????, ????, ????}, {????, ????}, ????]
2
???? = {{−????, ????, ????, ????}, {????, ????, ????, ????}, {−????, −????, −????, ????}};
????????????[????]
-6
Но эти функции можно использовать и для поиска минимума/максимума каждой строки или каждого столбца матрицы.
????????????/@????
{-2,0,-6}
????????????/@????????????????????????????????????[????]
{-6,-2,-4,0}
123
Напомним, что операция /@ является инфиксной формой функции Map, которая в формате Map[f,expr] применяет функцию f к каждому элементу первого уровня в выражении expr. В нашем примере функция Min проносится внутрь внешнего списка и применяется к каждому внутреннему списку матрицы M.
Функции можно использовать с символьными переменными
????????????[????, ????, ????????????[????, ????]]
Min[x,y,z] и выполнять алгебраические преобразования
????????????????????????????????????????????????[????????????[????, ????] − ????????????[???? − ????]]
???? ???? < ????
????
True
????????????????????????????????????????????????[????????????[????, ????] − ????????????[???? − ????] − ????????????[????, ????]]
0
Функции Min и Max можно дифференцировать
????[????????????[????, ????
????
], ????]
1
???? < 0 2????
0 < ???? < 1 1
???? > 1
Indeterminate
True
Функции Min и Max можно интегрировать.
????????????????????????????????????[????????????[????????????[????], ????????????[????]], {????, ????, ????????????}]
2 2
????????????????[{????????????[????????????[????], ????????????[????]], ????????????[????], ????????????[????]}, {????, ????, ????????????},
???????????????????????????????????? → ????????????, ???????????????????????????????????? → {{????????????????????, ????????????????????????????????????[????. ????????????]}, ????????????????, ????????????????????}]
Функции Min и Max можно использовать в граничных значениях итераторов.
????????????????????[???? + ???? + ????, {????, ????}, {????, ????}, {????, ????????????[????, ????], ????}]
{{{3,4,5}, {5,6}, {7}}, {{5,6}, {6,7}, {8}}}
Их можно использовать при построении графических объектов.
????????????????????????????????????????[????????????[????, ????] < 0, {????, −????, ????}, {????, −????, ????}](*следующий рисунок слева *)
????????????????????????????????????????????[????????????[{????????????[????], ????????????[????]}] == ????, {????, −????. ????, ????. ????}, {????, −????. ????, ????. ????},
???????????????????????????????????????????????? → {????????????????????, ????????????????????????????????????[????. ????????]}](*следующий рисунок справа *)
????????????????????????????????????????????????[????????????[????, −????, ????] < −1,
{????, −????, ????}, {????, −????, ????}, {????, −????, ????}](* следующий рисунок слева *)
????????????????????????????????????????????????[????????????[????
????
+ ????
????
, ????
????
] < 1, {????, −????. ????, ????. ????}, {????, −????. ????, ????. ????},
124
{????, −????. ????, ????. ????}, ???????????????????????????????????????? → ????????](* следующий рисунок в центре *)
????????????????????????????????????????????????????[????????????[{????????????[????], ????????????[????], ????????????[????]}] == ????,
{????, −????. ????, ????. ????}, {????, −????. ????, ????. ????}, {????, −????. ????, ????. ????}](*следующий рисунок справа *)
Близкими по смыслу являются функции RankedMin и RankedMax. Они могут вычислить n-й наименьший или наибольший элемент списка.
????????????????????????????????????[{????, ????????, ????, ????????, ????, ????????, ????????, ????????}, ????] (* третий наименьший *)
8
????????????????????????????????????[{????, ????, ⅇ}, ????](* второй наибольший *)
ⅇ
????????????????????????????????????[{???? − ????, ????, ???? + ????}, ????]//????????????????????????????????????????????????????????????
1 − ???? ???? ≥
1 2
????
True
Это то же, что и
????????????[{???? − ????, ????, ???? + ????}, ????]//????????????????????????????????????????????????????????????
Здесь функция PiecewiseExpand преобразует вложенные кусочные
(piecewise) функции в «одноуровневую» кусочную функцию.
Функции RankedMin и RankedMax также можно использовать при построении областей.
????????????????????????????????????????????????[????????????????????????????????????[{????, ????, ????}, ????] < −1,
{????, −????, ????}, {????, −????, ????}, {????, −????, ????}, ???????????????????????????????????????? → ????????, ???????????????? → ????????????????]
1 ... 9 10 11 12 13 14 15 16 ... 19
3
.6.2 Экстремумы функций
В системе Mathematica для поиска минимума или максимума функции, заданной аналитически, используются функции Maximize и Minimize.
Они имеют одинаковые форматы вызова, поэтому для краткости мы будем описывать каждый формат только для одной из этих функций. Заметим, что эти функции заменили устаревшие функции
ConstrainedMin и
ConstrainedMax версии Mathematica 5.
В формате Minimize[expr,x] определяется минимум выражения expr по переменной x.
125
????????????????????????????????[????
????
− ???????? − ????, ????]
{−9, {???? → 1}}
Результат возвращается в форме списка {Мин_значение,{x→x min
}}.
Вот график нашей функции.
????????????????[????
????
− ???????? − ????, {????, −????, ????}]
Поскольку максимум функции
8 2
2
x
x
равен бесконечности, то
????????????????????????????????[????
????
− ???????? − ????, ????]
Maximize::natt: The maximum is not attained at any point satisfying the given constraints.
{∞, {???? → −∞}} и функция Maximize вывела сообщение.
Обратите внимание, что первым аргументом функций Maximize и
Minimize являются выражения, хотя по привычке мы говорим об экстремуме функции.
Исследуемые функции не обязаны быть гладкими.
????[????_] = ????
????
− ????????
????
− ???????? + ????;
????????????????[????????????[????[????]], {????, −????, ????}]
????????????????????????????????[????????????[????[????]], ????]
{0, {???? → −2}}
Функции Maximize и Minimize умеют работать с символьными выражениями
????????????????????????????????[????
????
− ????????????, ????]
{−????
2
, {???? → ????}}
Исследуемые на экстремум выражения могут иметь любое конечное количество аргументов.
????[????_, ????_] = (????
????
+ ????
????
+ ????)((???????? − ????)
????
+ ????)
????????????????????????[????[????, ????], {????, −????, ????}, {????, −????, ????}, ???????????????????????????????????? → ????????????]
????????????????????????????????[????[????, ????], {????, ????}]
{2, {???? → 0, ???? → 0}}
В формате Minimize[{expr,ограничения},{x
1
,x
2
,...}] определяется минимум выражения expr по переменным x
1
,x
2
,... с учетом ограничений (дополнительных условий).
126
????[????_] = ????????
????
− ????????
????
− ???????????? + ????;
????????????????[????[????], {????, −????, ????}]
????????????????????????????????[{????[????], −???? <= ???? ≤ ????}, ????]
{−19, {???? → 2}}
????????????????????????????????[{????[????], −???? <= ???? ≤ ????}, ????]
{8, {???? → −1}}
Вот пример для функции 2 – х переменных
????????????????????????????????[{???? + ????, ????
????
+ ????
????
≤ ????}, {????, ????}]
????????????????????????????????[{???? + ????, ????
????
+ ????
????
≤ ????}, {????, ????}]
{0, {???? → −1, ???? → 0}}
{2, {???? → 1, ???? → 0}}
????????????????????????????????????????????????[????
????
+ ????
????
≤ ????&&???? ≤ ???? ≤ ???? + ????,
????, −????, ???? , ????, −????, ???? , ????, ????, ???? , ???????????????????????????????????????? → ????????, ???????????????? → ????????????????,
???????????????????? → ????????????????????, ???????????????????????????????????????? → {????, ????, ????}]
Вот пример линейных ограничений и линейной целевой функции.
????????????????????????????????[{????, ???? + ???? − ???? ≥ ????, −???? + ???? − ???? ≤ ????, ???? + ???? − ???? <= 0, ???? ≥ ????}, {????, ????}]
{
3 2
, {???? →
1 2
, ???? →
3 2
}}
????????????????????????????????????????[???? + ???? − ???? ≥ ???? && − ???? + ???? − ???? ≤ ???? && ???? + ???? − ???? ≤ ???? &&
???? ≥ ????, {????, −????. ????, ????. ????}, {????, −????. ????, ????}]
Здесь максимум достигается в самой высокой вершине многоугольника, представляющего множество точек, координаты которых удовлетворяют системе неравенств.
Целевая функция, зависящая от нескольких переменных, также не обязана быть гладкой.
????????????????????????????????[{???? − ????????????[????] + ????????????[????], ????????????[????] + ????????????[????] ≤ ????}, {????, ????}]
{0, {???? → −1, ???? → 0}}
????????????????????????[???? − ????????????[????] + ????????????[????], {????, −????, ????}, {????, −????, ????},
???????????????????????????????????????????????????????? → ????????????????????????????????[{????, ????, ????}, ????????????[????] + ????????????[????] ≤ ????]]
127
Целевая функция может быть неограничена. Тогда система может вернуть следующий результат
????????????????????????????????[{???? + ????, ???????? ≤ ????}, {????, ????}]
Minimize::natt: The minimum is not attained at any point satisfying the given constraints.
{−∞, {???? → Indeterminate, ???? → Indeterminate}}
Экстремум может существовать, но не достигаться в области. Тогда результат вычисления может выглядеть следующим образом
????????????????????????????????[{???? + ????
????
, ???? ???? ≥ ????}, {????, ????}]
Minimize::natt: The minimum is not attained at any point satisfying the given constraints.
{1, {???? → Indeterminate, ???? → Indeterminate}}
Следующий график целевой функции проясняет ситуацию.
????????????????????????[???? + ????
????
, {????, −????, ????}, {????, −????, ????}, ???????????????????????????????????????????????????????? → ????????????????????????????????[{????, ????, ????}, ???????? ≥ ????]]
Глобальный минимум достигается при x=0, а условие
1
y
x
исключает значение x=0 из рассмотрения, хотя при достаточно большом y величина x может приблизиться к нулю сколь угодно близко.
Если ограничение задает открытую область (без границы), а экстремум принадлежит границе, то функции Maximize/Minimize могут возвратить точку, которая лежит на границе и вывести подходящее сообщение.
????????????????????????????????[{????????, ????
????
+ ????
????
< 1}, {????, ????}]
Maximize::wksol: Warning: there is no maximum in the region in which the objective function is defined and the constraints are satisfied; Mathematica will return a result on the boundary.
{
1 2
, {???? → −
1 2
, ???? → −
1 2
}}
Функции умеют решать задачи целочисленного программирования.
????????????????????????????????[{???????? + ????????
????
− ????????
????
, ???? ≤ ???? + ???? + ???? ≤ ???? && ???? ≤ ???? − ???? + ???? ≤ ???? &&
???? − ???? − ???? == ???? && ????????????????????????????[{????, ????, ????}, ????????????????????????????????]}, {????, ????, ????}]
{6, {???? → 2, ???? → 0, ???? → −1}}
Здесь к ограничениям – неравенствам мы добавили дополнительное условие
Element[{x,y,z},Integers].
Ограничения могут содержать уравнения, неравенства, их логическую комбинацию и, возможно, ограничение «целочисленности». Если выражение f и ограничения являются линейными или полиномиальными функции
128
Minimize и Maximize будут всегда искать глобальный (в области) экстремум. Если этим функциям переданы выражения, содержащие приближенные числа, то экстремум они будут искать численно (а не символьно), автоматически вызывая функции NMinimize и NMaximize. Если области «принадлежности» переменных не заданы, то полагается, что все переменные вещественные. Кроме того, следует помнить, что функции возвращают одно значение экстремума, даже если одинаковых экстремальных значений имеется несколько.
Естественно, что функции Minimize и Maximize успешно решают задачи линейного программирования.
????????????????????????????????[{???? − ???????? − ????, ???? ≤ ???? + ???? + ???????? ≤ ???? && ???? ≤ ???? − ???????? + ???? ≤ ???? &&
???? − ???????? − ???????? == ????}, {????, ????, ????}]
{
12 5
, {???? →
8 5
, ???? → −
1 5
, ???? → −
1 5
}}
Однако следует знать, что для таких задач в системе имеется специальная функция LinearProgramming, которая ожидает входные данные в матричном виде (в виде списков). Например,
???? = {????, −????, −????}; (*коэффициенты целевой функции*)
???? = ????, ????, ???? , ????, ????, ???? , ????, −????, ???? , ????, −????, ???? , ????, −????, −???? ;(*коэф. ограничений*)
???? = {{????, ????}, {????, −????}, {????, ????}, {????, −????}, {????, ????}}; (*знач. прав. части, тип неравенства*)
????????????????????????????????????????????????????????????????????[−????, ????, ????, −????????????????????????????????]
{
8 5
, −
1 5
, −
1 5
}
Само значение целевой функции находим следующим образом
????. %
12 5
Подробнее с функцией LinearProgramming вы можете познакомиться по справочной системе.
Пример. Найдем минимальное расстояние от точки (4,3) до эллипса
1 4
9 2
2
y
x
. Имеем
???? = ????????????????????????????????[{(???? − ????)
????
+ (???? − ????)
????
,
????
????
????
+
????
????
????
≤ ????}, {????, ????}]
{
29 5
, {???? →
12 5
, ???? →
6 5
}}
????????????????????????????????????????[
????
????
????
+
????
????
????
≤ ????, {????, −????, ????}, {????, −????, ????},
???????????????????????? → {????????????????????????????????????[????. ????????], {????????????, ????????????????????[{????, ????}/. ????[[????]]]},
{????????????????????, ????????????????????[{????, ????}]}}, ???????????????????????????????????????????? → ????????????????????????????????????]
129
□
Пример. Среди всех прямоугольников единичного периметра найти прямоугольник с максимальной площадью. Обозначив через x и y длины сторон прямоугольника, получаем
????????????????????????????????[{???? ????, ???????? + ???????? == ???? && ???? > 0 && ???? > 0}, {????, ????}]
{
1 16
, {???? →
1 4
, ???? →
1 4
}}
□
Пример. Среди всех прямоугольных треугольников единичной площади найти треугольник с минимальным периметром. Обозначив через x и y длины сторон прямоугольника, имеем
y
x
S
2 1
,
2 2
y
x
y
x
P
. Тогда
????????????????????????????????[{???? + ???? + ????
????
+ ????
????
, ???? ???? == ???? && ???? > 0 && ???? > 0}, {????, ????}]
{2(1 + 2), {???? → ⋯ , ???? → ⋯ }}
????[%]
{4.8284271,{x
1.4142136,y1.4142136}}
□
Пример. Найти расстояние от заданной точки до параболы.
???????? = ????; ???????? = ????; ????????????????????????????????[{????????????????[(???? − ????????)
????
+ (???? − ????????)
????
], ???? == ????
????
}, {????, ????}]
{
1 2
43 − 14 7, {???? →
1 2
(1 + 7), ???? →
1 4
(1 + 7)
2
}}
???????? = ????; ???????? = ????; ????????????????????????????????[{????????????????[(???? − ????????)
????
+ (???? − ????????)
????
], ???? == ????
????
}, {????, ????}]
{ Root −6057 + 21157#1 − 1192#1 2
+ 16#1 3
&,1 ,
{???? → Root[−3 − 11#1 + 2#1 3
&,3], ???? → Root[−3 − 11#1 + 2#1 3
&,3]
2
}}
????[%]
{0.53948303,{x
2.4712314,y6.1069848}}
Вы можете аналогично находить расстояние от точки до любой кривой, заменив уравнение кривой.
□
Функции MinValue, ArgMin, MaxValue и ArgMax решают те же задачи, которые решают функции Maximize и Minimize. Функции MinValue и
MaxValue возвращают значение минимума и максимума, а функции ArgMin, и ArgMax возвращают координаты точки, в которой экстремум достигается.
Фактически функция
MinValue[...] эквивалентна команде
First[Minimize[...]], а функция ArgMin[...] эквивалентна команде
{x,y,...}/.Last[Minimize[...,{x,y,...},...]. Аналогичное замечание касается функций MaxValue и ArgMax.
130
????????????????????????????????[{(???? + ???? − ????)
????
+ ????, ????
????
+ ????
????
≤ ????}, {????, ????}]
1
????????????????????????[{(???? + ???? − ????)
????
+ ????, ????
????
+ ????
????
≤ ????}, {????, ????}]
{
1 2
,
1 2
}
????????????????????????????????[{(???? + ???? − ????)
????
+ ????, ????
????
+ ????
????
≤ ????}, {????, ????}]
{1, {???? →
1 2
, ???? →
1 2
}}
Функции NMaximize, NMinimize численно находят максимум/минимум функции/выражения. Они возвращают результат в такой же форме как и функции Maximize и Minimize. Их также можно применять для решения задач целочисленного программирования.
Для линейной целевой функции и линейных ограничений эти функции определяют глобальный экстремум. Для других типов выражений только гарантируется, что будет определен локальный экстремум, хотя функции все же пытаются найти глобальное значение.
В формате NMinimize[expr,x] численно определяется минимум выражения expr по переменной x. Аналогичный формат имеется у функции
NMaximize.
В формате NMinimize[expr,{x
1
,x
2
,...}] численно определяется минимум выражения expr по переменным x
1
,x
2
,.... Аналогичный формат имеется у функции NMaximize.
В формате
NMinimize[{expr,ограничения},{x
1
,x
2
,...}] численно определяется минимум выражения expr по переменным x
1
,x
2
,... с учетом ограничений (дополнительных условий). То же имеет место для функции NMaximize.
????????????????????????????????????[−????
????
− ????????
????
+ ????, ????]
{0.32123215,{x
0.42441332}}
????????????????????????????????????[{????
????
− (???? − ????)
????
, ????
????
+ ????
????
≤ ????}, {????, ????}]
{3.4397099,{x
1.3949862,y0.23240812}}
????????????????????????????????????[{????????????[????????????[????]] − ????????????[????????(???? + ????)] + (????
????
+ ????
????
)/????, ????
????
+ ????
????
≤ ????}, {????, ????}]
{3.442848,{x
0.90372233,y-0.42811908}}
В системе ограничений допустимо использовать операцию || (или).
????????????????????????????????????[{???? + ????, ????
????
+ ????
????
≤ ????||(???? − ????)
????
+ ????
????
≤ ????}, {????, ????}]
{2.4142136,{x
1.7071065,y0.70710707}}
Можно потребовать, чтобы некоторые из искомых переменных были целыми числами.
????????????????????????????????????[{−???? − ????????, ???????? + ???????? ≤ ???????? && ???? + ???????? ≥ ???? &&
???? ≥ ???? && ???? ≥ ???? && {????, ????} ∈ ????????????????????????????????}, {????, ????}]
{−2. , {???? → 2, ???? → 0}}
????????????????????????????????????[{−???? − ????????, ???????? + ???????? ≤ ???????? && ???? + ???????? ≥ ???? && ???? ≥ ???? &&
???? ≥ ???? && {????} ∈ ????????????????????????????????}, {????, ????}]
{-1.5,{x
0,y0.5}}