Математический анализ в Maple 9

     замена дверных замков    

Специальные функции

Выше уже упоминалось о системах ортогональных функций. Эти функции используются при решении задач математической физики (линейных дифференциальных уравнений второго порядка) и часто упоминаются в литературе как специальные функции. Наиболее простыми среди этих функций являются классические ортогональные полиномы.

Для работы с ортогональными полиномами воспользуемся утилитами пакета orthopoly. Данный пакет позволяет работать с полиномами Гегенбауэра (G), Эрмита (Н), Лагерра (L), Лежандра (Р), а также с полиномами Чебышева первого (Т) и второго (и) рода.

Внимание!
Чтобы работать с ортогональными полиномами, совсем не обязательно подключать пакет orthopoly. В Maple ортогональные полиномы доступны и без подключения пакетов. Однако в этом случае формальная ссылка на ортогональные полиномы имеет отличный от представленного выше синтаксис. В частности, ссылка на полиномы Чебышева выполняется как ChebyshevT (полиномы первого рода), ChebyshevU (полиномы второго рода), на полиномы Гегенбауэра — GegenbauerC, на полиномы Якоби-Лежандра — JacobiP и на полиномы Лагерра — LaguerreL.

Чтобы представить, каковы же из себя полиномы Лежандра, поступим следующим образом.

Специальные функции

После подключения пакета можно узнать, например, как выглядят первые четыре (начиная с нулевого индекса) полинома.

Специальные функции

Кроме того, можем проверить, удовлетворяют ли полиномы Лежандра соответствующему уравнению. Для этого прежде опишем процедуру, посредством которой будет формироваться уравнение.

Специальные функции

Теперь заданную выше процедуру вызываем, указав первым параметром символ полинома Лежандра. Второй параметр определяет индекс полинома, третий — его аргумент. В результате получим следующее.

Специальные функции

Однако при подстановке вместо конкретного значения для индекса полинома символьного значения (скажем, n) упростить приведенное выше выражение будет проблематично. Поэтому иногда удобно использовать представление для полиномов в виде суммы.

Задаём, согласно приведенной выше формуле, следующую зависимость.

Специальные функции

На заметку
Результатом выполнения процедуры sum() в приведенной выше процедуре определения полиномов является выражение, которое требует упрощения. Если точнее, то в этом выражении следует сгруппировать слагаемые при соответствующих степенях аргумента, что и делается с помощью процедуры collect()

Таким образом, полином Лежандра можно вызвать теперь двумя способами: прописная литера Р соответствует определяемому системой полиному, строчная литера р — полиному, определенному пользователем. Например, альтернативой вызову Р(3,х) является следующее.

Специальные функции

Как несложно заметить, результаты аналогичны. Проверим, что произойдет, если подставить определенные разными способами полиномы в уравнение, которому они по определению должны удовлетворять. Указав, что переменная m является целым неотрицательным числом (т.е. имеет тип nonnegint — указывается после двойного двоеточия в процедуре assume()), поочередно подставляем операторы генерирования полиномов Р() и р() в процедуру формирования уравнения (левой его части) ехргР().

Специальные функции

Как видим, определяемые системой полиномы при таком вызове не упрощаются. Остается проверить, что будет, если в уравнение подставить полиномы, определенные пользователем.

Специальные функции

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

Специальные функции

На заметку
Если вызвать команду Р() с четырьмя параметрами, то в этом случае команда определяет полиномы Якоби. Например, командой P(n,a,b,x) вызывается полином Якоби порядка п от х с аргументами а и b (оба параметра должны быть больше -1). Эти полиномы образуют систему ортогональных на интервале от -1 до 1 функций с весовой функцией р(х) = (1-х)(1 + х)b.

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

Первые несколько полиномов Лагерра имеют следующий вид.

Специальные функции

Обобщенные полиномы Лагерра могут быть получены, если указать дополнительный (имеющий второй порядковый номер) параметр. При этом аргумент указывается третьим параметром.

Специальные функции

Формула для полиномов Эрмита имеет вид

Специальные функции

Ниже приведены примеры полиномов Чебышева.

Специальные функции

Пожалуй, самое важное свойство описанных выше полиномов состоит в том, что они, как отмечалось, образуют ортогональные системы. Это свойство используется при разложении функций в ряд по ортогональным полиномам.

При выполнении таких разложений полезен пакет OrthogonalSeries, в котором предложен набор утилит, весьма полезных при работе с ортогональными разложениями.

Создать формальный ряд по ортогональным полиномам можно процедурой Create(). В качестве параметров процедуры указывают коэффициент разложения и тип полиномов, по которым выполняется разложение.

После подключения пакета OrthogonalSeries можно увидеть список процедур, которые стали доступными.

Специальные функции

Среди этих процедур есть и Create(), которую используем для создания ряда.

Специальные функции

Оставим первые шесть слагаемых в ряде, для чего воспользуемся процедурой Truncate(). Первым параметром процедуры указывается ряд, вторым — индекс, на котором следует оборвать ряд. Таким образом, получим следующее.

Специальные функции

Чтобы вычислить сумму, используем процедуру Evaluate(), указав в качестве параметра переменную среды %.

Специальные функции

По такому принципу можно вычислять и другие (конечные!) суммы. Далее в качестве примера рассмотрим тригонометрическую функцию.

Специальные функции

Создаем формальный ряд по полиномам Лежандра.

Специальные функции

Коэффициенты разложения ряда являются функциями от индекса, и их следует определить в соответствии с раскладываемой в ряд функцией. В частности, имеем следующее.

Специальные функции

Например, коэффициент с индексом 2 равен следующему.

Специальные функции

В данном случае ряд для функции, определяемой выражением F, будет записан в следующем виде.

