Файл: Mathematica для математиков. Часть Реализация основных понятий математического анализа.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 282
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
36
????????????????????????????????????????[????
????
, {????, ????, ????}]
????????????????[????^????, {????, ????, ????}, ???????????????????????????????????? → {{????, ????}, {????, ????}}]
2.83388
Можно численно находить интеграл на бесконечном участке вещественной оси
????????????????????????????????????????[
????
???? + ????
????
, {????, ????, ∞}]
1.5708
Численное интегрирование можно выполнять по конечному или бесконечному отрезку в комплексной плоскости.
????????????????????????????????????????[ ????, {????, ????, ???? − ????}]
3.79214 − 2.21131ⅈ
Обычно второй аргумент функции NIntegrate имеет вид короткого списка
{x,x min
,x max
}
. Но для подынтегральных выражений с особенностями его можно задавать в виде {x,x
0
,x
1
,...,x n
}
. В этом случае выполняется проверка наличия особенности в каждой из внутренних точек x
i
. Если особенностей нет, то результат эквивалентен интегралу от x
0
до x
n
????????????????????????????????????????[????/????????????????[????], {????, −????, ????}]
Numerical integration converging too slowly...
????????????????????????????????????????[????/????????????????[????], {????, −????, ????, ????}]
2. -2.
Числа x,x
0
,x
1
,...,x n
могут быть комплексными и тогда интеграл будет представлять интеграл по ломаной в комплексной плоскости.
???? ????_ =
???? − ⅇ
????
+ ????
????
????
???? − ????
????
;
????????????????[????????????????????????????????????????[????[????], {????, ???? − ????????, ???? + ????????, −???? + ????, −???? − ????, ???? − ????????}]]
0. −0.398582 ⅈ
Функция Chop[expr] заменяет нулем в выражении expr все близкие к нулю числа, поскольку обычно они являются погрешностью вычислений.
Контур, по которому выполнено интегрирование, показан на следующем рисунке.
???????? = {????????[#], ????????[#]}&/@{2 − 2????, ???? + ????????, −???? + ????, −???? − ????, ???? − ????????}
????????????????[????????????????????????????????@????????????????@????????, ???????????????? → ????????????????]
{2, −2}, {3,2}, {−3,1}, {−1, −1}, {2, −2}}
37
Можно численно интегрировать по контуру на комплексной плоскости. В следующем примере вычисляется интеграл
C
z
d
z 1 1
, где C – окружность радиуса 2 с центром в начале координат.
????????????????[????????????????????????????????????????[
ⅈ ???? ????????????[ⅈ ????]
???? ????????????[ⅈ ????] + ????
, {????, ????, ????????}]]
0.+6.2831853
Можно интегрировать списки выражений
????????????????????????????????????????[{????, ????
????
, ????
????
}, {????, ????, ????}]
{0.5,0.33333333,0.25}
Функция NIntegrate умеет вычислять повторные интегралы.
????????????????????????????????????????[????????????[−????
????
+ ????], {????, ????, ∞}, {????, ????, ????}]
1.5227876
Внутренний список
{????, ????, ∞}определяет внешний интеграл. Последним указывается интервал изменения той переменной, интегрирование по которой выполняется в первую очередь. При этом пределы интегрирования могут зависеть от переменной внешнего интеграла. Например, площадь единичного круга можно вычислить с помощью следующего интеграла
????????????????????????????????????????[????, {????, −????, ????}, {????, − ???? − ????
????
, ???? − ????
????
}]
3.1415927
В следующем примере мы вычисляем трехкратный интеграл с особенностью в начале координат
????????????????????????????????????????[
????
????
????
+ ????
????
+ ????
????
, {????, ????, ????}, {????, ????, ????}, {????, ????, ????}]
1.19004
Можно выполнять численное интегрирование по области. В следующем примере мы вычисляем площадь области эллиптического кольца с параболическим вырезом.
????????????????????????????????????????[????????????????????[???? ≤
????
????
????
+
????
????
????
≤ ???? && ???? < ????
????
], {????, −????, ????}, {????, −????, ????}]
????????????????????????????????????????[???? ≤
????
????
????
+
????
????
????
≤ ???? && ???? < ????
????
, {????, −????, ????}, {????, −????, ????}]
49.7429
У функции NIntegrate имеются опции, которые управляют точностью вычислений.
AccuracyGoal определяет абсолютную погрешность вычислений, используя количество значащих цифр.
Значение по умолчанию
38
AccuracyGoal
→ ∞ говорит, что эта опция не должна использоваться как критерий прекращения вычислений (т.е. будут использоваться другие опции).
Когда значение интеграла равно нулю функция NIntegrate возвращает сообщение о медленной сходимости алгоритма. В такой ситуации требуется установка опции AccuracyGoal в значение, отличное от установленного по умолчанию (от Infinity) и критерием остановки вычислений будет абсолютная погрешность.
????????????????????????????????????????[????????????[????], {????, ????, ????????}]
Numerical integration converging too slowly; suspect one of the following: singularity, value of the integration is 0, ...
Но
????????????????????????????????????????[????????????[????], {????, ????, ????????}, ???????????????????????????????????????????????? → ????]
-2.886686˟10
-16
PrecisionGoal определяет
«относительную погрешность» вычислений и задается количеством значащих цифр;
PrecisionGoal → ∞ указывает, что эта опция не будет использоваться как критерий прекращения вычислений (будет использоваться опция AccuracyGoal). Для опции
PrecisionGoal мы используем не совсем корректный термин
«относительная погрешность». PrecisionGoal->n определяет для значения x погрешность вычислений равную
n
x
10
. Когда включены опции
AccuracyGoal->m и PrecisionGoal->n, то Mathematica пытается выполнять вычисления величины x с погрешностью не более
n
m
x
10 10
Опция WorkingPrecision определяет количество значащих цифр, используемых во внутренних вычислениях; значение этой опции, как правило, должно быть больше значения опции AccuracyGoal; установка
WorkingPrecision->MachinePrecision приводит к вычислениям с процессорной точностью.
????????????????????????????????????????[
????
???? + ????
, {????, ????, ????}, ???????????????????????????????????????????????????? → ????????, ???????????????????????????????????????????????????????????????? → ????????]
0.6137056388801093811655357570836468638990
Функция NIntegrate выполняет разбиение участка интегрирования до тех пор, пока ошибка вычислений выбранного ею метода не станет меньше погрешности, определяемой опциями AccuracyGoal и PrecisionGoal.
Функция NIntegrate использует адаптивные алгоритмы с автоматическим выбором шага интегрирования. Эти алгоритмы сами, если это требуется, рекурсивно дробят отрезки разбиения области интегрирования в местах быстрого изменения функции. Опция MinRecursion, определяет количество шагов дробления отрезков разбиения, с которого начинаются вычисления. Опция MaxRecursion определяет максимальное количество шагов дробления.
Рассмотрим пример. Функции NIntegrate может пропустить участки быстрого возрастания подынтегрального выражения. Вот пример такой функции.
39
????????????????[????????????[−????????????????
????
], {????, −????????, ????????}, ???????????????????????????????????? → {????, ????}, ???????????????????????????????????????? → ????????????????]
????????????????????????????????????????[????????????[−????????????????
????
], {????, −????????, ????????}]
NIntegrate failed to converge to prescribed accuracy after 9 recursive bisections ...
Увеличив значение опция MinRecursion, можно вынудить функцию
NIntegrate в самом начале делать более мелкое дробление участков разбиения.
????????????????????????????????????????[????????????[−????????????????
????
], {????, −????????, ????????}, ???????????????????????????????????????????????? → ????]
0.177245
По умолчанию установлено MinRecursion->0. Опция MaxRecursion→n определяет, что рекурсивно можно дробить отрезки разбиения n раз.
Рекурсивное/многократное деление выполняется только на тех участках, где значения функции быстро изменяются и для достижения требуемой точности длина отрезков разбиения должна быть уменьшена.
Опция MaxPoints ограничивает количество точек разбиения интервала интегрирования.
Опция Exclusions позволяет исключить из рассмотрения некоторые особые точки (кривые или поверхности для кратных интегралов) из области интегрирования.
????????????????????????????????????????[????????????[???? − ????], {????, ????, ????}]
Numerical integration converging too slowly; suspect one of the following: singularity,...
????????????????????????????????????????[????????????[???? − ????], {????, ????, ????}, ???????????????????????????????????????? → {????}]
-1.2274113+6.2831853
В функции NIntegrate реализовано много различных алгоритмов численного интегрирования. Обычно NIntegrate сама выбирает метод.
Однако иногда вы будете задавать метод с помощью опции Method. Мы не ставим перед собой задачу изложения всех методов, используемых этой функцией. С ними вы можете познакомиться по справочной системе.
В частности, если вы хотите численно найти главное значение интеграла, то следует использовать опцию Method"PrincipalValue".
????????????????????????????????????????[
????
????
, {????, −????, ????}, ???????????????????????? → "????????????????????????????????????????????????????????",
???????????????????????????????????????? → ???? == ????, ???????????????????????????????????????????????? → ????]
0.69314718
Попробуйте удалить хотя бы одну из опций предыдущего примера и вы не поучите результат или получите предупреждение системы о медленной сходимости.
Опцией EvaluationMonitor задается выражение, которое вычисляется каждый раз, когда вычисляется подынтегрального выражение. В
40 следующем примере определяется количество точек, использованных при численном интегрировании
????????????????????[{???? = ????}, {????????????????????????????????????????[????
????
, {????, ????, ????}, ???????????????????????????????????????????????????????????????????? ⧴ ???? + +], ????}]
{4.,11}
Функция Block[{x=x
0
,y=y
0
,...},expr] в ыполняет блок кода с локальными переменными x,y,..., для которых заданы начальные значения
x
0
, y
0
и т.д.
Значение интеграла равно 4 и использовано всего 11 точек. Можно даже узнать эти точки.
????????????????????[{???? = {}}, {????????????????????????????????????????[????
????
, {????, ????, ????},
???????????????????????????????????????????????????????????????????? ⧴ (???? = ????????????????[????, {????}])], ????}]
{4.,
{0.01591464,0.093820154,0.24583327,0.46153069,0.72036959,
1.,1.2796304,1.5384693,1.7541667,1.9061798,1.9840854}}
Те же действия можно выполнить командой
???? = ????????????????[????????????????????????????????????????[????
????
, {????, ????, ????}, ????????????????????????????????????????????????????????????????????: > ????????????[????]]]
{4.,
{{0.01591464,0.093820154,0.24583327,0.46153069,0.72036959
,1.,1.2796304,1.5384693,1.7541667,1.9061798,1.9840854}}}
Функция Sow[выражение] «сеет» значения выражения, которые «собираются» ближайшей охватывающей функцией Reap[expr], которая также возвращает значение выражения expr.
Можно построить график значений этих точек (следующий рисунок слева)
????????????????????????????????[????[[????, ????]], ????????????????????????????????????−> ????????????, ????????????????????????????????????−> ????????????????????????????????????[0.0????]]
или показать, как эти точки расположены на отрезке интегрирования
(предыдущий рисунок справа)
???????? = ????????????????????????????????????[{????[[????, ????]], ????????????????????????????????????????????????????[????, ????????????????????????[????[[????, ????]]]]}]
{{0.01591464,0},{0.093820154,0},{0.24583327,0},
{0.46153069,0},{0.72036959,0},...,{1.9840854,0}}
????????????????????????????????[????????, ????????????????????????????????????−> ????????????????????????????????????[0.0????]]
Для несобственного интеграла точек разбиения много больше
????????????????????[{???? = ????}, {????????????????????????????????????????[
????
????
, {????, ????, ????}, ???????????????????????????????????????????????????????????????????? ⧴ ???? + +], ????}]
{2.,131}
Следующий график поясняет как функция NIntegrate размещает точки разбиения
???????? = ????????????????[????????????????????????????????????????[????/????????????????[????], {????, −????, ????, ????},
????????????????????????????????????????????????????????????????????: > ????????????[????]]];
????????????????????????????????[????????[[????, ????]], ????????????????????????????????????−> ????????????]
41
По горизонтали отложены номера точек, а по вертикали – координаты точек на оси X. По графику можно проанализировать стратегию выбранного функцией
NIntegrate метода. Первые 20
точек размещаются более менее равномерно на отрезке [-1, 1]. Следующие
50
точек размещаются на отрезках интегрирования, образуемых первыми точками. На следующем шаге функция
NIntegrate разбивает отрезки из интервала (-0.5, 0.5). Потом разбиваются отрезки из интервала (-0.25, 0.25). Далее функция NIntegrate выполняет еще несколько шагов, дробя отрезки интегрирования, расположенные в окрестности нуля.
1 2 3 4 5 6 7 8 9 ... 19
3.3.3
Вычисление длин, площадей и объемов
Длина кривой.
Длина дуги плоской кривой, заданной явным уравнением
x
y
y
в декартовых координатах, вычисляется по формуле
x
d
x
y
L
x
x
1 0
2
'
1
,
(1) где x
0
и x
1
определяют начальную и конечную точки дуги.
Пример. Длина цепной линии
a
x
ch
a
y
???????????????????? ????, ????, ????, ???? ;
???? ????_ = ????????????????????
????
????
;
???? = ????????????????????????????????????[ ???? + ????[????[????], ????]
????
, {????, ????, ????}, ???????????????????????????????????????????? ⧴ {???? ∈ ????????????????????, ???? > 0}]
???? Sinh
????
????
???? = ????; ????????????????[????[????], {????, −????, ????}, ???????????????????????????????????? → {????, ????}]
Длина дуги плоской кривой, заданной в параметрическом виде
t
y
y
t
x
x
,
, вычисляется по формуле
t
d
t
y
t
x
L
t
t
1 0
2 2
'
'
(2) где t
0
и t
1
– значения параметра t в начальной и конечной точках дуги.
42
Пример. Длина астроиды
t
a
y
t
a
x
3 3
sin
,
cos
,
2 0
t
????????????????????[????, ????, ????]
????[????_] = ????????????????[????]
????
;
????[????_] = ????????????????[????]
????
;
???? = ????????????????????????????????????[ ????[????[????], ????]
????
+ ????[????[????], ????]
????
, {????, ????, ????????}, ???????????????????????????????????????????? ⧴ ???? > 0]
6 a
???? = ????; ????????????????????????????????????????????????????????[{????[????], ????[????]}, {????, ????, ????????}]
Пример. Длина циклоиды
t
a
y
t
t
a
x
cos
1
,
sin
,
2 0
t
????????????????????[????]
???? ????_ = ???? ???? − ???????????? ???? ;
???? ????_ = ???? ???? − ???????????? ???? ;
???? = ????????????????????????????????????[ ????[????[????], ????]
????
+ ????[????[????], ????]
????
, {????, ????, ????????}, ???????????????????????????????????????????? ⧴ ???? > 0]
8 a
???? = ????; ????????????????????????????????????????????????????????[{????[????], ????[????]}, {????, ????, ????????}]
Пример. Длина дуги эллипса.
????????????????????[????, ????, ????, ????, ????]
????[????_] = ???? ????????????[????];
????[????_] = ???? ????????????[????];
В следующей строке кода мы выполняем преобразование подынтегрального выражения
2 2
'
'
t
y
t
x
к виду, с которым может «справиться» функция
Integrate (вычитаем и добавляем
2
a , делим на
2
a под корнем, умножаем корень на a, множитель
2 2
/
1
a
b
обозначаем
2
p ).
???????? = ???? ????????????????????????????????[
????????????????????????????????[????[????[????], ????]
????
+ ????[????[????], ????]
????
− ????
????
] + ????
????
????
????
]/. {(−???? +
????
????
????
????
) → −????
????
}
???? 1 − ????
2
Sin[????]
2
Величина
2 2
/
1
a
b
p
называется эксцентриситетом эллипса, если b меньшая его полуось. Вычисляя длину дуги эллипса от верхнего конца малой оси до любой его точки в первом квадранте, получим
????????????????????????????????????[????????, {????, ????, ????}, ???????????????????????????????????????????? ⧴ {???? < ???? < 1, ???? < ???? < ????}]/. ????
????
→ ???? −
????
????
????
????
???? EllipticE ????, 1 −
????
2
????
2
43
Здесь мы вернулись к прежним обозначениям. Т.о. длина дуги эллипса выражается эллиптическим интегралом 2-го рода; этот факт послужил поводом для самого названия «эллиптический».
Длина всего обвода эллипса равна
???? = ????????????????????????????????????[????????, {????, ????, ????????}, ???????????????????????????????????????????? ⧴ {???? < ???? < 1}]/. ????
????
→ ???? −
????
????
????
????
4 ???? EllipticE 1 −
????
2
????
2
(* полный эллиптический интеграл *)
Численное значение длины эллипса получается использованием функции N.
???? = ????; ???? = ????; ????[????]
9.6884482
Длина дуги кривой, заданной в полярных координатах уравнением
r
r
, вычисляется по формуле
1 0
2 2
'
d
r
r
L
(3) где φ
0
и φ
1
– значения углового параметра φ в начальной и конечной точках дуги.
Пример. Длина логарифмической спирали
m
e
a
r
???????????????????? ????, ????
???? ????_ = ???? ???????????? ???? ???? ;
???? = ????????????????????????????????????[ ????[????]
????
+ ????[????[????], ????]
????
, {????, ????, ????}, ???????????????????????????????????????????? ⧴ {???? > 0, ???? > 0}]
????(−1 + ⅇ
????????
) 1 + ????
2
????
???? = ????; ???? = ????. ????; ????????????????????????????????????[????[????], {????, −????????, ????????}]
Длина
дуги
пространственной
кривой,
заданной
параметрически
t
z
z
t
y
y
t
x
x
,
,
, вычисляется по формуле
t
d
t
z
t
y
t
x
L
t
t
1 0
2 2
2
'
'
'
(4) где t
0
и t
1
– значения параметра t в начальной и конечной точках дуги.
Пример. Длина винтовой линии
t
c
z
t
a
y
t
a
x
,
sin
,
cos от точки
0
t
до точки
T
t
будет равна
????????????????????[????, ????, ????, ????, ????]
{????[????_], ????[????_], ????[????_]} = {???? ????????????[????], ???? ????????????[????], ????????};
???? = ????????????????????????????????????[ ????[????[????], ????]
????
+ ????[????[????], ????]
????
+ ????[????[????], ????]
????
, {????, ????, ????}]
????
2
+ ????
2
????
44
Площадь плоской фигуры.
Геометрический смысл определенного интеграла
b
a
x
d
x
f
состоит в том, что он представляет площадь под кривой
x
f
y
при
b
x
a
Пример. Найдем площадь фигуры, ограниченной сверху параболой
2 9
x
y
, а снизу осью абсцисс. Для этого решим уравнение
0 12 2
x
x
и найдем точки, в которых парабола пересекается с осью абсцисс.
????[????_] = −????
????
+ ???? + ????????;
{????????, ????????} = ????/. ????????????????????[????[????] == ????, ????]
????????????????[????[????], {????, ????????, ????????}, ???????????????????????????? → ????????????????]
{-3,4}
Теперь вычисляем площадь
???? = ????????????????????????????????????[????[????], {????, ????????, ????????}]
343 6
Пример. Даны эллипс
1 2
2 2
2
b
y
a
x
и точка
y
x
M
,
на нем. Определить площадь криволинейной трапеции BOKM и сектора OMB.
Из уравнения эллипса имеем
????[????_] =
????
????
????
????
− ????
????
;
???????????????????? = ????????????????????[????????????????????????????????????[????[????], {????, ????, ????},
???????????????????????????????????????????? ⧴ {???? > 0, ???? > 0, ???? < ???? < ????}]]
???? ???? ????
2
− ????
2 2 ????
+
1 2
???? ???? ArcSin
????
????
Но
????????????????????/. {
????
????
????
????
− ????
????
→ ????}
???? ????
2
+
1 2
???? ???? ArcSin[
????
????
]
Так как первое слагаемое представляет площадь OKM
, то, отнимая ее, для площади сектора получим выражение
a
x
b
a
S
OMB
arcsin
2
. При
a
x
для площади четверти эллипса находим значение
4
b
a