3.2. Интегрирование специальных функций.

Среда Maple позволяет вычислять как определенные, так и неопределенные интегралы от практически всех, встречающихся в физических приложениях специальных функций, например функций Бесселя, Лежандра, гипергеометрических функций и т. д. Общее число специальных функций, встроенных в Maple, превышает сотню. Ввод команды

> ?inifunction

отображает на экране дисплея перечень всех специальных функций с их стандартными определениями. Результаты интегрирования специальных функций, как правило, так же выражаются через специальные функции. Но если вам необходимо получить только численное значение результата, используйте для этого команды Int и evalf. Вычислим, например определенный интеграл от функции Бесселя J0(x).

Попробуем вычислить интеграл в аналитическом виде

> s1:=Int(BesselJ(0,x),x=0..1);

> value(s1);

Результат интегрирования выразился через функцию Струве, с которой редко кто знаком, и вряд ли вы найдете таблицы ее значений. А как найти численное значение результата интегрирования? Можно просто задать пределы интегрирования в виде числа с плавающей точкой.

> s1:=Int(BesselJ(0,x),x=0..1.);

> value(s1);

Проектное задание 3.2.1

Вычислите следующие интегралы от функций Бесселя как неопределенные, а затем как определенные в интервале [1.0..2.0].

(а) (б) (в) (г)

Приведем для справки их обозначение в среде Maple: BesselJ(0,x), BesselK(0,x), BesselI(1,x).

Проектное задание 3.2.2

Вычислите следующие интегралы от функций (полиномов) Лежандра как неопределенные, а затем как определенные в интервале [-1.0..1.0].

НЕ нашли? Не то? Что вы ищете?

(а) (б)

Справка. Для начала работы с ортогональными полиномами, к которым относится полином Лежандра, необходимо ввести команду

> with(orthopoly);

Полиномы Лежандра в среде Maple обозначаются как P(n, x).

Проектное задание 3.2.3

Возможно, вы были удивлены результатом, полученным при вычислении определенного интеграла (б) предыдущего задания. Этот результат отражает просто общее свойство ортогональных полиномов - определенные интегралы в интервале [-1..1] от произведения двух разных полиномов Лежандра равны нулю. Это свойство очень важно, так как позволяет раскладывать заданные функции одного переменного по набору ортогональных полиномов. Этим приемом пользуются в квантовой механике при разложении волновой функции по базисному набору стационарных состояний. Оказывается, что существует множество функций со свойствами ортогональности. В данном задании мы познакомимся с некоторыми из них.

(а) Проверим ортогональность функций и на интервале [0..2π]. Вычислите для этого значения интегралов с m и n с равными и неравными друг другу.

Подсказка. Так как в нашем случае величины m и n целые, то необходимо указать это, введя команду > assume(m,integer,n,integer);

(б) Проверьте взаимную ортогональность полиномов Лежандра c неравными друг другу значениями индекса n на интервале [-1..1]. Кроме этого вычислите интеграл нормировки . Не забудьте о команде >with(orthopoly);

Найдите значение этого интеграла для нескольких значений индекса n и попытайтесь, на основе найденного, получить аналитическое выражение для интеграла нормировки. (Оно очень простое и приведено во всех справочниках по специальным функциям.)

(в) Показать, что функции Бесселя взаимно ортогональны с весом x на отрезке [0..1]. Для этого следует вычислить значение интеграла , где αp и αq – нули функции . Их можно найти, используя функцию Maple BesselJZeros(n, m), здесь n - порядок функции Бесселя (в рассматриваемом случае n=0), m-порядковый номер искомого нуля. Например, введя команду >BesselJZeros(0.,1); мы найдем значение α1= 2.404825558. (Отметим, что порядок функции Бесселя необходимо вводить в форме числа с плавающей точкой, а не как целое!). Далее, найдите аналитическое выражение для этого интеграла при p=q. Значение величины αp при этом следует вводить аналитически, т. е. как BesselJZeros(0,p) (порядок функции Бесселя вводится без десятичной точки). Результатом интегрирования будет простое аналитическое выражение:

Проектное задание 3.2.4

Вычислите интегралы (а, б,в) как неопределенные и определенные в пределах от 0.5 до 1.0, а интеграл (г) как определенный.

(а) (Гамма функция Эйлера обозначается как GAMMA)

(б) (Функция ошибок обозначается как erf)

(в) (Полный эллиптический интеграл обозначается как EllipticK)

(г) (В качестве верхнего предела используйте 1 как целое число, и как число с плавающей точкой 1.0).

3.3. Двойные интегралы

Кратные интегралы (двойные, тройные, и т. д.) достаточно часто встречаются в физических теориях. Рассмотрим, например двойной интеграл . Для его вычисления в среде Maple следует просто использовать команду интегрирования Int как повторную:

> restart;

> s1:=Int(Int(erf(x*sin(y)),x=0..1),y=0..1);

> s1:=value(s1);

Как обычно, если Maple отображает на дисплей результат в виде интеграла, это означает, что получение аналитического выражения зачастую невозможно, но можно получить результат численно, если использовать далее команду evalf.

> evalf(s1);

Если вам необходим только результат численного интегрирования, то соответствующие команды вычисления интеграла следует ввести внутри скобок команды evalf:

> evalf(Int(Int(erf(x*sin(y)),x=0..1.),y=0..1.));

Кроме того, если вам не нужна большая точность вычисления, можно задать нужное количество значащих цифр результата (6 как в данном примере) внутри команды интегрирования вслед за заданием пределов, что резко сократит время вычисления.

> evalf(Int(Int(erf(x*sin(y)),x=0..1.,6),y=0..1.,6));

Проектное задание 3.3.1

Найдите численное значение двойного интеграла.

3.4. Тройные интегралы.

Достаточно часто вы встречаетесь с необходимостью вычисления тройных интегралов, например следующего вида .

В среде Maple для этого следует использовать команду

> s1:=int(int(int(cos(x)*erf(x*sin(y*z)),x=0..1),

y=0..1),z=0..1);

Как видите, результатом является символическая запись данного тройного интеграла, т. к. Maple не находит его значение в аналитическом виде. Вычислим интеграл численно, используя для этого команду >evalf(s1). После ее ввода может показаться, что компьютер завис, но это не так. Просто для вычисления тройных интегралов требуется большое количество операций, которые среда Maple выполняет слишком медленно. Давайте прекратим дальнейшее вычисление интеграла, нажав на кнопку “stop”, расположенную на панели инструментов, и заново вычислим его численное значение, уменьшив требуемую точность до четырех значащих цифр.

> evalf(Int(Int(Int(cos(x)*erf(x*sin(y*z)),

x=0..1.,4),y=0..1.,4),z=0..1.,4));

Как видите, вычисление интеграла занимает всего несколько секунд.

Проектное задание 3.4.1

Вычислите численное значение тройного интеграла с точностью до четырех значащих цифр по внутреннему объему сферы радиуса r=2 с использованием сферической системы координат.

.

Даже вычисление с относительно невысокой точностью в случае тройных интегралов занимает продолжительное время. Попытайтесь найти способ уменьшить время его вычисления, например, попробовав вычислить один из внутренних интегралов аналитически. В этом случае задача сведется к дальнейшему двойному интегрированию, которое проводится значительно быстрее. В среде Maple есть еще один способ вычисления двойных и тройных интегралов. Для этого следует использовать команды пакета расширения student. Для получения доступа к этому пакета наберем в строке приглашения ввода команду:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7