Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
Рис. 4.12. Пример вывода результата работы с Maplet-инструментом по методам интегрирования
4.4.13. Численное вычисление определенных интегралов
Для численного вычисления определенных интегралов используется функция evalf в сочетании с функциями Int или int:
evalf(Int(f, x=a..b, …))
evalf(Int(f, a..b, …))
evalf(Int(f, list-of-equations, …))
evalf(Int(f, list-of-ranges, …))
evalf(int(f, x=a..b))
Вместо многоточия могут использоваться различные опции, например, для задания метода вычислений. Могут использоваться комбинированные методы (аналитический с численным), ряд Maple-методов повышенной точности, методы предложенные группой NAG, метод Монте-Карло и др. Детали задания методов можно найти в справке. Ограничимся несколькими примерами вычисления определенных интегралов в численном виде (файл intnum):
> Int(х^2,х=1..2)=evalf(Int(х^2,х=1..2));
> Int(sin(x)/x,х=0..Pi)=evalf(int(sin(х)/х,х=0..Pi));
> Digits:=15;Int(sin(x)/x,x=0..Pi)=evalf(int(sin(x)/x, x=0..Pi, method = _NCrule));
Digits := 15> expr := x*exp(-x):
Int(expr, x=1..infinity) = evalf[40](Int(expr, x=1..infinity, method=_Gquad));
В двух последних примерах показано вычисление интегралов с повышенной точностью в 15 и 40 верных знаков. Аналогичным образом могут вычисляться и кратные интегралы.
На время и возможность вычисления определенных интегралов большое значение оказывает выбранный метод вычислений. Нередко его стоит указывать явно. Ниже приведены примеры этого с оценкой времени интегрирования (файл intmet):
> restart: t:=time(): int((1-ехр(-z^2))/(BesselJ(1, z)^2+ BesselY(1,z)^2)/z^3,z=0.0..infinity); time()-t;
1.979213867 72.375> t:=time(): evalf(Int((1-ехр(-z^2))/(BesselJ(1, z)^2+ BesselY(1,z)^2)/z^3,z=0..infinity, Gquad)); time()-t;
1.979213867 2.579> t: =time(): evalf(Int((1-exp(-z^2))/(BesselJ(1, z)^2+ BesselY(1,z)^)/z^3,z=0.. infinity,_CCquad)); time()-t;
1.979213867 2.578> t:=time(): evalf(Int((1-ехр(-z^2))/(BesselJ(1,z)^2+ BesselY(1,z)^2)/z^3,z=0..infinity,_Sinc)); time()-t;
1.979213867 3.876> t:=time(): evalf(Int((1-ехр(-z^2))/(BesselJ(1, z)^2+ BesselY(1,z)^2)z^3,z=0..infinity,_Dexp)); time()-t;
1.979213867 1.531В данном случае лучшим оказался метод _Dexp (адаптивный двойной экспоненциальный метода). Разумеется, для других интегралов более целесообразным может оказаться применение другого метода. Приведенные значения времен интегрирования могут заметно отличаться при реализации вычислений на разных ПК. Данные выше приведены для ПК с процессором Pentium 4 НТ с рабочей частотой 2,6 ГГц.
4.5. Вычисление пределов функций
4.5.1. Определение предела функции
Пределом функции f(х) называют то ее значение b, к которому функция неограниченно приближается в точке х=а (предел в точке) или слева или справа от нее. Пределы обозначается как:
Предел в точке a Предел слева от точки a Предел справа от точки аПри этом подразумевается, что функция f(x) определена на некотором промежутке, включающем точку х=а и во всех точках, близких к ней слева и справа. В последнем случае предел вычисляется для х=а-h или x=a+h при h стремящемся к нулю. Пределом может быть число, математическое выражение и положительная или отрицательная бесконечность. Последнее соответствует расширенному представлению о пределах.
4.5.2. Функции вычисления пределов в Maple 9.5
Для вычисления пределов функции f в точке х=а используются следующие функции:
limit(f,x=a);
limit(f,x=a,dir);
Limit(f,x=a);
Limit(f,x=a,dir);
Здесь f — алгебраическое выражение, z — имя переменной, dir — параметр, указывающий на направление поиска предела (left — слева, right — справа, real — в области вещественных значений, complex — в области комплексных значений). Значением а может быть бесконечность (как положительная, так и отрицательная).
Примеры применения этих функций для вычисления пределов в точке приведены ниже (файл limit):
> restart: Limit(f(х),х=а);
> Limit(1-ехр(-х), x=infinity)=limit(1-exp(-x), x=infinity);
> Limit(exp(x),x=infinity) = limit(exp(x),x=infinity);
> Limit(exp(-x),x=infinity)=limit(exp(-x),x=infinity);
> Limit((x-sin(x))/x^3, x=0)=limit((x-sin(x))/х^3,х=0);
> Limit((Pi-2*x)*tan(x),x=Pi/2)=limit(tan(x)*(Pi-2*x), x=Pi/2);
Обратите внимание на то, что в первом примере фактически дано обозначение предела в самом общем виде. Приведем еще пример вычисления предела функции в виде дроби, имеющей неопределенность 0/0:
> Limit((x-sin(х)) / (exp(2*х)-1-2*х-2*х^2),x=0) = limit((х-sin(x))/(exp(2*х)-1-2*х-2*х^2),х=0);
Как видно из этого примера, Maple «понимает» особенности функций при вычислении пределов.
4.5.3. Вычисление пяти замечательных пределов
Проверим возможности Maple при вычислении пяти замечательных пределов (файл limit5 — второй предел дан в двух вариантах):
> Limit(sin(х)/х,х=0)=limit(sin(х)/х,х=0);
> Limit((1+х)^(1/х),х=0)=limit((1+х)^(1/х),х=0);
> Limit((1+1/х)^х,x=infinity)=limit((1+1/х)^х,x=infinity);
> Limit(ln(1+x)/х,x=0)=limit(ln(1+х)/x,x=0);
> Limit((exp(х)-1)/х,х=0)=limit((exp(х)-1)/х,х=0);
> Limit(((1+х)^а-1)/х,х=0)=limit(((1+х)^а-1)/х,х=0);
Все пять замечательных пределов вычислены верно.
4.5.4. Графическая иллюстрация вычисления пределов с двух сторон
Рисунок 4.13 показывает вычисление пределов функции tan(x) в точке x=π/2, а также слева и справа от нее. Для указания направления используются опции right (справа) и left (слева). Видно, что в самой точке предел не определен (значение undefined), а пределы справа и слева уходят в бесконечность.
Рис. 4.13 Пример вычисления пределов функции tan(x) и построение ее графика
Показанный на рис. 4.13 график функции tan(x) наглядно подтверждает существование пределов справа и слева от точки x=π/2 и отсутствие его в самой этой точке, где функция испытывает разрыв от значения +∞ до -∞.
4.5.5. Maplet-инструмент для иллюстрации методов вычисления пределов
Для демонстрации методов пошагового вычисления пределов имеется Maplet-инструмент Step-by-step Limit Tutor. Для вызова его окна (рис. 4.14) нужно исполнить команду (в стандартном варианте интерфейса): Tools→Tutors→Calculus-Single Variables→Limit….
Рис. 4.14. Окно Maplet-демонстрации методов пошагового вычисления пределов
Нетрудно заметить, что это окно практически аналогично окну для демонстрации методов пошагового дифференцирования, описанному в разделе 4.3.4 (рис. 4.2). В связи с этим подробное описание средств и этого инструмента можно опустить. Отметим лишь, что он позволяет задавать функцию и значение x и по шагам (автоматически или вручную) вычислять пределы. По окончании работы с окном соответствующий предел и результат его вычисления появляется в окне документа — рис. 4.15.
Рис. 4.15. Пример вывода результата работы с Maplet-инструментом по методам вычисления пределов
4.6. Разложение функций в ряды
4.6.1 Определение рядов Тейлора и Маклорена
Огромное разнообразие функций давно заставляло математиков задумываться над возможностями их приближенного, но единообразного представления. К таким представлениям относятся различные ряды, сходящиеся к значениям функций в окрестности заданной точки.
Очень часто желательно представление тех или иных функций f(х) в достаточно простом и единообразном виде. Эта задача решается методами аппроксимации, которые мы рассмотрим позже. Пока же зададимся более простой задачей — представления функций в виде степенного многочлена F(x) в окрестности заданной на оси абсцисс точки х=х0. Такое разложение было впервые получено Тейлором и получило название ряда Тейлора [68, 69]:
Если разложение выполняется относительно точки х=0, его принято называть рядом Маклорена:
4.6.2. Разложение в степенной ряд
Для разложения функции или выражения expr в обычный степенной ряд в системе Maple служат функции:
series(expr, eqn)
и
series(expr, eqn, n)
Здесь expr — разлагаемое выражение, eqn — условие (например, в виде х=а) или имя переменной (например, х) и n — необязательное и неотрицательное целое число, задающее число членов ряда (при его отсутствии оно по умолчанию берется равным 6, но может переустанавливаться системной переменной Order). Если в качестве eqn задано имя переменной, то это соответствует разложению по этой переменной в области точки с ее нулевым значением. Задав eqn в виде x=x0 можно получить разложение по переменной х в окрестности точки x=х0.