Специальные функции

Как видим, коэффициенты ряда представлены интегралами. Однако если вызвать отдельный коэффициент с помощью процедуры Coefficients!), указав первым параметром ряд, а вторым — индекс коэффициента (в данном случае это 2), получим ожидаемое значение.

Специальные функции

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

Специальные функции

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

Сравним оба выражения, построив для них графики.

Специальные функции

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

Иногда необходимо в полиномиальном выражении изменить базис, т.е. записать выражение в разложении по иной системе ортогональных полиномов. Например, полином может быть представлен через суперпозицию полиномов Чебышева первого рода следующим образом.

Специальные функции

Еще одна важная проблема связана с почленным дифференцированием ряда. На этот случай в пакете Orthogonal Series имеется процедура Derivate(). Ниже будет показано, как дифференцировать ряд по ортогональным полиномам, но прежде создадим копию R1 ряда S, введенного ранее. Копия ряда создается с помощью процедуры Сору().

Специальные функции

На заметку
Принципиальной разницы между использованием команд Rl:=S и Rl:=Copy(S) нет. Результаты выполнения обеих операций идентичны. Процедура Сору() введена разработчиками Maple в расчете на перспективу. Если в будущих версиях Maple пользователи получат возможность изменять внутренние таблицы данных Maple, использование команды присваивания в данном случае может привести к недоразумениям: изменения в ряде S будут автоматически применяться и к ряду R1. Пока такая проблема неактуальна, однако все же рекомендуется использовать процедуру Сору().

Теперь вычисляем производную.

Специальные функции

Иногда необходимо применить к ряду линейный дифференциальный оператор. В таких ситуациях полезна процедура ApplyOperator(). Рассмотрим пример ее использования. Для этого создадим новый ряд по полиномам Эрмита.

Специальные функции

После этого к ряду R2 применяем оператор:

Специальные функции

В полученном в результате выражении следует упростить коэффициенты разложения. Для этого вызываем процедуру SimplifyCoefficients(), указав первым параметром ряд, в котором следует упрощать коэффициенты, а вторым — процедуру упрощения (в данном случае это simplify).

Специальные функции

В пакете OrthogonalSeries также предусмотрены специальные команды для сложения рядов и их умножения (на скаляры, полиномы или конечные ряды). В частности, предположим, что ряд R2 следует умножить на выражение 1+4х2. Сделать это можно, кроме прочего, так: умножаем ряд на 4х2 (команда ScalarMultiply(4*xA2,R2)) и к результату добавляем исходный ряд (процедура Add() — ее аргументы должны быть рядами по ортогональным полиномам; в результате выполнения команды эти ряды складываются).

Специальные функции

После упрощения коэффициентов получаем следующее.

Специальные функции

Ту же операцию можно выполнить несколько иначе. Так, используя команды пакета orthopoly, получаем выражения для нулевого и второго полиномов Эрмита.

Специальные функции

Видим, что полином 1 + 4х2 =3 + (4х2 -2) может быть "сконструирован" из полиномов Эрмита нулевого и второго порядков. Сделаем это с помощью уже знакомой процедуры Create(), указав первым параметром список с равенствами. В каждом равенстве левая часть определяет индекс полинома, правая — коэффициент при этом полиноме.

Специальные функции

После этого с помощью процедуры Multiply!) вычисляем произведение двух рядов (первый ряд должен быть конечным, т.е. с помощью этой процедуры два бесконечных ряда перемножить не удастся).

Специальные функции

После упрощения коэффициентов убеждаемся в том, что результат такого умножения совпадает с уже полученным ранее.

Специальные функции

Внимание!
В Maple 9 результат выполнения приведенных выше команд может иметь несколько иной вид. Такое различие чисто внешнее (т.е. это те же выражения, но по-другому записаны) и связано с тем, что в Maple 9 не производится автоматическое упрощение полиномов нулевого индекса. Поэтому в некоторых случаях нужно изменять процедуры упрощения рядов. В частности, полезной бывает процедура expand)).

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

В Maple для работы с цилиндрическими функциями используются команды:

Bessell(v,x) — модифицированная функция Бесселя;
BesselJ(v,x) — функция Бесселя первого рода;
BesselK(v,x) — функция Макдональда;
BesselY(v,x) — функция Бесселя второго рода;
HankelHl(v,x) и HankelH2(v,x) — функции Ханкеля.

Внимание!
Для работы с цилиндрическими функциями никаких специальных пакетов подключать не нужно.

Что можно делать с функциями Бесселя, рассмотрим на примере функции первого рода Jy(x). Например, сумма функций Бесселя разных индексов после упрощения выражается через функцию Бесселя.

Специальные функции

Подобные соотношения называются рекуррентными и часто используются при решении задач. Ниже приведен результат дифференцирования функции Jv(x) .

Специальные функции

Кроме того, через функции Бесселя выражаются и некоторые весьма распространенные интегралы.

Специальные функции

На заметку
С помощью процедуры int(f (x) ,x=a. .b) вычисляется интеграл от функции f (х) по переменной х на интервале от а до b, а запись lnt() — это неактивная форма данной процедуры. Подробнее об этом рассказывается в главе 4.

Достаточно простой вид имеют функции Бесселя полуцелого индекса. Например, для функции первого рода имеем следующее.

Специальные функции

Для функции второго рода справедливо такое соотношение.

Специальные функции

На заметку
Функции Бесселя первого и второго рода образуют полную ортогональную систему функций. Это значит, что такие функции могут использоваться для построения разложений прочих функций (при некоторых дополнительных условиях) в ряды. Как это делается, показано в главе 5 при решении задач математической физики.

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


Содержание раздела