Файл: Mathematica для математиков. Часть Реализация основных понятий математического анализа.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 277
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
1
Доля П.Г.
Харьковский Национальный Университет механико – математический факультет
2015 г.
Mathematica для математиков.
Часть 3. Реализация основных понятий математического анализа.
В системе Mathematica реализованы все основные понятия, используемые в математическом анализе: пределы, производные, интегралы, ряды.
Предполагается, что читатель знаком с этими понятиями. В данной главе представлен обзор основных функций системы, которые выполняют операции математического анализа символьно и численно.
Примеры, приводимые в пособии, проверялись в версии пакета
Mathematica 9.0. В предыдущих версиях многие примеры работать не будут.
Особенности некоторых функций старых версий мы иногда описываем отдельно.
Оглавление
3.1 Вычисление пределов ................................................................................... 2 3.2 Дифференцирование ..................................................................................... 8 3.2.1 Создание и использование функций .................................................... 8 3.2.2 Вычисление производных и дифференциалов .................................. 11 3.2.3 Геометрические приложения производных ...................................... 16 3.3 Интегрирование ........................................................................................... 21 3.3.1 Символьное вычисление интегралов ................................................. 21 3.3.2 Численное интегрирование ................................................................. 34 3.3.3 Вычисление длин, площадей и объемов ............................................ 41 3.4 Векторный анализ ....................................................................................... 60 3.4.1 Алгебраические операции с векторами ............................................ 61 3.4.2 Дифференциальные операции векторного анализа .......................... 67 3.4.3 Криволинейные и поверхностные интегралы ................................... 78 3.4.4 Криволинейные системы координат .................................................. 88 3.4.5 Графическое представление векторных полей. ................................ 96 3.5 Ряды ............................................................................................................ 109 3.5.1 Вычисление конечных и бесконечных сумм. ................................. 109 3.5.2 Ряды Тейлора. .................................................................................... 114 3.5.3 Ряды Фурье ........................................................................................ 117
2 3.6 Поиск экстремальных значений. ............................................................. 122 3.6.1 Экстремумы дискретных наборов .................................................... 122 3.6.2 Экстремумы функций ........................................................................ 124 3.7 Приближение функций. ............................................................................ 137 3.7.1 Полиномиальная интерполяция ........................................................ 138 3.7.2 Кусочно – полиномиальная интерполяция ...................................... 139 3.7.3 Аппроксимация .................................................................................. 145 3.8 Решение прикладных задач. ..................................................................... 146 3.8.1 Физические приложения кратных интегралов. ............................... 146 3.8.2 Примеры решения задач распространения тепла ........................... 151 3.8.3 Одномерные колебания ..................................................................... 163 3.8.4 Примеры решения краевых задач для уравнение Лапласа ............ 171
Литература. ...................................................................................................... 178
Глава 3. Реализация основных понятий математического анализа в
системе Mathematica.
3.1
Вычисление пределов
Для вычисления предела используется команда Limit
????????????????????
????????????[????]
????
, ???? → ????
1
Первый аргумент - функция, для которой находится предел. Второй аргумент определяет переменную и значение, к которому она приближается. Запись x→0 читается, как "x стремится к нулю". Вычисление предела можно записать в традиционном виде.
????????????????????[????[????], ???? → ????
????
]//????????????????????????????????????????????????????????????
lim
????→????
0
????(????)
Выполним несколько примеров.
????????????????????[
???? + ???? − ???? − ????
????
, ???? → ????]
1
????????????????????[
(???? + ????)
????
− ????
????
, ???? → ????]
2
????????????????????[
????????
????
− ????
????
, ???? → ????]
Log[10]
????????????????????[????????????????[????], ???? → ????]
0
Можно вычислять пределы, когда переменная стремится к бесконечности
3
????????????????????
(???? + ????)
????
????
????
, ???? → ∞
1
????????????????????[
????
????
− ????
−????
????
????
+ ????
−????
, ???? → −∞]
-1
????????????????????[ ???? +
????
????
????
, ???? → ????????????????????????????????]
ⅇ
????
????????????????????[
???????? + ????
???????? − ????
????
, ???? → ∞]
ⅇ
????
????????????????????[ⅇ
−ⅇ
−ⅇ????
+
????
????+????
(−???? + ⅇ
ⅇ
−ⅇ????
+ⅇ
−????
+ⅇ
−????????
), ???? → ∞]
1
Можно вычислять односторонние пределы. Для этого нужно указать направление, используя опцию Direction. Следующая команда вычисляет левый предел (т.е. двигаясь из нуля направо или в положительном направлении)
???????????????????? ????????????[????], ???? →
????
????
, ???????????????????????????????????? → ????
∞
В следующем примере происходит приближение справа.
???????????????????? ???????????? ???? , ???? →
????
????
, ???????????????????????????????????? → −????
−∞
Заметим, что значение опции Direction определяет, куда вы хотите передвигаться, а не откуда вы идете. Таким образом, отрицательное значение указывает на движение в отрицательном направлении, т.е. приближении справа.
Важен только знак, не величина (вместо единицы можно написать любое число).
Направление приближения существенно при вычислении пределов разрывных функций. Например рассмотрим функцию вычисления целой части числа (наибольшего целого, не превосходящего данное)
????????????????[????????????????????[????], {????, −????, ????}]
Вычислим ее пределы в точке 2.
????????????????????[????????????????????[????], ???? → ????]
2
????????????????????[????????????????????[????], ???? → ????, ???????????????????????????????????? → ????]
1
4
????????????????????[????????????????????[????], ???? → ????, ???????????????????????????????????? → −????]
2
При стремлении переменной к конечному пределу по умолчанию вычисляется предел справа (
Direction → −1).
Предел полезен для проверки вычисления значения функции в окрестности точек разрыва. Например вычислим значение выражения
4 2
cos
1
x
x
вблизи нуля.
???? − ????????????[????
????
]
????
????
/. {{???? → ????. ????????}, {???? → ????. ????????????????????}, {???? → ????. ????????????????????????????????????????????????????????????????????????????????????????}}
{0.5,
0. , 0.50000000000000000}
В точке x=0.00001 значение функции вычислено неверно. Это произошло из-за потери точности. В той же точке, но при более высокой точности задания переменной x (третье значение в списке) происходит вычисления значения функции с более высокой точностью. Проверка значения предлом дает 0.5
????????????????????
???? − ????????????[????
????
]
????
????
, ???? → ????
1 2
График выражения также проясняет ситуацию.
????????????????[
???? − ????????????[????
????
]
????
????
, {????, −????, ????}]
Можно вычислять повторные пределы
????????????????????[????????????????????[????
????
????
????
− ????????????
????
+ ????????, ???? → ????], ???? → ????]
-927
В некоторых случаях важен порядок вычисления пределов.
????????????????????[????????????????????
????
????
????
????
????
+ ????
????
, ???? → ∞ , ???? → ∞]
∞
????????????????????[????????????????????
????
????
????
????
????
+ ????
????
, ???? → ∞ , ???? → ∞]
0
Для функций нескольких переменных можно вычислять пределы по множеству
????????????????????[
????????
????
????
+ ????
????
/. ???? → ????????, ???? → ????]
????
1 + ????
2
5
В тех случаях, когда предел не может быть вычислен, функция Limit возвращает интервал изменения значения функции в котором значение функции находится.
????????????????????[????????????[????/????], ???? → ????]
Interval[{−1,1}]
Чтобы понять, что это значит, построим график функции
????????????????[????????????
????
????
, {????, −????/????, ????/????}]
Если вычисляется предел функции, о которой нет определенной информации, то возвращается необработанный ввод.
????????????????????[????????[????], ???? → ????]
Limit[????????[????], ???? → 0]
Однако имеется опция Analytic ->True, которая гооворит функции Limit делать предположения о том, что функции общего вида, о которых нет явной информации, следует считать аналитическими (в частности считать их непрерывными с непрерывными производными любого порядка). Тогда
????????????????????[???? ????[????], ???? → ????, ???????????????????????????????? → ????????????????]
0
При вычислении пределов в функции Limit с помощью опции Assumptions можно указывать предположения относительно символьных переменных.
????????????????????[????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? < 0]
0
????????????????????[????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? > 0]
????????????????????[????
????
/????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? < ???? < 1]
0
Вы можете использовать Limit для вычисления производных «реальных» функций
????[????_] = ????
????
;
????????????????????[
????[???? + ????????] − ????[????]
????????
, ???????? → ????]
4????
3
????????????????????[
????[???? + ????????] − ????????[???? + ????] + ????[????]
????
????
, ???? → ????]
12????
2
или аналитических функций общего вида
????????????????????[????];
????????????????????[
????[???? + ????] − ????[????]
????
, ???? → ????, ???????????????????????????????? → ????????????????]
????
′
[????]
6
????????????????????[
????[???? + ????????] − ????????[???? + ????] + ????[????]
????
????
, ???? → ????, ???????????????????????????????? → ????????????????]
????
′′
[????]
Сумма бесконечного числового ряда определяется как предел частичных сумм, например,
n
k
n
k
k
k
k
k
1 1
1 1
lim
1 1
. Тогда
???????? = ????????????[
????
????(???? + ????)
, {????, ????, ????}]
????????????????????[????????, ???? → ∞]
1 −
1 1 + ????
1
Определенный интеграл Римана является пределом интегральных сумм. Пусть это будет
1 0
lim
n
k
n
b
a
n
a
b
k
a
f
n
a
b
x
d
x
f
Выражение, стоящее в правой части, можно записать в виде функции
????????: = ????????????????????????????????[{????, ????, ????, ????, ????},
???? − ????
????
????????????[????[???? + ????
(???? − ????)
????
], {????, ????, ???? − ????}]];
Используя созданную функцию, можно вычислять определенный интеграл.
Например, вычислим следующий интеграл
1 0
3
x
d
x
???????? = ????????[#
????
&, ????, ????, ????, ????]
????????????????????[????????, ???? → ∞]
(−1 + ????)
2 4????
2 1
4
Или вычислим интеграл
1 0
x
d
e
x
a
???????? = ???????? ???????????? ????# &, ????, ????, ????, ???? ;
????????????????????[????????, ???? → ∞]
−1 + ⅇ
????
????
Неопределенный интеграл можно вычислять как определенный с переменным верхним пределом. Например вычислим
x
t
d
t
0 3
???????? = ????????[#
????
&, ????, ????, ????, ????];
????????????????????[????????, ???? → ∞]
????
4 4
7
Несобственный интеграл с бесконечными пределами является пределом определенного интеграла с конечными пределами, когда один (или оба) из пределов стремится к бесконечности. Например
a
x
a
x
x
d
e
x
d
e
0 3
0 3
lim
. Тогда
???????????????????? = ???????? ???????????? −????# &, ????, ????, ????, ???? ;
???????????????????? = ???????????????????? ????????????????????, ???? → ∞ ;
????????????????????[????????????????????, ???? → ∞]
1 3
Интеграл от неограниченных функций тоже вычисляется с использованием предельного перехода
????????????????????????????????[???? < ???????? < 1, ???????????????????? = ????/ ???? ⅆ????
????
????????
]
2 − 2 ep
Здесь функция Assuming накладывает ограничение на переменную ep, используемую в интеграле. В данном случае выражение (интеграл), стоящее во втором аргументе, вычисляется в предположении, что
1 0
ep
. После этого вычисляем предел
????????????????????[????????????????????, ???????? → ????]
2
Или
???????????????????????????????? ???? < ???????????? < 1, ???????????????????? =
????
???? − ????
????
ⅆ????
????????????
????
;
????????????????????[????????????????????, ???????????? → ????]
1
Конечно, функция Limit не предназначена для вычисления производных и интегралов. Для этого в системе есть более «умные» функции. С ними вы познакомитесь немного позже. Функция Limit нужна, например, для определения асимптот функций. Вот как это можно сделать.
????[????_] =
????
????
+ ???????? + ????
????????
????
+ ????
????
+ ????
;
???? = ????????????????????[
????[????]
????
, ???? → ∞]
???? = ????????????????????[????[????] − ????????, ???? → ∞]
1 2
−
1 4
????????????????[{????[????], ???????? + ????}, {????, −????, ????}, ???????????????????????????????????? → {{????????????????????, ????????????????????????????????????[????. ????????]}}]
8
Встроенная функция Limit вычисляет пределы, используя аналитические методы. Кроме нее имеется внешняя функция NLimit, выполняющая поиск предела численно с помощью последовательности значений, приближающихся к указаному предельному значению. Результат последовательного вычисления передается в процедуру, которая аппроксимирует полученные значения и возвращает предел.
????????????????????["????????????????????????????????????????????????????????????????????`"]
(В Mathematica 5 нужно загружать пакет <????????????????????????
????????????[????]
????
, ????−> 0 1
????????????????????????
????????
????
+ ????????????[????]
????????
????
+ ????????????[????]
, ???? → ∞
0.4
Заметим, что функция Limit может вернуть неправильный результат, если предельное значение указано приближенно, а не точно (числа с десятичной точкой рассматриваются как приближенные).
???? = ????????????????????[????????????[???? − (????????????[????????????[????]/???? − ????] + ????????????[????])/????]/????, ???? → ????????????. ]
−∞
Но ответ получается правильный, если входные значения заданы точно.
???? = ????????????????????[????????????[???? − (????????????[????????????[????]/???? − ????] + ????????????[????])/????]/????, ???? → ????????????]
1 100
Log[1 −
1 100
Log[−100 + ⅇ
100
]]
Тем не менее вычисления полученного результата с недостаточной точностью тоже неверны
????[????]
????[????, ????????]
Indeterminate
-1.0000000000000000000
3.2
Дифференцирование
3.2.1
Создание и использование функций
Операция дифференцирования применяется к функциям. Поэтому здесь будет уместно напомнить некоторые основные способы создания функций.
Простейший способ состоит в выполнении команды
????[????_]: =выражение или
????[????_] =выражение (без двоеточия)
Здесь y – имя функции (такое как Sin для функции Sin[x]). Символ подчеркивания в левой части говорит о том, что переменная x в правой части выражения является локальной. Знак := представляет отложенное присваивание, которое выполняется в тот момент, когда происходит
9 конкретное вычисление значения функции. Если используется знак = , то выполняется создание функции немедленно.
Общий способ создания функции пользователя состоит в использовании ключевого слова Function. funcname = Function[x, body]
Эта форма предназначена для определения функции с одним формальным параметром (переменной) x. Здесь funcname имя функции, такое как Sin, Log и т.д., body – выражение, определяющее правило вычисления. Например
???? = ???????????????????????????????? ????, ????
????
;
????[????]
4
Идентификатор z, стоящий слева, является именем функции, первое вхождение
х в правой части обозначает имя аргумента, затем следует выражение, описывающее правило вычисления значения функции. Выражение может состоять из нескольких выражений, разделенных точкой с запятой. Результат вычисления последнего выражения в такой последовательности будет результатом вычисления функции.
???????? = ????????????????????????????????[????, ???? = ????
????
; ???? ∗ ????????????[????]];
Можно не определять имя функции при ее создании
???????????????????????????????? ????, ????
????
;
Тогда можно использовать знак % вместо имени функции (% представляет результат выполнения последней операции в системе). Например,
%[????]
????
2
Функцию можно определить без указания имен ее аргументов. В таком случае для обращения к ним следует использовать значки #1, #2 и т.д. funcname=Function[body] где funcname имя функции, body – выражение, определяющее правило вычисления. Например,
???????? = ????????????????????????????????[#????
????
]
#1 2
&
Идентификатор #1 заменяет имя первого (и единственного) аргумента. Тогда в выражениях можно использовать f2[x] или вместо x подставлять конкретные значения f2[2].
Синонимом основного определения функции является ее постфиксное определение в виде
???????????????????????????????? = (#????
????
)&
#1 2
&
Аргумент при определении функции обозначается # (или #1, #2 и т.д.). Само имя функции обозначается #0, ## используется для обозначения всего списка аргументов, ##n обозначает списка аргументов, начиная с n-того. Значок & используется вместо ключевого слова Function после указания тела функции.
Таким образом, последнее определение эквивалентно постфиксному использованию слова Function.
10
&
funcname
//Function
1
#
2
Для определения функции с несколькими аргументами можно использовать форму Function[{x
1
, x
2
,…},body]
с использованием списка формальных параметров {x
1
,x
2
,…}
. Можно использовать и простую форму, например
???? ????_, ????_ = ????
????
+ ????
????
;
????[????, ????]
13
Есть еще способ создания функции с использованием символа отображения
(стрелки)
???? = ???? → ????
????
Function[????, ????
3
]
Здесь стрелка особая! Чтобы правильно ее набрать надо последовательно нажать комбинацию клавиш
Esc
fn
Esc
Для создания функций без побочных эффектов удобно использовать ключевое слово Module. Имена аргументов функции указываются с символом подчеркивания в левой части операции присваивания, а в правой используется список локальных имен модуля, за которым следуют выражения
Module[{имя1,имя2,...},выражение1;выражение2;...]
Например
????[????_]: = ????????????????????????[{????}, ???? = (???? + ????)^????; ???? = ????????????????????????[????]]
????[????]
1 + 3???? + 3????
2
+ ????
3
Имена переменных, использованных в первом списке справа, будут локальными переменными модуля и не будут конфликтовать с такими же именами в глобальной области рабочего пространства системы. При этом они могут рассматриваться не только как имена переменных, но и как имена локальных функций.
С использование функции
Module могут конструироваться функции многих переменных
В Mathematica есть несколько способов применить функцию к выражению. Это обычные квадратные скобки f[x], префикс f@x и постфикс x // f. Например
{????????????
????
????
, ????????????@
????
????
,
????
????
//????????????}
1 2
,
1 2
,
3 2
Префиксное и постфиксное использование имени функции используется для функций одной переменной. Для функции двух переменных возможно инфиксное (между аргументами) использование имени функции. Например
????[????_, ????_] = ???? + ????
????
2????3 11 или
11 1????2????3 14
1 2 3 4 5 6 7 8 9 ... 19
1
Доля П.Г.
Харьковский Национальный Университет механико – математический факультет
2015 г.
Mathematica для математиков.
Часть 3. Реализация основных понятий математического анализа.
В системе Mathematica реализованы все основные понятия, используемые в математическом анализе: пределы, производные, интегралы, ряды.
Предполагается, что читатель знаком с этими понятиями. В данной главе представлен обзор основных функций системы, которые выполняют операции математического анализа символьно и численно.
Примеры, приводимые в пособии, проверялись в версии пакета
Mathematica 9.0. В предыдущих версиях многие примеры работать не будут.
Особенности некоторых функций старых версий мы иногда описываем отдельно.
Оглавление
3.1 Вычисление пределов ................................................................................... 2 3.2 Дифференцирование ..................................................................................... 8 3.2.1 Создание и использование функций .................................................... 8 3.2.2 Вычисление производных и дифференциалов .................................. 11 3.2.3 Геометрические приложения производных ...................................... 16 3.3 Интегрирование ........................................................................................... 21 3.3.1 Символьное вычисление интегралов ................................................. 21 3.3.2 Численное интегрирование ................................................................. 34 3.3.3 Вычисление длин, площадей и объемов ............................................ 41 3.4 Векторный анализ ....................................................................................... 60 3.4.1 Алгебраические операции с векторами ............................................ 61 3.4.2 Дифференциальные операции векторного анализа .......................... 67 3.4.3 Криволинейные и поверхностные интегралы ................................... 78 3.4.4 Криволинейные системы координат .................................................. 88 3.4.5 Графическое представление векторных полей. ................................ 96 3.5 Ряды ............................................................................................................ 109 3.5.1 Вычисление конечных и бесконечных сумм. ................................. 109 3.5.2 Ряды Тейлора. .................................................................................... 114 3.5.3 Ряды Фурье ........................................................................................ 117
2 3.6 Поиск экстремальных значений. ............................................................. 122 3.6.1 Экстремумы дискретных наборов .................................................... 122 3.6.2 Экстремумы функций ........................................................................ 124 3.7 Приближение функций. ............................................................................ 137 3.7.1 Полиномиальная интерполяция ........................................................ 138 3.7.2 Кусочно – полиномиальная интерполяция ...................................... 139 3.7.3 Аппроксимация .................................................................................. 145 3.8 Решение прикладных задач. ..................................................................... 146 3.8.1 Физические приложения кратных интегралов. ............................... 146 3.8.2 Примеры решения задач распространения тепла ........................... 151 3.8.3 Одномерные колебания ..................................................................... 163 3.8.4 Примеры решения краевых задач для уравнение Лапласа ............ 171
Литература. ...................................................................................................... 178
Глава 3. Реализация основных понятий математического анализа в
системе Mathematica.
3.1
Вычисление пределов
Для вычисления предела используется команда Limit
????????????????????
????????????[????]
????
, ???? → ????
1
Первый аргумент - функция, для которой находится предел. Второй аргумент определяет переменную и значение, к которому она приближается. Запись x→0 читается, как "x стремится к нулю". Вычисление предела можно записать в традиционном виде.
????????????????????[????[????], ???? → ????
????
]//????????????????????????????????????????????????????????????
lim
????→????
0
????(????)
Выполним несколько примеров.
????????????????????[
???? + ???? − ???? − ????
????
, ???? → ????]
1
????????????????????[
(???? + ????)
????
− ????
????
, ???? → ????]
2
????????????????????[
????????
????
− ????
????
, ???? → ????]
Log[10]
????????????????????[????????????????[????], ???? → ????]
0
Можно вычислять пределы, когда переменная стремится к бесконечности
3
????????????????????
(???? + ????)
????
????
????
, ???? → ∞
1
????????????????????[
????
????
− ????
−????
????
????
+ ????
−????
, ???? → −∞]
-1
????????????????????[ ???? +
????
????
????
, ???? → ????????????????????????????????]
ⅇ
????
????????????????????[
???????? + ????
???????? − ????
????
, ???? → ∞]
ⅇ
????
????????????????????[ⅇ
−ⅇ
−ⅇ????
+
????
????+????
(−???? + ⅇ
ⅇ
−ⅇ????
+ⅇ
−????
+ⅇ
−????????
), ???? → ∞]
1
Можно вычислять односторонние пределы. Для этого нужно указать направление, используя опцию Direction. Следующая команда вычисляет левый предел (т.е. двигаясь из нуля направо или в положительном направлении)
???????????????????? ????????????[????], ???? →
????
????
, ???????????????????????????????????? → ????
∞
В следующем примере происходит приближение справа.
???????????????????? ???????????? ???? , ???? →
????
????
, ???????????????????????????????????? → −????
−∞
Заметим, что значение опции Direction определяет, куда вы хотите передвигаться, а не откуда вы идете. Таким образом, отрицательное значение указывает на движение в отрицательном направлении, т.е. приближении справа.
Важен только знак, не величина (вместо единицы можно написать любое число).
Направление приближения существенно при вычислении пределов разрывных функций. Например рассмотрим функцию вычисления целой части числа (наибольшего целого, не превосходящего данное)
????????????????[????????????????????[????], {????, −????, ????}]
Вычислим ее пределы в точке 2.
????????????????????[????????????????????[????], ???? → ????]
2
????????????????????[????????????????????[????], ???? → ????, ???????????????????????????????????? → ????]
1
4
????????????????????[????????????????????[????], ???? → ????, ???????????????????????????????????? → −????]
2
При стремлении переменной к конечному пределу по умолчанию вычисляется предел справа (
Direction → −1).
Предел полезен для проверки вычисления значения функции в окрестности точек разрыва. Например вычислим значение выражения
4 2
cos
1
x
x
вблизи нуля.
???? − ????????????[????
????
]
????
????
/. {{???? → ????. ????????}, {???? → ????. ????????????????????}, {???? → ????. ????????????????????????????????????????????????????????????????????????????????????????}}
{0.5,
0. , 0.50000000000000000}
В точке x=0.00001 значение функции вычислено неверно. Это произошло из-за потери точности. В той же точке, но при более высокой точности задания переменной x (третье значение в списке) происходит вычисления значения функции с более высокой точностью. Проверка значения предлом дает 0.5
????????????????????
???? − ????????????[????
????
]
????
????
, ???? → ????
1 2
График выражения также проясняет ситуацию.
????????????????[
???? − ????????????[????
????
]
????
????
, {????, −????, ????}]
Можно вычислять повторные пределы
????????????????????[????????????????????[????
????
????
????
− ????????????
????
+ ????????, ???? → ????], ???? → ????]
-927
В некоторых случаях важен порядок вычисления пределов.
????????????????????[????????????????????
????
????
????
????
????
+ ????
????
, ???? → ∞ , ???? → ∞]
∞
????????????????????[????????????????????
????
????
????
????
????
+ ????
????
, ???? → ∞ , ???? → ∞]
0
Для функций нескольких переменных можно вычислять пределы по множеству
????????????????????[
????????
????
????
+ ????
????
/. ???? → ????????, ???? → ????]
????
1 + ????
2
5
В тех случаях, когда предел не может быть вычислен, функция Limit возвращает интервал изменения значения функции в котором значение функции находится.
????????????????????[????????????[????/????], ???? → ????]
Interval[{−1,1}]
Чтобы понять, что это значит, построим график функции
????????????????[????????????
????
????
, {????, −????/????, ????/????}]
Если вычисляется предел функции, о которой нет определенной информации, то возвращается необработанный ввод.
????????????????????[????????[????], ???? → ????]
Limit[????????[????], ???? → 0]
Однако имеется опция Analytic ->True, которая гооворит функции Limit делать предположения о том, что функции общего вида, о которых нет явной информации, следует считать аналитическими (в частности считать их непрерывными с непрерывными производными любого порядка). Тогда
????????????????????[???? ????[????], ???? → ????, ???????????????????????????????? → ????????????????]
0
При вычислении пределов в функции Limit с помощью опции Assumptions можно указывать предположения относительно символьных переменных.
????????????????????[????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? < 0]
0
????????????????????[????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? > 0]
????????????????????[????
????
/????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? < ???? < 1]
0
Вы можете использовать Limit для вычисления производных «реальных» функций
????[????_] = ????
????
;
????????????????????[
????[???? + ????????] − ????[????]
????????
, ???????? → ????]
4????
3
????????????????????[
????[???? + ????????] − ????????[???? + ????] + ????[????]
????
????
, ???? → ????]
12????
2
или аналитических функций общего вида
????????????????????[????];
????????????????????[
????[???? + ????] − ????[????]
????
, ???? → ????, ???????????????????????????????? → ????????????????]
????
′
[????]
6
????????????????????[
????[???? + ????????] − ????????[???? + ????] + ????[????]
????
????
, ???? → ????, ???????????????????????????????? → ????????????????]
????
′′
[????]
Сумма бесконечного числового ряда определяется как предел частичных сумм, например,
n
k
n
k
k
k
k
k
1 1
1 1
lim
1 1
. Тогда
???????? = ????????????[
????
????(???? + ????)
, {????, ????, ????}]
????????????????????[????????, ???? → ∞]
1 −
1 1 + ????
1
Определенный интеграл Римана является пределом интегральных сумм. Пусть это будет
1 0
lim
n
k
n
b
a
n
a
b
k
a
f
n
a
b
x
d
x
f
Выражение, стоящее в правой части, можно записать в виде функции
????????: = ????????????????????????????????[{????, ????, ????, ????, ????},
???? − ????
????
????????????[????[???? + ????
(???? − ????)
????
], {????, ????, ???? − ????}]];
Используя созданную функцию, можно вычислять определенный интеграл.
Например, вычислим следующий интеграл
1 0
3
x
d
x
???????? = ????????[#
????
&, ????, ????, ????, ????]
????????????????????[????????, ???? → ∞]
(−1 + ????)
2 4????
2 1
4
Или вычислим интеграл
1 0
x
d
e
x
a
???????? = ???????? ???????????? ????# &, ????, ????, ????, ???? ;
????????????????????[????????, ???? → ∞]
−1 + ⅇ
????
????
Неопределенный интеграл можно вычислять как определенный с переменным верхним пределом. Например вычислим
x
t
d
t
0 3
???????? = ????????[#
????
&, ????, ????, ????, ????];
????????????????????[????????, ???? → ∞]
????
4 4
7
Несобственный интеграл с бесконечными пределами является пределом определенного интеграла с конечными пределами, когда один (или оба) из пределов стремится к бесконечности. Например
a
x
a
x
x
d
e
x
d
e
0 3
0 3
lim
. Тогда
???????????????????? = ???????? ???????????? −????# &, ????, ????, ????, ???? ;
???????????????????? = ???????????????????? ????????????????????, ???? → ∞ ;
????????????????????[????????????????????, ???? → ∞]
1 3
Интеграл от неограниченных функций тоже вычисляется с использованием предельного перехода
????????????????????????????????[???? < ???????? < 1, ???????????????????? = ????/ ???? ⅆ????
????
????????
]
2 − 2 ep
Здесь функция Assuming накладывает ограничение на переменную ep, используемую в интеграле. В данном случае выражение (интеграл), стоящее во втором аргументе, вычисляется в предположении, что
1 0
ep
. После этого вычисляем предел
????????????????????[????????????????????, ???????? → ????]
2
Или
???????????????????????????????? ???? < ???????????? < 1, ???????????????????? =
????
???? − ????
????
ⅆ????
????????????
????
;
????????????????????[????????????????????, ???????????? → ????]
1
Конечно, функция Limit не предназначена для вычисления производных и интегралов. Для этого в системе есть более «умные» функции. С ними вы познакомитесь немного позже. Функция Limit нужна, например, для определения асимптот функций. Вот как это можно сделать.
????[????_] =
????
????
+ ???????? + ????
????????
????
+ ????
????
+ ????
;
???? = ????????????????????[
????[????]
????
, ???? → ∞]
???? = ????????????????????[????[????] − ????????, ???? → ∞]
1 2
−
1 4
????????????????[{????[????], ???????? + ????}, {????, −????, ????}, ???????????????????????????????????? → {{????????????????????, ????????????????????????????????????[????. ????????]}}]
8
Встроенная функция Limit вычисляет пределы, используя аналитические методы. Кроме нее имеется внешняя функция NLimit, выполняющая поиск предела численно с помощью последовательности значений, приближающихся к указаному предельному значению. Результат последовательного вычисления передается в процедуру, которая аппроксимирует полученные значения и возвращает предел.
????????????????????["????????????????????????????????????????????????????????????????????`"]
(В Mathematica 5 нужно загружать пакет <????????????????????????
????????????[????]
????
, ????−> 0 1
????????????????????????
????????
????
+ ????????????[????]
????????
????
+ ????????????[????]
, ???? → ∞
0.4
Заметим, что функция Limit может вернуть неправильный результат, если предельное значение указано приближенно, а не точно (числа с десятичной точкой рассматриваются как приближенные).
???? = ????????????????????[????????????[???? − (????????????[????????????[????]/???? − ????] + ????????????[????])/????]/????, ???? → ????????????. ]
−∞
Но ответ получается правильный, если входные значения заданы точно.
???? = ????????????????????[????????????[???? − (????????????[????????????[????]/???? − ????] + ????????????[????])/????]/????, ???? → ????????????]
1 100
Log[1 −
1 100
Log[−100 + ⅇ
100
]]
Тем не менее вычисления полученного результата с недостаточной точностью тоже неверны
????[????]
????[????, ????????]
Indeterminate
-1.0000000000000000000
3.2
Дифференцирование
3.2.1
Создание и использование функций
Операция дифференцирования применяется к функциям. Поэтому здесь будет уместно напомнить некоторые основные способы создания функций.
Простейший способ состоит в выполнении команды
????[????_]: =выражение или
????[????_] =выражение (без двоеточия)
Здесь y – имя функции (такое как Sin для функции Sin[x]). Символ подчеркивания в левой части говорит о том, что переменная x в правой части выражения является локальной. Знак := представляет отложенное присваивание, которое выполняется в тот момент, когда происходит
9 конкретное вычисление значения функции. Если используется знак = , то выполняется создание функции немедленно.
Общий способ создания функции пользователя состоит в использовании ключевого слова Function. funcname = Function[x, body]
Эта форма предназначена для определения функции с одним формальным параметром (переменной) x. Здесь funcname имя функции, такое как Sin, Log и т.д., body – выражение, определяющее правило вычисления. Например
???? = ???????????????????????????????? ????, ????
????
;
????[????]
4
Идентификатор z, стоящий слева, является именем функции, первое вхождение
х в правой части обозначает имя аргумента, затем следует выражение, описывающее правило вычисления значения функции. Выражение может состоять из нескольких выражений, разделенных точкой с запятой. Результат вычисления последнего выражения в такой последовательности будет результатом вычисления функции.
???????? = ????????????????????????????????[????, ???? = ????
????
; ???? ∗ ????????????[????]];
Можно не определять имя функции при ее создании
???????????????????????????????? ????, ????
????
;
Тогда можно использовать знак % вместо имени функции (% представляет результат выполнения последней операции в системе). Например,
%[????]
????
2
Функцию можно определить без указания имен ее аргументов. В таком случае для обращения к ним следует использовать значки #1, #2 и т.д. funcname=Function[body] где funcname имя функции, body – выражение, определяющее правило вычисления. Например,
???????? = ????????????????????????????????[#????
????
]
#1 2
&
Идентификатор #1 заменяет имя первого (и единственного) аргумента. Тогда в выражениях можно использовать f2[x] или вместо x подставлять конкретные значения f2[2].
Синонимом основного определения функции является ее постфиксное определение в виде
???????????????????????????????? = (#????
????
)&
#1 2
&
Аргумент при определении функции обозначается # (или #1, #2 и т.д.). Само имя функции обозначается #0, ## используется для обозначения всего списка аргументов, ##n обозначает списка аргументов, начиная с n-того. Значок & используется вместо ключевого слова Function после указания тела функции.
Таким образом, последнее определение эквивалентно постфиксному использованию слова Function.
10
&
funcname
//Function
1
#
2
Для определения функции с несколькими аргументами можно использовать форму Function[{x
1
, x
2
,…},body]
с использованием списка формальных параметров {x
1
,x
2
,…}
. Можно использовать и простую форму, например
???? ????_, ????_ = ????
????
+ ????
????
;
????[????, ????]
13
Есть еще способ создания функции с использованием символа отображения
(стрелки)
???? = ???? → ????
????
Function[????, ????
3
]
Здесь стрелка особая! Чтобы правильно ее набрать надо последовательно нажать комбинацию клавиш
Esc
fn
Esc
Для создания функций без побочных эффектов удобно использовать ключевое слово Module. Имена аргументов функции указываются с символом подчеркивания в левой части операции присваивания, а в правой используется список локальных имен модуля, за которым следуют выражения
Module[{имя1,имя2,...},выражение1;выражение2;...]
Например
????[????_]: = ????????????????????????[{????}, ???? = (???? + ????)^????; ???? = ????????????????????????[????]]
????[????]
1 + 3???? + 3????
2
+ ????
3
Имена переменных, использованных в первом списке справа, будут локальными переменными модуля и не будут конфликтовать с такими же именами в глобальной области рабочего пространства системы. При этом они могут рассматриваться не только как имена переменных, но и как имена локальных функций.
С использование функции
Module могут конструироваться функции многих переменных
В Mathematica есть несколько способов применить функцию к выражению. Это обычные квадратные скобки f[x], префикс f@x и постфикс x // f. Например
{????????????
????
????
, ????????????@
????
????
,
????
????
//????????????}
1 2
,
1 2
,
3 2
Префиксное и постфиксное использование имени функции используется для функций одной переменной. Для функции двух переменных возможно инфиксное (между аргументами) использование имени функции. Например
????[????_, ????_] = ???? + ????
????
2????3 11 или
11 1????2????3 14
1 2 3 4 5 6 7 8 9 ... 19
1
Доля П.Г.
Харьковский Национальный Университет механико – математический факультет
2015 г.
Mathematica для математиков.
Часть 3. Реализация основных понятий математического анализа.
В системе Mathematica реализованы все основные понятия, используемые в математическом анализе: пределы, производные, интегралы, ряды.
Предполагается, что читатель знаком с этими понятиями. В данной главе представлен обзор основных функций системы, которые выполняют операции математического анализа символьно и численно.
Примеры, приводимые в пособии, проверялись в версии пакета
Mathematica 9.0. В предыдущих версиях многие примеры работать не будут.
Особенности некоторых функций старых версий мы иногда описываем отдельно.
Оглавление
3.1 Вычисление пределов ................................................................................... 2 3.2 Дифференцирование ..................................................................................... 8 3.2.1 Создание и использование функций .................................................... 8 3.2.2 Вычисление производных и дифференциалов .................................. 11 3.2.3 Геометрические приложения производных ...................................... 16 3.3 Интегрирование ........................................................................................... 21 3.3.1 Символьное вычисление интегралов ................................................. 21 3.3.2 Численное интегрирование ................................................................. 34 3.3.3 Вычисление длин, площадей и объемов ............................................ 41 3.4 Векторный анализ ....................................................................................... 60 3.4.1 Алгебраические операции с векторами ............................................ 61 3.4.2 Дифференциальные операции векторного анализа .......................... 67 3.4.3 Криволинейные и поверхностные интегралы ................................... 78 3.4.4 Криволинейные системы координат .................................................. 88 3.4.5 Графическое представление векторных полей. ................................ 96 3.5 Ряды ............................................................................................................ 109 3.5.1 Вычисление конечных и бесконечных сумм. ................................. 109 3.5.2 Ряды Тейлора. .................................................................................... 114 3.5.3 Ряды Фурье ........................................................................................ 117
2 3.6 Поиск экстремальных значений. ............................................................. 122 3.6.1 Экстремумы дискретных наборов .................................................... 122 3.6.2 Экстремумы функций ........................................................................ 124 3.7 Приближение функций. ............................................................................ 137 3.7.1 Полиномиальная интерполяция ........................................................ 138 3.7.2 Кусочно – полиномиальная интерполяция ...................................... 139 3.7.3 Аппроксимация .................................................................................. 145 3.8 Решение прикладных задач. ..................................................................... 146 3.8.1 Физические приложения кратных интегралов. ............................... 146 3.8.2 Примеры решения задач распространения тепла ........................... 151 3.8.3 Одномерные колебания ..................................................................... 163 3.8.4 Примеры решения краевых задач для уравнение Лапласа ............ 171
Литература. ...................................................................................................... 178
Глава 3. Реализация основных понятий математического анализа в
системе Mathematica.
3.1
Вычисление пределов
Для вычисления предела используется команда Limit
????????????????????
????????????[????]
????
, ???? → ????
1
Первый аргумент - функция, для которой находится предел. Второй аргумент определяет переменную и значение, к которому она приближается. Запись x→0 читается, как "x стремится к нулю". Вычисление предела можно записать в традиционном виде.
????????????????????[????[????], ???? → ????
????
]//????????????????????????????????????????????????????????????
lim
????→????
0
????(????)
Выполним несколько примеров.
????????????????????[
???? + ???? − ???? − ????
????
, ???? → ????]
1
????????????????????[
(???? + ????)
????
− ????
????
, ???? → ????]
2
????????????????????[
????????
????
− ????
????
, ???? → ????]
Log[10]
????????????????????[????????????????[????], ???? → ????]
0
Можно вычислять пределы, когда переменная стремится к бесконечности
3
????????????????????
(???? + ????)
????
????
????
, ???? → ∞
1
????????????????????[
????
????
− ????
−????
????
????
+ ????
−????
, ???? → −∞]
-1
????????????????????[ ???? +
????
????
????
, ???? → ????????????????????????????????]
ⅇ
????
????????????????????[
???????? + ????
???????? − ????
????
, ???? → ∞]
ⅇ
????
????????????????????[ⅇ
−ⅇ
−ⅇ????
+
????
????+????
(−???? + ⅇ
ⅇ
−ⅇ????
+ⅇ
−????
+ⅇ
−????????
), ???? → ∞]
1
Можно вычислять односторонние пределы. Для этого нужно указать направление, используя опцию Direction. Следующая команда вычисляет левый предел (т.е. двигаясь из нуля направо или в положительном направлении)
???????????????????? ????????????[????], ???? →
????
????
, ???????????????????????????????????? → ????
∞
В следующем примере происходит приближение справа.
???????????????????? ???????????? ???? , ???? →
????
????
, ???????????????????????????????????? → −????
−∞
Заметим, что значение опции Direction определяет, куда вы хотите передвигаться, а не откуда вы идете. Таким образом, отрицательное значение указывает на движение в отрицательном направлении, т.е. приближении справа.
Важен только знак, не величина (вместо единицы можно написать любое число).
Направление приближения существенно при вычислении пределов разрывных функций. Например рассмотрим функцию вычисления целой части числа (наибольшего целого, не превосходящего данное)
????????????????[????????????????????[????], {????, −????, ????}]
Вычислим ее пределы в точке 2.
????????????????????[????????????????????[????], ???? → ????]
2
????????????????????[????????????????????[????], ???? → ????, ???????????????????????????????????? → ????]
1
4
????????????????????[????????????????????[????], ???? → ????, ???????????????????????????????????? → −????]
2
При стремлении переменной к конечному пределу по умолчанию вычисляется предел справа (
Direction → −1).
Предел полезен для проверки вычисления значения функции в окрестности точек разрыва. Например вычислим значение выражения
4 2
cos
1
x
x
вблизи нуля.
???? − ????????????[????
????
]
????
????
/. {{???? → ????. ????????}, {???? → ????. ????????????????????}, {???? → ????. ????????????????????????????????????????????????????????????????????????????????????????}}
{0.5,
0. , 0.50000000000000000}
В точке x=0.00001 значение функции вычислено неверно. Это произошло из-за потери точности. В той же точке, но при более высокой точности задания переменной x (третье значение в списке) происходит вычисления значения функции с более высокой точностью. Проверка значения предлом дает 0.5
????????????????????
???? − ????????????[????
????
]
????
????
, ???? → ????
1 2
График выражения также проясняет ситуацию.
????????????????[
???? − ????????????[????
????
]
????
????
, {????, −????, ????}]
Можно вычислять повторные пределы
????????????????????[????????????????????[????
????
????
????
− ????????????
????
+ ????????, ???? → ????], ???? → ????]
-927
В некоторых случаях важен порядок вычисления пределов.
????????????????????[????????????????????
????
????
????
????
????
+ ????
????
, ???? → ∞ , ???? → ∞]
∞
????????????????????[????????????????????
????
????
????
????
????
+ ????
????
, ???? → ∞ , ???? → ∞]
0
Для функций нескольких переменных можно вычислять пределы по множеству
????????????????????[
????????
????
????
+ ????
????
/. ???? → ????????, ???? → ????]
????
1 + ????
2
5
В тех случаях, когда предел не может быть вычислен, функция Limit возвращает интервал изменения значения функции в котором значение функции находится.
????????????????????[????????????[????/????], ???? → ????]
Interval[{−1,1}]
Чтобы понять, что это значит, построим график функции
????????????????[????????????
????
????
, {????, −????/????, ????/????}]
Если вычисляется предел функции, о которой нет определенной информации, то возвращается необработанный ввод.
????????????????????[????????[????], ???? → ????]
Limit[????????[????], ???? → 0]
Однако имеется опция Analytic ->True, которая гооворит функции Limit делать предположения о том, что функции общего вида, о которых нет явной информации, следует считать аналитическими (в частности считать их непрерывными с непрерывными производными любого порядка). Тогда
????????????????????[???? ????[????], ???? → ????, ???????????????????????????????? → ????????????????]
0
При вычислении пределов в функции Limit с помощью опции Assumptions можно указывать предположения относительно символьных переменных.
????????????????????[????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? < 0]
0
????????????????????[????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? > 0]
????????????????????[????
????
/????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? < ???? < 1]
0
Вы можете использовать Limit для вычисления производных «реальных» функций
????[????_] = ????
????
;
????????????????????[
????[???? + ????????] − ????[????]
????????
, ???????? → ????]
4????
3
????????????????????[
????[???? + ????????] − ????????[???? + ????] + ????[????]
????
????
, ???? → ????]
12????
2
или аналитических функций общего вида
????????????????????[????];
????????????????????[
????[???? + ????] − ????[????]
????
, ???? → ????, ???????????????????????????????? → ????????????????]
????
′
[????]
6
????????????????????[
????[???? + ????????] − ????????[???? + ????] + ????[????]
????
????
, ???? → ????, ???????????????????????????????? → ????????????????]
????
′′
[????]
Сумма бесконечного числового ряда определяется как предел частичных сумм, например,
n
k
n
k
k
k
k
k
1 1
1 1
lim
1 1
. Тогда
???????? = ????????????[
????
????(???? + ????)
, {????, ????, ????}]
????????????????????[????????, ???? → ∞]
1 −
1 1 + ????
1
Определенный интеграл Римана является пределом интегральных сумм. Пусть это будет
1 0
lim
n
k
n
b
a
n
a
b
k
a
f
n
a
b
x
d
x
f
Выражение, стоящее в правой части, можно записать в виде функции
????????: = ????????????????????????????????[{????, ????, ????, ????, ????},
???? − ????
????
????????????[????[???? + ????
(???? − ????)
????
], {????, ????, ???? − ????}]];
Используя созданную функцию, можно вычислять определенный интеграл.
Например, вычислим следующий интеграл
1 0
3
x
d
x
???????? = ????????[#
????
&, ????, ????, ????, ????]
????????????????????[????????, ???? → ∞]
(−1 + ????)
2 4????
2 1
4
Или вычислим интеграл
1 0
x
d
e
x
a
???????? = ???????? ???????????? ????# &, ????, ????, ????, ???? ;
????????????????????[????????, ???? → ∞]
−1 + ⅇ
????
????
Неопределенный интеграл можно вычислять как определенный с переменным верхним пределом. Например вычислим
x
t
d
t
0 3
???????? = ????????[#
????
&, ????, ????, ????, ????];
????????????????????[????????, ???? → ∞]
????
4 4
7
Несобственный интеграл с бесконечными пределами является пределом определенного интеграла с конечными пределами, когда один (или оба) из пределов стремится к бесконечности. Например
a
x
a
x
x
d
e
x
d
e
0 3
0 3
lim
. Тогда
???????????????????? = ???????? ???????????? −????# &, ????, ????, ????, ???? ;
???????????????????? = ???????????????????? ????????????????????, ???? → ∞ ;
????????????????????[????????????????????, ???? → ∞]
1 3
Интеграл от неограниченных функций тоже вычисляется с использованием предельного перехода
????????????????????????????????[???? < ???????? < 1, ???????????????????? = ????/ ???? ⅆ????
????
????????
]
2 − 2 ep
Здесь функция Assuming накладывает ограничение на переменную ep, используемую в интеграле. В данном случае выражение (интеграл), стоящее во втором аргументе, вычисляется в предположении, что
1 0
ep
. После этого вычисляем предел
????????????????????[????????????????????, ???????? → ????]
2
Или
???????????????????????????????? ???? < ???????????? < 1, ???????????????????? =
????
???? − ????
????
ⅆ????
????????????
????
;
????????????????????[????????????????????, ???????????? → ????]
1
Конечно, функция Limit не предназначена для вычисления производных и интегралов. Для этого в системе есть более «умные» функции. С ними вы познакомитесь немного позже. Функция Limit нужна, например, для определения асимптот функций. Вот как это можно сделать.
????[????_] =
????
????
+ ???????? + ????
????????
????
+ ????
????
+ ????
;
???? = ????????????????????[
????[????]
????
, ???? → ∞]
???? = ????????????????????[????[????] − ????????, ???? → ∞]
1 2
−
1 4
????????????????[{????[????], ???????? + ????}, {????, −????, ????}, ???????????????????????????????????? → {{????????????????????, ????????????????????????????????????[????. ????????]}}]
8
Встроенная функция Limit вычисляет пределы, используя аналитические методы. Кроме нее имеется внешняя функция NLimit, выполняющая поиск предела численно с помощью последовательности значений, приближающихся к указаному предельному значению. Результат последовательного вычисления передается в процедуру, которая аппроксимирует полученные значения и возвращает предел.
????????????????????["????????????????????????????????????????????????????????????????????`"]
(В Mathematica 5 нужно загружать пакет <????????????????????????
????????????[????]
????
, ????−> 0 1
????????????????????????
????????
????
+ ????????????[????]
????????
????
+ ????????????[????]
, ???? → ∞
0.4
Заметим, что функция Limit может вернуть неправильный результат, если предельное значение указано приближенно, а не точно (числа с десятичной точкой рассматриваются как приближенные).
???? = ????????????????????[????????????[???? − (????????????[????????????[????]/???? − ????] + ????????????[????])/????]/????, ???? → ????????????. ]
−∞
Но ответ получается правильный, если входные значения заданы точно.
???? = ????????????????????[????????????[???? − (????????????[????????????[????]/???? − ????] + ????????????[????])/????]/????, ???? → ????????????]
1 100
Log[1 −
1 100
Log[−100 + ⅇ
100
]]
Тем не менее вычисления полученного результата с недостаточной точностью тоже неверны
????[????]
????[????, ????????]
Indeterminate
-1.0000000000000000000
3.2
Дифференцирование
3.2.1
Создание и использование функций
Операция дифференцирования применяется к функциям. Поэтому здесь будет уместно напомнить некоторые основные способы создания функций.
Простейший способ состоит в выполнении команды
????[????_]: =выражение или
????[????_] =выражение (без двоеточия)
Здесь y – имя функции (такое как Sin для функции Sin[x]). Символ подчеркивания в левой части говорит о том, что переменная x в правой части выражения является локальной. Знак := представляет отложенное присваивание, которое выполняется в тот момент, когда происходит
9 конкретное вычисление значения функции. Если используется знак = , то выполняется создание функции немедленно.
Общий способ создания функции пользователя состоит в использовании ключевого слова Function. funcname = Function[x, body]
Эта форма предназначена для определения функции с одним формальным параметром (переменной) x. Здесь funcname имя функции, такое как Sin, Log и т.д., body – выражение, определяющее правило вычисления. Например
???? = ???????????????????????????????? ????, ????
????
;
????[????]
4
Идентификатор z, стоящий слева, является именем функции, первое вхождение
х в правой части обозначает имя аргумента, затем следует выражение, описывающее правило вычисления значения функции. Выражение может состоять из нескольких выражений, разделенных точкой с запятой. Результат вычисления последнего выражения в такой последовательности будет результатом вычисления функции.
???????? = ????????????????????????????????[????, ???? = ????
????
; ???? ∗ ????????????[????]];
Можно не определять имя функции при ее создании
???????????????????????????????? ????, ????
????
;
Тогда можно использовать знак % вместо имени функции (% представляет результат выполнения последней операции в системе). Например,
%[????]
????
2
Функцию можно определить без указания имен ее аргументов. В таком случае для обращения к ним следует использовать значки #1, #2 и т.д. funcname=Function[body] где funcname имя функции, body – выражение, определяющее правило вычисления. Например,
???????? = ????????????????????????????????[#????
????
]
#1 2
&
Идентификатор #1 заменяет имя первого (и единственного) аргумента. Тогда в выражениях можно использовать f2[x] или вместо x подставлять конкретные значения f2[2].
Синонимом основного определения функции является ее постфиксное определение в виде
???????????????????????????????? = (#????
????
)&
#1 2
&
Аргумент при определении функции обозначается # (или #1, #2 и т.д.). Само имя функции обозначается #0, ## используется для обозначения всего списка аргументов, ##n обозначает списка аргументов, начиная с n-того. Значок & используется вместо ключевого слова Function после указания тела функции.
Таким образом, последнее определение эквивалентно постфиксному использованию слова Function.
10
&
funcname
//Function
1
#
2
Для определения функции с несколькими аргументами можно использовать форму Function[{x
1
, x
2
,…},body]
с использованием списка формальных параметров {x
1
,x
2
,…}
. Можно использовать и простую форму, например
???? ????_, ????_ = ????
????
+ ????
????
;
????[????, ????]
13
Есть еще способ создания функции с использованием символа отображения
(стрелки)
???? = ???? → ????
????
Function[????, ????
3
]
Здесь стрелка особая! Чтобы правильно ее набрать надо последовательно нажать комбинацию клавиш
Esc
fn
Esc
Для создания функций без побочных эффектов удобно использовать ключевое слово Module. Имена аргументов функции указываются с символом подчеркивания в левой части операции присваивания, а в правой используется список локальных имен модуля, за которым следуют выражения
Module[{имя1,имя2,...},выражение1;выражение2;...]
Например
????[????_]: = ????????????????????????[{????}, ???? = (???? + ????)^????; ???? = ????????????????????????[????]]
????[????]
1 + 3???? + 3????
2
+ ????
3
Имена переменных, использованных в первом списке справа, будут локальными переменными модуля и не будут конфликтовать с такими же именами в глобальной области рабочего пространства системы. При этом они могут рассматриваться не только как имена переменных, но и как имена локальных функций.
С использование функции
Module могут конструироваться функции многих переменных
В Mathematica есть несколько способов применить функцию к выражению. Это обычные квадратные скобки f[x], префикс f@x и постфикс x // f. Например
{????????????
????
????
, ????????????@
????
????
,
????
????
//????????????}
1 2
,
1 2
,
3 2
Префиксное и постфиксное использование имени функции используется для функций одной переменной. Для функции двух переменных возможно инфиксное (между аргументами) использование имени функции. Например
????[????_, ????_] = ???? + ????
????
2????3 11 или
11 1????2????3 14
1 2 3 4 5 6 7 8 9 ... 19
1
Доля П.Г.
Харьковский Национальный Университет механико – математический факультет
2015 г.
Mathematica для математиков.
Часть 3. Реализация основных понятий математического анализа.
В системе Mathematica реализованы все основные понятия, используемые в математическом анализе: пределы, производные, интегралы, ряды.
Предполагается, что читатель знаком с этими понятиями. В данной главе представлен обзор основных функций системы, которые выполняют операции математического анализа символьно и численно.
Примеры, приводимые в пособии, проверялись в версии пакета
Mathematica 9.0. В предыдущих версиях многие примеры работать не будут.
Особенности некоторых функций старых версий мы иногда описываем отдельно.
Оглавление
3.1 Вычисление пределов ................................................................................... 2 3.2 Дифференцирование ..................................................................................... 8 3.2.1 Создание и использование функций .................................................... 8 3.2.2 Вычисление производных и дифференциалов .................................. 11 3.2.3 Геометрические приложения производных ...................................... 16 3.3 Интегрирование ........................................................................................... 21 3.3.1 Символьное вычисление интегралов ................................................. 21 3.3.2 Численное интегрирование ................................................................. 34 3.3.3 Вычисление длин, площадей и объемов ............................................ 41 3.4 Векторный анализ ....................................................................................... 60 3.4.1 Алгебраические операции с векторами ............................................ 61 3.4.2 Дифференциальные операции векторного анализа .......................... 67 3.4.3 Криволинейные и поверхностные интегралы ................................... 78 3.4.4 Криволинейные системы координат .................................................. 88 3.4.5 Графическое представление векторных полей. ................................ 96 3.5 Ряды ............................................................................................................ 109 3.5.1 Вычисление конечных и бесконечных сумм. ................................. 109 3.5.2 Ряды Тейлора. .................................................................................... 114 3.5.3 Ряды Фурье ........................................................................................ 117
2 3.6 Поиск экстремальных значений. ............................................................. 122 3.6.1 Экстремумы дискретных наборов .................................................... 122 3.6.2 Экстремумы функций ........................................................................ 124 3.7 Приближение функций. ............................................................................ 137 3.7.1 Полиномиальная интерполяция ........................................................ 138 3.7.2 Кусочно – полиномиальная интерполяция ...................................... 139 3.7.3 Аппроксимация .................................................................................. 145 3.8 Решение прикладных задач. ..................................................................... 146 3.8.1 Физические приложения кратных интегралов. ............................... 146 3.8.2 Примеры решения задач распространения тепла ........................... 151 3.8.3 Одномерные колебания ..................................................................... 163 3.8.4 Примеры решения краевых задач для уравнение Лапласа ............ 171
Литература. ...................................................................................................... 178
Глава 3. Реализация основных понятий математического анализа в
системе Mathematica.
3.1
Вычисление пределов
Для вычисления предела используется команда Limit
????????????????????
????????????[????]
????
, ???? → ????
1
Первый аргумент - функция, для которой находится предел. Второй аргумент определяет переменную и значение, к которому она приближается. Запись x→0 читается, как "x стремится к нулю". Вычисление предела можно записать в традиционном виде.
????????????????????[????[????], ???? → ????
????
]//????????????????????????????????????????????????????????????
lim
????→????
0
????(????)
Выполним несколько примеров.
????????????????????[
???? + ???? − ???? − ????
????
, ???? → ????]
1
????????????????????[
(???? + ????)
????
− ????
????
, ???? → ????]
2
????????????????????[
????????
????
− ????
????
, ???? → ????]
Log[10]
????????????????????[????????????????[????], ???? → ????]
0
Можно вычислять пределы, когда переменная стремится к бесконечности
3
????????????????????
(???? + ????)
????
????
????
, ???? → ∞
1
????????????????????[
????
????
− ????
−????
????
????
+ ????
−????
, ???? → −∞]
-1
????????????????????[ ???? +
????
????
????
, ???? → ????????????????????????????????]
ⅇ
????
????????????????????[
???????? + ????
???????? − ????
????
, ???? → ∞]
ⅇ
????
????????????????????[ⅇ
−ⅇ
−ⅇ????
+
????
????+????
(−???? + ⅇ
ⅇ
−ⅇ????
+ⅇ
−????
+ⅇ
−????????
), ???? → ∞]
1
Можно вычислять односторонние пределы. Для этого нужно указать направление, используя опцию Direction. Следующая команда вычисляет левый предел (т.е. двигаясь из нуля направо или в положительном направлении)
???????????????????? ????????????[????], ???? →
????
????
, ???????????????????????????????????? → ????
∞
В следующем примере происходит приближение справа.
???????????????????? ???????????? ???? , ???? →
????
????
, ???????????????????????????????????? → −????
−∞
Заметим, что значение опции Direction определяет, куда вы хотите передвигаться, а не откуда вы идете. Таким образом, отрицательное значение указывает на движение в отрицательном направлении, т.е. приближении справа.
Важен только знак, не величина (вместо единицы можно написать любое число).
Направление приближения существенно при вычислении пределов разрывных функций. Например рассмотрим функцию вычисления целой части числа (наибольшего целого, не превосходящего данное)
????????????????[????????????????????[????], {????, −????, ????}]
Вычислим ее пределы в точке 2.
????????????????????[????????????????????[????], ???? → ????]
2
????????????????????[????????????????????[????], ???? → ????, ???????????????????????????????????? → ????]
1
4
????????????????????[????????????????????[????], ???? → ????, ???????????????????????????????????? → −????]
2
При стремлении переменной к конечному пределу по умолчанию вычисляется предел справа (
Direction → −1).
Предел полезен для проверки вычисления значения функции в окрестности точек разрыва. Например вычислим значение выражения
4 2
cos
1
x
x
вблизи нуля.
???? − ????????????[????
????
]
????
????
/. {{???? → ????. ????????}, {???? → ????. ????????????????????}, {???? → ????. ????????????????????????????????????????????????????????????????????????????????????????}}
{0.5,
0. , 0.50000000000000000}
В точке x=0.00001 значение функции вычислено неверно. Это произошло из-за потери точности. В той же точке, но при более высокой точности задания переменной x (третье значение в списке) происходит вычисления значения функции с более высокой точностью. Проверка значения предлом дает 0.5
????????????????????
???? − ????????????[????
????
]
????
????
, ???? → ????
1 2
График выражения также проясняет ситуацию.
????????????????[
???? − ????????????[????
????
]
????
????
, {????, −????, ????}]
Можно вычислять повторные пределы
????????????????????[????????????????????[????
????
????
????
− ????????????
????
+ ????????, ???? → ????], ???? → ????]
-927
В некоторых случаях важен порядок вычисления пределов.
????????????????????[????????????????????
????
????
????
????
????
+ ????
????
, ???? → ∞ , ???? → ∞]
∞
????????????????????[????????????????????
????
????
????
????
????
+ ????
????
, ???? → ∞ , ???? → ∞]
0
Для функций нескольких переменных можно вычислять пределы по множеству
????????????????????[
????????
????
????
+ ????
????
/. ???? → ????????, ???? → ????]
????
1 + ????
2
5
В тех случаях, когда предел не может быть вычислен, функция Limit возвращает интервал изменения значения функции в котором значение функции находится.
????????????????????[????????????[????/????], ???? → ????]
Interval[{−1,1}]
Чтобы понять, что это значит, построим график функции
????????????????[????????????
????
????
, {????, −????/????, ????/????}]
Если вычисляется предел функции, о которой нет определенной информации, то возвращается необработанный ввод.
????????????????????[????????[????], ???? → ????]
Limit[????????[????], ???? → 0]
Однако имеется опция Analytic ->True, которая гооворит функции Limit делать предположения о том, что функции общего вида, о которых нет явной информации, следует считать аналитическими (в частности считать их непрерывными с непрерывными производными любого порядка). Тогда
????????????????????[???? ????[????], ???? → ????, ???????????????????????????????? → ????????????????]
0
При вычислении пределов в функции Limit с помощью опции Assumptions можно указывать предположения относительно символьных переменных.
????????????????????[????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? < 0]
0
????????????????????[????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? > 0]
????????????????????[????
????
/????
????
, ???? → ∞, ???????????????????????????????????????????? → ???? < ???? < 1]
0
Вы можете использовать Limit для вычисления производных «реальных» функций
????[????_] = ????
????
;
????????????????????[
????[???? + ????????] − ????[????]
????????
, ???????? → ????]
4????
3
????????????????????[
????[???? + ????????] − ????????[???? + ????] + ????[????]
????
????
, ???? → ????]
12????
2
или аналитических функций общего вида
????????????????????[????];
????????????????????[
????[???? + ????] − ????[????]
????
, ???? → ????, ???????????????????????????????? → ????????????????]
????
′
[????]
6
????????????????????[
????[???? + ????????] − ????????[???? + ????] + ????[????]
????
????
, ???? → ????, ???????????????????????????????? → ????????????????]
????
′′
[????]
Сумма бесконечного числового ряда определяется как предел частичных сумм, например,
n
k
n
k
k
k
k
k
1 1
1 1
lim
1 1
. Тогда
???????? = ????????????[
????
????(???? + ????)
, {????, ????, ????}]
????????????????????[????????, ???? → ∞]
1 −
1 1 + ????
1
Определенный интеграл Римана является пределом интегральных сумм. Пусть это будет
1 0
lim
n
k
n
b
a
n
a
b
k
a
f
n
a
b
x
d
x
f
Выражение, стоящее в правой части, можно записать в виде функции
????????: = ????????????????????????????????[{????, ????, ????, ????, ????},
???? − ????
????
????????????[????[???? + ????
(???? − ????)
????
], {????, ????, ???? − ????}]];
Используя созданную функцию, можно вычислять определенный интеграл.
Например, вычислим следующий интеграл
1 0
3
x
d
x
???????? = ????????[#
????
&, ????, ????, ????, ????]
????????????????????[????????, ???? → ∞]
(−1 + ????)
2 4????
2 1
4
Или вычислим интеграл
1 0
x
d
e
x
a
???????? = ???????? ???????????? ????# &, ????, ????, ????, ???? ;
????????????????????[????????, ???? → ∞]
−1 + ⅇ
????
????
Неопределенный интеграл можно вычислять как определенный с переменным верхним пределом. Например вычислим
x
t
d
t
0 3
???????? = ????????[#
????
&, ????, ????, ????, ????];
????????????????????[????????, ???? → ∞]
????
4 4
7
Несобственный интеграл с бесконечными пределами является пределом определенного интеграла с конечными пределами, когда один (или оба) из пределов стремится к бесконечности. Например
a
x
a
x
x
d
e
x
d
e
0 3
0 3
lim
. Тогда
???????????????????? = ???????? ???????????? −????# &, ????, ????, ????, ???? ;
???????????????????? = ???????????????????? ????????????????????, ???? → ∞ ;
????????????????????[????????????????????, ???? → ∞]
1 3
Интеграл от неограниченных функций тоже вычисляется с использованием предельного перехода
????????????????????????????????[???? < ???????? < 1, ???????????????????? = ????/ ???? ⅆ????
????
????????
]
2 − 2 ep
Здесь функция Assuming накладывает ограничение на переменную ep, используемую в интеграле. В данном случае выражение (интеграл), стоящее во втором аргументе, вычисляется в предположении, что
1 0
ep
. После этого вычисляем предел
????????????????????[????????????????????, ???????? → ????]
2
Или
???????????????????????????????? ???? < ???????????? < 1, ???????????????????? =
????
???? − ????
????
ⅆ????
????????????
????
;
????????????????????[????????????????????, ???????????? → ????]
1
Конечно, функция Limit не предназначена для вычисления производных и интегралов. Для этого в системе есть более «умные» функции. С ними вы познакомитесь немного позже. Функция Limit нужна, например, для определения асимптот функций. Вот как это можно сделать.
????[????_] =
????
????
+ ???????? + ????
????????
????
+ ????
????
+ ????
;
???? = ????????????????????[
????[????]
????
, ???? → ∞]
???? = ????????????????????[????[????] − ????????, ???? → ∞]
1 2
−
1 4
????????????????[{????[????], ???????? + ????}, {????, −????, ????}, ???????????????????????????????????? → {{????????????????????, ????????????????????????????????????[????. ????????]}}]
8
Встроенная функция Limit вычисляет пределы, используя аналитические методы. Кроме нее имеется внешняя функция NLimit, выполняющая поиск предела численно с помощью последовательности значений, приближающихся к указаному предельному значению. Результат последовательного вычисления передается в процедуру, которая аппроксимирует полученные значения и возвращает предел.
????????????????????["????????????????????????????????????????????????????????????????????`"]
(В Mathematica 5 нужно загружать пакет <
????????????[????]
????
, ????−> 0 1
????????????????????????
????????
????
+ ????????????[????]
????????
????
+ ????????????[????]
, ???? → ∞
0.4
Заметим, что функция Limit может вернуть неправильный результат, если предельное значение указано приближенно, а не точно (числа с десятичной точкой рассматриваются как приближенные).
???? = ????????????????????[????????????[???? − (????????????[????????????[????]/???? − ????] + ????????????[????])/????]/????, ???? → ????????????. ]
−∞
Но ответ получается правильный, если входные значения заданы точно.
???? = ????????????????????[????????????[???? − (????????????[????????????[????]/???? − ????] + ????????????[????])/????]/????, ???? → ????????????]
1 100
Log[1 −
1 100
Log[−100 + ⅇ
100
]]
Тем не менее вычисления полученного результата с недостаточной точностью тоже неверны
????[????]
????[????, ????????]
Indeterminate
-1.0000000000000000000
3.2
Дифференцирование
3.2.1
Создание и использование функций
Операция дифференцирования применяется к функциям. Поэтому здесь будет уместно напомнить некоторые основные способы создания функций.
Простейший способ состоит в выполнении команды
????[????_]: =выражение или
????[????_] =выражение (без двоеточия)
Здесь y – имя функции (такое как Sin для функции Sin[x]). Символ подчеркивания в левой части говорит о том, что переменная x в правой части выражения является локальной. Знак := представляет отложенное присваивание, которое выполняется в тот момент, когда происходит
9 конкретное вычисление значения функции. Если используется знак = , то выполняется создание функции немедленно.
Общий способ создания функции пользователя состоит в использовании ключевого слова Function. funcname = Function[x, body]
Эта форма предназначена для определения функции с одним формальным параметром (переменной) x. Здесь funcname имя функции, такое как Sin, Log и т.д., body – выражение, определяющее правило вычисления. Например
???? = ???????????????????????????????? ????, ????
????
;
????[????]
4
Идентификатор z, стоящий слева, является именем функции, первое вхождение
х в правой части обозначает имя аргумента, затем следует выражение, описывающее правило вычисления значения функции. Выражение может состоять из нескольких выражений, разделенных точкой с запятой. Результат вычисления последнего выражения в такой последовательности будет результатом вычисления функции.
???????? = ????????????????????????????????[????, ???? = ????
????
; ???? ∗ ????????????[????]];
Можно не определять имя функции при ее создании
???????????????????????????????? ????, ????
????
;
Тогда можно использовать знак % вместо имени функции (% представляет результат выполнения последней операции в системе). Например,
%[????]
????
2
Функцию можно определить без указания имен ее аргументов. В таком случае для обращения к ним следует использовать значки #1, #2 и т.д. funcname=Function[body] где funcname имя функции, body – выражение, определяющее правило вычисления. Например,
???????? = ????????????????????????????????[#????
????
]
#1 2
&
Идентификатор #1 заменяет имя первого (и единственного) аргумента. Тогда в выражениях можно использовать f2[x] или вместо x подставлять конкретные значения f2[2].
Синонимом основного определения функции является ее постфиксное определение в виде
???????????????????????????????? = (#????
????
)&
#1 2
&
Аргумент при определении функции обозначается # (или #1, #2 и т.д.). Само имя функции обозначается #0, ## используется для обозначения всего списка аргументов, ##n обозначает списка аргументов, начиная с n-того. Значок & используется вместо ключевого слова Function после указания тела функции.
Таким образом, последнее определение эквивалентно постфиксному использованию слова Function.
10
&
funcname
//Function
1
#
2
Для определения функции с несколькими аргументами можно использовать форму Function[{x
1
, x
2
,…},body]
с использованием списка формальных параметров {x
1
,x
2
,…}
. Можно использовать и простую форму, например
???? ????_, ????_ = ????
????
+ ????
????
;
????[????, ????]
13
Есть еще способ создания функции с использованием символа отображения
(стрелки)
???? = ???? → ????
????
Function[????, ????
3
]
Здесь стрелка особая! Чтобы правильно ее набрать надо последовательно нажать комбинацию клавиш
Esc
fn
Esc
Для создания функций без побочных эффектов удобно использовать ключевое слово Module. Имена аргументов функции указываются с символом подчеркивания в левой части операции присваивания, а в правой используется список локальных имен модуля, за которым следуют выражения
Module[{имя1,имя2,...},выражение1;выражение2;...]
Например
????[????_]: = ????????????????????????[{????}, ???? = (???? + ????)^????; ???? = ????????????????????????[????]]
????[????]
1 + 3???? + 3????
2
+ ????
3
Имена переменных, использованных в первом списке справа, будут локальными переменными модуля и не будут конфликтовать с такими же именами в глобальной области рабочего пространства системы. При этом они могут рассматриваться не только как имена переменных, но и как имена локальных функций.
С использование функции
Module могут конструироваться функции многих переменных
В Mathematica есть несколько способов применить функцию к выражению. Это обычные квадратные скобки f[x], префикс f@x и постфикс x // f. Например
{????????????
????
????
, ????????????@
????
????
,
????
????
//????????????}
1 2
,
1 2
,
3 2
Префиксное и постфиксное использование имени функции используется для функций одной переменной. Для функции двух переменных возможно инфиксное (между аргументами) использование имени функции. Например
????[????_, ????_] = ???? + ????
????
2????3 11 или
11 1????2????3 14
1 2 3 4 5 6 7 8 9 ... 19
3
.2.2 Вычисление производных и дифференциалов
Любую стандартную функцию или функцию пользователя, созданную одним из приведенных выше способов можно дифференцировать. Для вычисления производны в символьной форме используются функции Derivative и D.
Функция Derivative[n][f] вычисляет n–ю производную функции f одного аргумента. Например
????????????????????????????????????????[????][????]
????
′
Вместо использования полного имени функции Derivative можно писать обычное обозначение со штрихом. Так записи
????
′
, ????′′ эквивалентны
Derivative[1][????] и Derivative[2][????]. Например
????[????_] = ????
????
;
????′[????]
????′′[????]
3????
2 6????
Функция Derivative применяется к функции (не к выражению) и возвращает функцию. Например
????[????_]: = ????
????
????????????[????]
????′
2Sin[#1]#1 + Cos[#1]#1 2
&
Результат команды
????′ является функцией. Поэтому допустима запись
????′[????]
????
2
Cos[????] + 2????Sin[????] и
????′[????/????]
????
При использовании штрихов имеются некоторые особенности, вытекающие из операторной природы функции Derivative. Следующая форма команды дифференцирования не работает.
(????
????
+ ????????????[????])′
(????
2
+ Sin[????])
′
Однако работает
((#
????
+ ????????????[#])&)′[????]
2???? + Cos[????]
Штрих должен стоять после функции как в последнем примере или после имени функции как в примерах до этого, а не после выражения! Поэтому можно писать
????????????′
−Sin[#1]&
12
????????????′[????]
−Sin[????]
Функция Derivative удобна при построения графиков производных.
????????????????[{????[????], ????′[????], ????′′[????]}, {????, −????, ????}, ???????????????????????????????????? → {????????????????????, ????????????????, ????????????}]
Общая форма функции
Derivative[n1, n2, … f] вычисляет производную f по первой переменной n
1
раз, n
2
раз по второй переменной и т.д.
???? ????_, ????_ = ???????????? ???????? ;
????????????????????????????????????????[????, ????][????][????, ????]
−6????Cos[????????] + ????
3
????
2
Cos[????????] + 6????
2
????Sin[????????]
Можно использовать запись
Derivative[-n f , которая представляет неопределенный интеграл n-го порядка
????[????_] = ????
????
;
????????????????????????????????????????[−????][????]
#1 4
4
&
????????????????????????????????????????[−????][????][????]
????
4 4
????????????????????????????????????????[−????][????][????]
????
5 20
Функция D используется для дифференцирования выражений. В формате
D[f,x] она вычисляют частную производную выражения f по переменной x.
????[????
????
, ????]
???? ????
−1+????
В формате D[f,{x,n}]вычисляется частная производная n-го порядка выражения f по переменной x.
????[????
????
, {????, ????}]
(−3 + ????)(−2 + ????)(−1 + ????)????????
−4+????
В формате D[f,x
1
,x
2
,…] вычисляется смешанная производная
,...
,
2 1
2 1
x
x
x
x
f
n
. При этом дифференцирование выполняется сначала по x
1
, потом по x
2
и т.д.
????[(????
????
+ ????
????
)
????
, ????, ????]
24 ???? ???? (????
2
+ ????
2
)
????[????_, ????_]: = ????????????[????????];
????[????[????, ????], ????, {????, ????}]
−????
2
????Cos[????????] − 2????Sin[????????]
13
Команда D[f,{{x1,x2,…}}] вычисляет вектор производных
,
,
2 1
x
f
x
f
скалярной функции f.
????[????[????, ????], {{????, ????}}]
{????
(1,0)
[????, ????], ????
(0,1)
[????, ????]}
????[(????
????
+ ????
????
)
????
, {{????, ????}}]
{4????(????
2
+ ????
2
),4????(????
2
+ ????
2
)}
Запись D[f,x] может быть заменена на
f
x
. Для ввода нужно набрать Esc–
pd–Esc, затем Ctrl–_ (подчеркивание), затем ввести x.
????
????
????????????[????]
Cos[????]
????
????
(???? ????
????
)
2???? ????
Запись D[f,x,y] может быть записана в виде
f
y
x,
. Вводить надо также как предыдущий символ
f
x
. При этом запятую нужно вводить, но она может быть невидимой. Для ввода невидимой запятой нужно набрать комбинацию клавиш
Esc–,(запятая)–Esc.
????
???? ????
(????
????
+ ????
????
)
????
(* невидимая запятая *)
24 ???? ???? (????
2
+ ????
2
)
????
????,????,????
????????????[????????] (* видимые запятые *)
−????????
2
Cos[????????] − 2????Sin[????????]
Построим для примера таблицу производных функции
????[????_] = ????
????
+ ????????????[????];
????????????????[????????????????????[{????????????????????????????????[????] <> " − я", ????
{????,????}
????[????]}, {????, ????}], ???????????????????? → ????????????]
Вы можете дифференцировать неопределенные функции. Вот, например, правило дифференцирования сложной функции
????
????
????[????[????]]
????
′
[????[????]]????
′
[????]
Вот формула дифференцирования произведения трех функций
????
????
(????[????]????[????]????[????])
????[????]????[????]????
′
[????] + ????[????]????[????]????
′
[????] + ????[????]????[????]????
′
[????]
Если какая – либо переменная неявно зависит от переменной дифференцирования, то это можно указать с помощью опции NonConstants.
Например,
14
????[????
????
+ ????
????
, ????, ???????????????????????????????????????????????? → ????]
3????
2
+ 3????
2
????[????, ????, NonConstants → {????}]
Эту опцию можно использовать, чтобы имитировать дифференцирование функции, заданной неявно
???????? = ????[????
????
+ ????
????
== ????, ????, ???????????????????????????????????????????????? → ????]
3????
2
+ 3????
2
????[????, ????, NonConstants → {????}] == 0
???????? = ????????/. {????[????, ????, ???????????????????????????????????????????????? → {????}] → ????′}
3????
2
+ 3????
2
????
′
== 0
????????????????????[????????, ????′]
{{????
′
→ −
????
2
????
2
}}
Функция Dt[f] вычисляет полный дифференциал выражения f.
????????[????
????
????
????
]
2????????
3
Dt[????] + 3????
2
????
2
Dt[????]
Функция Dt[f,x]вычисляет полную производную
x
d
f
d
/
выражения f, полагая, что другие параметры могут зависеть от переменной x.
????????[????
????
, ????]
????
????
????
????
+ Dt[????, ????]Log[????]
????????[????????????[???? ????], ????]
Cos[????????](???? + ????Dt[????, ????])
Можно сказать, что команда D[f,x]аналогична записи
x
f
/
, а команда
Dt[f,x] аналогична записи
x
d
f
d
/
Вторая полная производная выглядит несколько сложнее.
????????[????
????
????
????
, {????, ????}]
2????
3
+ 12????????
2
Dt[????, ????] + ????
2
(6????Dt[????, ????]
2
+ 3????
2
Dt[????, {????, 2}])
Если в определении функции содержатся какие – либо константы, то их производные равняются нулю. Функции Dt это можно указать с помощью опции Constants, в значении которой перечислить имена этих констант.
Например,
????????[???? ???? ???? + ????????????[???? ????], ????, ???????????????????????????????????? → {????, ????}]
???? ???? + ???? Cos ???? ???? + ???? ???? Dt[????, ????, Constants → {????, ????}]
Полная производная функции одной переменной совпадает с ее частной производной
????????[????????????[????], ????] == ????[????????????[????], ????]
True
Используя приведенные функции, можно решать классические задачи математического анализа. Например, можно построить частичную сумму ряда
Тейлора
???????? = ????????????????????[????[????????????[???? + ????], {????, ????}]/????!, {????, ????, ????}]/. {???? → ????}
{0,1, −
1 2
,
1 3
, −
1 4
,
1 5
, −
1 6
,
1 7
, −
1 8
}
15
????????????[????????[[????]]????
????−????
, {????, ????, ????}]
???? −
????
2 2
+
????
3 3
−
????
4 4
+
????
5 5
−
????
6 6
+
????
7 7
Можно находить точки экстремума
????????????????????[????]
????[????_] = ???? ????
????
+ ????????
????
− ????????????
????????????????[????[????], {????, −????, ????}, ???????????????????????????????????? → ????????????]
????????????????????[????[????[????], ????] == ????, ????]
{{???? → −3}, {???? → 2}}
И точки перегиба
????????????????????[????[????[????], {????, ????}] == ????, ????]
{{???? → −
1 2
}}
Использование производных иногда полезно для доказательства функциональных тождеств. Хорошо известен следующий факт. Если две функции
x
f
и
x
g
определены и непрерывны в промежутке
и внутри него имеют конечные производные
x
g
x
f
'
,
'
, причем
x
g
x
f
'
'
внутри
, то эти функции во всем промежутке
разнятся лишь на постоянную:
const
C
C
x
g
x
f
Пример. Рассмотрим две функции
x
arctg и
2 1
arcsin
x
x
x
Вычислим их производные.
????????[????_] = ????????????????????????[????];
????????[????_] = ????????????????????????[
????
???? + ????
????
];
????????′[????]
1 1 + ????
2
????????????????????????????????[????????′[????], ???????????????????????????????????????????? ⧴ ???? ∈ ????????????????????]
1 1 + ????
2
Производные совпадают во всем промежутке
x
и, следовательно, эти функции во сем промежутке разнятся на постоянную, которую можно определить в произвольной точке, например, при
0
x
. Имеем
???????????????????? = ????????[????] − ????????[????]
0
Т.о.
2 1
arcsin
x
x
x
arctg
x
□
16
Для численного определения значения производной в точке предназначена функция ND. Она находится в пакете расширений NumericalCalculus (в
Mathematica 5 в пакете <
В формате ND[expr,x,x
0
] функция выполняет численную апроксимацию первой производной по x в точке x
0
????????[????????????[????????????[????]], ????, ????]
−1.03312
В формате
ND[expr,{x,n},x
0
] функция выполняет численную апроксимацию n – ой производной в точке x
0
????????[????????????????[????], {????, ????}, ????]
2.
ND полезна при вычислении производных функций, заданных численно.
???????????????????????? = {{????, ????}, {????, ????}, {????, ????}, {????, ????}, {????, ????}, {????, ????}};
???????????????? = ????????????????????????????????????????????????????[????????????????????????]
????????????????[????. ????]
????????????????[????????????????[????], {????, ????, ????}, ???????????????????????? → {????????????????????????????????????[????. ????????], ????????????[????????????????????, ????????????????????????]}]
InterpolatingFunction[{{0,5}}, " <> "]
3.6875
Функция
Interpolation строит интерполяционную функцию, определяемую списком points. Используя функцию ND, можно вычислять значение производной в конкретных точках.
????????[????????????????[????], ????, ????]
1.83333
Однако, объект InterpolatingFunction, созданный функцией Interpolation является «настоящей» функцией и его можно дифференцировать символьно.
????[????????????????[????], ????]/. ???? → ????.
1.83333
Производную в точке можно было бы вычислить по – другому так
????????????????′[????. ]
1.83333
Функция ND, в отличие от D, умеет вычислять односторонние производные.
Подробнее с ней вы можете познакомиться по справочной системе.
3
.2.3 Геометрические приложения производных
Из курсов математического анализа известно, что значение производной в точке рано тангенсу наклона касательной к графику функции в этой точке.
Уравнение касательной к кривой, заданной явно
x
f
y
, в точке
0
x
имеет вид
0 0
0
'
x
x
x
f
x
f
y
17
Пример. Касательная к графику функции
x
y
sin
????????????????????????????????????????????????????[{????, ????????},
???? ????_ ≔ ???????????? ???????? ;
???????? ????_, ????????_ ≔ ???? ???????? + ????
′
???????? ???? − ???????? ;
????????????????????????????????????????[
????????????????[{????[????], ????????[????, ????????]}, {????, −????. ????, ????. ????},
???????????????????????????????????? → −????. ????, ????. ???? , −????, ???? ,
???????????????????????????????????? → ????????, ????
′
???????? ,
???????????????????????????????????? → {{????????????, ????????????????????????????????????[????. ????????]}, {????????????????, ????????????????????????????????????[????. ????????]}}],
{{????????, ????}, −????, ????}]]
Перемещая ползунок, вы будете менять точку касания x
0
и, соответственно будет перерисовываться касательная, а в заголовке графика будет отображаться текущее значение x
0
точки касания и значение производной в этой точке.
□
Пусть кривая задана неявным уравнением
0
,
y
x
F
и точка
0 0
, y
x
принадлежит кривой. Уравнение касательной к кривой в этой точке имеет вид
0
,
'
,
'
0 0
0 0
0 0
y
y
y
x
F
x
x
y
x
F
y
x
, а уравнение нормали
0
,
'
,
'
0 0
0 0
0 0
x
x
y
x
F
y
y
y
x
F
y
x
Пример. Касательная и нормаль к эллипсу, заданному неявным уравнение
????????????????????????????????????????????????????[{???? = ????, ???? = ????, ????????, ????????, ????????, ????????????, ????????????, ????????????, ????????????, ????????????},
???????????? ????_, ????_ =
????
????
????
????
+
????
????
????
????
− ????;
???????????? ????????_, ????????_ = ???????????????????????????????????????? ????, ???? ???????????? ????????, ???????? ???? − ???????? +
???????????????????????????????????????? ????, ???? ???????????? ????????, ???????? ???? − ???????? ;
???????????? ????????_, ????????_ = ???????????????????????????????????????? ????, ???? ???????????? ????????, ???????? ???? − ???????? −
???????????????????????????????????????? ????, ???? ???????????? ????????, ???????? ???? − ???????? ;
???????????? = ????????????????????????????????????????????[????????????[????, ????] == ????,
{????, −???? − ????, ???? + ????}, {????, −???? − ????, ???? + ????},
???????????????????????????????????????????????? → {????????????????????, ????????????????????????????????????[????. ????????]}];
????????????????????????????????????????[ ???????? = ????????????????[????????]; ???????? = ????????????????[????????];
???????????? = ????????????????????????????????????????????[{????????????[????????, ????????] == ????, ????????????[????????, ????????] == ????},
????, −???? − ????, ???? + ???? , ????, −???? − ????, ???? + ???? ,
???????????????????????????????????????????????? → {{????????????????, ????????????????????????????????????[????. ????????]},
{????????????, ????????????????????????????????????[????. ????????]}}];
???????????????? ????????????, ????????????, ???????????????????????????????????? → ????????, ???????? , ???????????????????????????????????????????? → ???????????????????????????????????? ,
{{????????, ????/????}, ????, ????????}]]
18
Положение ползунка определяет точку на эллипсе, в которой строятся касательная и нормаль. В заголовке графика отображаются текущие координаты точки.
□
Единичный касательный вектор к плоской кривой, заданной параметрически
t
y
y
t
x
x
,
, в точке
0
t
t
равен
2 0
2 0
0 2
0 2
0 0
'
'
'
,
'
'
'
,
t
y
t
x
t
y
t
y
t
x
t
x
T
T
y
x
T
Тогда касательная к кривой в точке
0
t
t
может быть представлена уравнениями
t
T
t
x
t
x
x
0
;
t
T
t
y
t
y
y
0
Единичный вектор нормали к кривой в точке
0
t
t
равен
,
x
y
T
T
N
Тогда уравнение нормали в этой точке можно записать в виде
t
T
t
x
t
x
y
0
;
t
T
t
x
t
y
x
0
Пример. Касательная и нормаль к эллипсу, заданному параметрически.
????????????????????????????????????????????????????[{???? = ????, ???? = ????, ????????, ????????, ????????, ????, ????, ????????, ????????, ????????, ????????, ????????, ????????, ????????},
???? ????_ , ???? ????_ = ???????????????? ???? , ???????????????? ???? ;(* радиус-вектор *)
???????? ????_ , ???????? ????_ =
????
′
???? , ????
′
????
????
′
????
????
+ ????
′
????
????
;(* единичный вектор касательной *)
???????? ????_, ????????_ = ???? ???????? + ???????? ???????? ????;(* уравнение касательной *)
???????? ????_, ????????_ = ???? ???????? + ???????? ???????? ????;
???????? ????_, ????????_ = ???? ???????? − ???????? ???????? ????;(* уравнение нормали *)
???????? ????_, ????????_ = ???? ???????? + ???????? ???????? ????;
????????????????????????????????????????[
???????? = ???????????????????????????????????????????????????????? ???? ???? , ???? ???? , ????, ????, ???????? ;
???????? = ???????????????????????????????? ????????????????????, ???????????????????????????????????? ????. ???????? , ???????????????????? ???? ???????? , ???? ???????? ;
???????? = ????????????????????????????????[{
????????????????, ???????????????????????????????????? ????. ???????? , ???????????????????? ???? ???????? , ???? ???????? , ???????? ????, ???????? , ???????? ????, ???????? ,
{????????????, ????????????????????????????????????[????. ????????], ????????????????????[{{????[????????], ????[????????]}, {????????[????, ????????], ????????[????, ????????]}}]}}];
????????????????[????????, ????????, ????????, ???????????????????????????????????? → {{−????, ????}, {−????, ????}},
???????????????????????????????????? → {????[????????], ????[????????]}],
{????????, ????, ????????}]]