Вычисление интегралов -
привлекательная возможность системы Mathematica 4.
Однако при этом важно понимать, как выполняется
это тонкое действие. Начнем с вычисления
определенных интегралов вида
Здесь f(x) - подынтегральная функция, a-
нижний предел интегрирования, b- верхний предел
интегрирования и x - переменная, по которой
производится интегрирование. Зададим простую
функцию f(x)=x^2.
Исторически под интегралом
понималась площадь m прямоугольников, высоты
левых граней у которых равны значениям функции.
Это соответствует затемненной площади на
следующем рисунке (m=4, a=1, b=3).
Такой способ приближенного
вычисления интеграла сейчас известен как способ
интегрирования методом прямоугольников. При
числе прямоугольников m=10 (можно выбрать любое m) m
он реализуется следующим образом:
Заметим, что точное значение
интеграла равно 8.6667, таким образом простейший
метод прямоугольников дает большую погрешность
(примерно 1/m). Можно усовершенствовать метод, беря
для высот прямоугольников отсчеты функции в
середине каждого прямоугольника. Графически это
иллюстрирует следующий рисунок:
Такой метод интегрирования
называется модифицированным методом
прямоугольников. Ниже дан пример его реализации:
Здесь погрешность вычисления
стала меньше, но попрежнему значительна. Она
уменьшается с ростом m,что иллюстрирует
следующий пример:
Мы можем продолжать улучшение
методов интегрирования. К примеру можно
вычислять интегралы методом трапеций, используя
кусочно-линейную аппроксимацию f(x), методом
Симсона (параболическая аппроксимация f(x) на
каждых смежных трех точках) и т. д. Описание этих
методов можно найти в литературе по численным
методам. Чаще всего на практике используется
метод Симпсона. Он не очень сложен и дает вполне
приемлемую точность. Однако, при описании
возможностей интегрирования в системе Mathematica
все эти методы имеют исключительно
иллюстративное значение. Ибо встроенные функции
интегрирования системы Mathematica реализуют
лучшие из адаптивных методов интегрирования, для
которых указанные выше методы являются частными
случаями.
Геометрически значение определенного
интеграла представляет собой площадь,
ограниченую кривой f(x), осью x и вертикалями c x=a и
y=b. Это иллюстрирует приведенный ниже рисунок, в
котором функция f(x) задает параболу,смещенную
вниз, а пределы a=1.5 и b=3.5.
В общем случае площадь, дающая
значение интеграла, вычисляется алгебраически,
т.е как разность площадей сегментов над осью x и
площадей сегментов под осью x (при этом площадь
может быть и отрицательной).
Теперь вычислим определенный интеграл
для функции f(x) в общем случае и при заданных
пределах интегрирования a и b:
Мы получили аналитическое
выражение для определенного интеграла. Задав
конкретные a и b можно вычислить интеграл как
число:
Разумеется после задания
конкретных пределов интеграл также вычисляется
как число
Для получения обычного численного
значения интеграла (в виде десятичного
вещественного числа) можно использовать функцию
N:
Обратите внимание и на такой
пример:
Для вычисления данного интеграла (да и
других) можно использовать функции:
Функция Integrate дает аналитическое
значение интеграла, если оно существует, тогда
как функция NIntegrate, эквивалентная N[Integrate[f[x],{x,a,b}]],
дает численное значение интеграла.
Итак, мы убедились в том, что
определенный интеграл с постоянными пределами
интегрирования это число.Но, один или оба предела
интегрирования могут быть функциями. Ниже дан
пример, когда определенный интеграл задается как
функция вспомогательной переменной y:
Здесь интересно и задание функции
пользователя fun[y], которая выражается через
интеграл. Может быть построен график этой
функции.
Приведем еще один пример, в
котором оба предела интегрирования являются
функциями переменной y:
А следующий пример показывает
случай, когда верхний предел, как и функция f[x],
является функцией переменной x:
Итак, площадь при вычислении
определенных интегралов со знакопеременной f(x)
образуется алгебраическим суммированием
сегментов над и под осью абсцисс x. С этим связаны
некоторые тонкие особенности интегрирования.
Рассмотрим к примеру f(x) в виде двух периодов
синусоиды. Очевидно, что общая площадь в
алгебраическом смысле в этом случае равна 0.
Вычисление определенного интеграла с
этой функцией и с пределами от -2p до
2p и впрямь дает нуль:
Mathematica неплохо справляется с
вычислением интеграла от функции синуса даже при
пределах от -1000000p до 1000000p,
поскольку очевидно, что при любом конечном числе
периодов синусоиды их общая площадь равна 0.
Проблема 1. Многие интегралы могут
не иметь значений при пределах, стремящихся к
бесконечности. С первого взгляда может
показаться, что и при бесконечном "числе"
пределов мы должны получать знание интеграла,
равное 0. Однако на деле такой интеграл просто не
существует, что и видно из следующих примеров:
Замена одного предела конечным
(нулем) не меняет дела:
Теперь рассмотрим функцию, площадь
которой равна 1:
Специфика этой функции
заключается в том, что ее значение быстро
уменьшается с увеличением x. Например, при
интервале изменения x от 0 до 10000 кривой функции
уже просто не видно на графике (точнее она
совпадает с осью x):
Это обстоятельство довольно
коварно. Многие методы интегрирования основаны
на обработке конечного числа отсчетов функции
f(x). Однако в подобной ситуации все отсчеты могут
быть "нулевыми" с позиций ограниченной
точности вычисления очень малых чисел. Например,
в системе Mathcad 7 вычисление интеграла давало грубейшую ошибку в виде
значения 0.
Чтобы лучше понять возникновение данной
ошибки рассмотрим вычисление определенного
интеграла описанным выше методом
прямоугольников:
Результат не так уж плох. Но
теперь, сохранив число прямоугольников m=100,
изменим предел интегрирования b на 100000:
Вместо ожидаемого приближения к 1
мы получаем "неожиданный" результат -
близкое к нулю значение интеграла. Причина этого
уже указывалась - отсчеты f2(a+i*dx) попадают на
участки функции f2(t), где ее значения очень малы. А
первый отссчет попадает на нуль функции. Сумма
почти (мли равных) нулю отсчетов дает близкое к 0
значение.
Mathematica 4 имеет усложненный алгоритм
вычисления интегралов, который, по мере
возможности, анализирует поведение f(x) и
старается исключить описанную ситуацию.
Нетрудно убедиться,чтоMathematica 4 знает особенность
данной функции (f2[x]) и вычисляет интеграл верно:
А что будет, если интегрируемая функция
синусоида, амплитуда которой медленно
уменьшается или нарастает? Может показаться, что
ситуация при этом остается прежней - как при
интегрировании синусоиды. Но это далеко не так!
Изменение амплитуды синусоиды превращает ее в
новую функцию с принципиально новыми свойствами.
Рассмотрим, например, функцию в виде синусоиды с
экспоненциально уменьшающеся до 0 амплитудой:
Внимательно присмотревшись к этому
графику даже "не вооруженным" глазом видно,
что площадь положительных сегментов больше, чем
отрицательных. Поэтому можно ожидать, что при
интегрировании от 0 до Ґ такой
интеграл будет иметь определенное значение:
Поскольку функция f2(x) быстро
затухает, то можно ожидать, что даже при конечном
b, например b=100, будет получено то-же значение
интеграла, что и при точном расчете. И впрямь:
Теперь рассмотрим функцию в виде
синусоиды, амплитуда которой нарастает по
экспоненциальному закону, приближаясь к
значению 1:
Нетрудно заметить, что здесь площадь
сегментов под осью x всегда больше, чем сегментов
над осью x. И в самом деле, вычислим интеграл в
пределах от 0 до 6p - три полных
периода синусоиды. Получим отрицательное число.
Нетрудно сообразить, что это число
по модулю равно значению интеграла для функции f2.
И далее:
А теперь вычислим интеграл с этой
функцией в пределах от 0 до Ґ.
Результат оказывается неожиданным -
положительным числом:
Разум подсказывает, что в данном
случае Mathematica 4 дает явную ошибку. Система Mathcad
2000, кстати, в данном случае честно сообщила, что
не в состоянии вычислить данный интеграл.
Возьмем еще один пример:
С вычислением интеграла от этой
функции Mathematica справляется легко:
Пусть функция f(x) есть производная от F(x),
то есть f(x)dx есть дифференциал функции F(x).
Следовательно
f(x)dx=dF(x). Функция F(x) называется
первообразной для функции f(x). Нахождение
наиболее общей первообразной для заданной
функции f(x) называют вычислением неопределенного
интеграла. Последний обозначается как . Есть
множество способов аналитического вычисления
неопределенного интеграла. Mathematica 4 позволяет
найти значения неопределенного интеграла для
многих тысяч видов таких интегралов. Ниже дан
пример этого для функции f(x)=x^n:
Пусть теперь конкретно n=2:
В общем случае первооразная
записывается в виде
Или в нашем случае:
Наличие константы С говорит о
существовании бесконечно большого числа
первообразных, графики которых просто смещены по
вертикали на величину C (от -Ґ до +Ґ). Ниже представлены графики
первообразных функции x^2 для трех значений C = -1,0
и1:
Mathematica может вполне заметить самые
объемные таблицы неопределенных интегралов.
Ниже дано несколько примеров, поясняющих
простоту вычисления интегралов:
На практике многие функции приходится
задавать, используя те или иные условия
сравнения. Вначале рассмотрим пример при задании
подынтегральной функции с помощью функции
условных выражений If. Функция f5[x]задает
треугольную площадку с площадью 1/8.
Посмотрим как справляется Mathematica с
вычислением интегралов (определенного и
неопределенного) от этой функции:
Теперь используя функцию знака
Sign(дает 1 при положительном аргументе и -1 при
отрицательном)зададим периодичекую функцию,
интегрирование которой по периода должно дать
площадь 2*p.
Вот как Mathematica вычисляет интегралы
от этой функции:
Еще один пример показывает
задание функции "двухполупериодного
выпрямления" синусоиды. Такая функция
встречается повсеместно в электротехнике,
описывая выпрямление переменного тока.
Вычисление интегралов от нее
показано ниже:
Итак, можно сделать
неутешительный вывод в отношении вычисления
неопределенных интегралов от таких функций -
чаще всего их просто не существует. Но вычисление
определенных интегралов трудностей, хотя и не
всегда, не вызывает.
Средства системы Mathematica 4 позволяют
вычислять кратные, например двойные и тройные
интегралы. Для этого операторы интегрирования
используются один в другом. Например, если
подынтегральная функция f(x,y) есть функция двух
переменных, то двойной интеграл вычисляется как
в следующем примере:
Аналогично для функций трех
переменных можно вычислять тройные интегралы:
В кратных интегралах пределы
могут быть функциями, например
Приведенными примерами возможности
системы Mathematica 4 далеко не ограничиваются.
|