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

         

Числовые и функциональные ряды


Глава 3. Числовые и функциональные ряды Суммирование числовых рядов Исследование рядов на сходимость Разложение функций в ряды Тейлора и Лорана Разложение функций в ряд Фурье Специальные функции Заключительные замечания Контрольные вопросы

Исследование рядов на сходимость


Существенным является класс задач, в которых предусматривается исследо вание рядов на предмет сходимости. В этом случае нет необходимости сумми ровать ряд — нужно только сделать вывод, сходится ряд или расходится.

Рассмотрим примеры исследования рядов на сходимость.

Контрольные вопросы




1. Какие из приведенных команд корректны? a) sum(i2,i=1..100); 6) M(i*2,i*1..100)} в) sum(i,i=l..N); r) add(i,i=l..N); 2. Каким будет результат выполнения команды onvert(taylor(f(х),х=0,5),polynom)? а) функция f (х) будет разложена в ряд Тейлора в окрестности нуля; б) функция f (х) будет разложена в ряд Тейлора в окрестности нуля до пятой степени по переменной х включительно, а затем полученное выражение будет преобразовано в полином; в) функция f (х) будет разложена в ряд Тейлора в окрестности нуля до четвертой степени по переменной х включительно; г) функция f(x) будет разложена в ряд Тейлора в окрестности нуля до четвертой степени по переменной х включительно, а затем полученное выражение будет преобразовано в полином. 3. Переменная у описана следующим образом: у:=1/х. Какие из приведенных ниже команд корректны? a)taylor(y,x=l); б)series(у,х=1); в) taylor(у,х=0); г) series(у,х=0); 4. Каким будет результат выполнения команды Create([2=1] ,HermiteH(n,x) ] а) вызывается полином Эрмита в общем виде; б) вызываются полиномы Эрмита индексов один и два; в) создается ряд по полиномам Эрмита, в котором единственное слап мое — полином Эрмита индекса два; г) создается ряд по полиномам Эрмита, в котором единственное слап мое — полином Эрмита индекса один, умноженный на два.

На заметку


Следует напомнить, что выполнить неактивные процедуры можно с помощью процедуры value (), указав неактивную процедуру в качестве ее параметра.

На заметку


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

На заметку


Рядом Маклорена называется разложение функции в ряд Тейлора в окрестности нуля.

Определяем, как обычно, функцию.

На заметку


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

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

На заметку


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

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

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

На заметку


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

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

На заметку


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

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

Поэтому следует помнить, что первой


Если m>n+1, то sum(a,k=m. .n)=-sum(a,k=n+1. .m-1). При m=n+1 автоматически получаем sum (а)с=m. .n)=0. Поэтому следует помнить, что первой лучше указывать нижнюю границу диапазона изменения индекса суммирования.
Иногда необходимо считать сумму не по интервалу, а только по некоторым значениям переменной суммирования. В этом случае полезным может оказаться следующий способ вызова процедуры: sum(a,k=RootOf(z)). Первый параметр, как и раньше, определяет общий член суммы и, как правило, зависит от к, а в качестве второго параметра используется (после к=) выражение типа RootOf(), которое возвращает значения корней полинома z. Предположим, следует просуммировать первые три члена гармонического ряда с четными знаменателями, т.е. нужно найти значение суммы 1/2+1/4+1/6. Если общий член суммы записать как 1/к, то суммировать следует по значениям 2, 4, 6. С использованием описанного выше способа вызова процедуры sum() это можно сделать, если задействовать полином z=(x-2)*(x-4)*(x-6).

настоятельно рекомендуется заключать параметры процедуры


При вызове процедуры sum() настоятельно рекомендуется заключать параметры процедуры в одинарные кавычки. Другими словами, вместо sum(a,k) рекомендуется использовал синтаксис sum( 'а', 'к'). Это же относится и к прочим описанным выше способам вызова данной процедуры: sum('a','k'm..n), sum('a','k'=RootOf(z)), sum('a','к'=выражение). Дело в том, что если, скажем, до вызова процедуры sum() переменной суммирования (в приведенных выше примерах это к) было присвоено значение, произойдет ошибка. Использование же кавычек позволяет избежать этого. Кроме того, при суммировании по корням полинома, в силу тех же причин полезно заключать в одинарные кавычки и сам полином: sum('a','k'=RootOf('z')).
Для того чтобы суммировать последовательность значений, может исполь зоваться еще одна процедура — add(). Синтаксис вызова этой процедуры на поминает тот, что используется при вызове процедуры sum(), а именно: в ка честве первого параметра указывается общее слагаемое, а вторым параметре является переменная, по которой нужно вычислить сумму. Для этой пере менной следует указать диапазон (обязательно численный, поскольку с сим вольными параметрами процедура не работает) или множество значений, п которым вычисляется сумма. В первом случае процедура вызывается T add(a,k=m. .n). Если m>n, значение суммы будет возвращено равным 0. Для тог чтобы выполнить суммирование по какому-то множеству значений переменно суммирования, процедуру следует вызывать в виде add(a,k=выpaжeниe). В каче стве значения выражение во втором параметре, как правило, используют по следовательность. Ниже приведен пример вызова процедуры add().
Для начала просуммируем квадраты натуральных чисел от 1 до 10.

несмотря на их кажущуюся схожесть,


Между процедурами sum() и add(), несмотря на их кажущуюся схожесть, есть принципиальная разница. При вызове процедуры sum() суммирование производится в символьной форме. Другими словами, Maple в этом случае пытается получить аналитическую формулу. Процедура же add() используется для выполнения суммирования в явном виде. Результат ее выполнения — число. В качестве параметров этой процедуры символьные значения использоваться не могут. Поэтому, если нужно в результате вычислений получить число, лучше использовать процедуру add(). Применение процедуры sum() в таких случаях не оправдывает себя, поскольку, как уже отмечалось, вычислительным ядром Maple будет предпринята попытка получения в первую очередь аналитического выражения, а на это уходит определенное время, иногда значительное.
Процедура sum() имеет также и неактивную форму — Sum(). Синтаксис ее вызова такой же, как и в процедуре активной формы. Неактивная форма процедуры используется для представления суммы в символьном виде. Это бывает удобно особенно в тех случаях, когда необходимо записать само выражение, а не результат его вычисления.


Приведенная выше процедура определена без


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

с ортогональными полиномами, совсем не


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

с цилиндрическими функциями никаких специальных


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

Разложение функций в ряд Фурье


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

В приведенном ниже примере для разложения функций в ряд Фурье на интервале создается специальная процедура.

Разложение функций в ряды Тейлора и Лорана


Разложение функции в ряд Тейлора, или, в более общем случае, Лорана, находит самое широкое применение как при решении задач высшей математики, так и в прикладных областях.

В Maple на этот случай предусмотрены такие процедуры: taylor() — разложение в ряд Тейлора, mtaylor() — разложение в ряд Тейлора функции нескольких переменных, series () — обобщенный ряд (для аналитических функций такой ряд совпадает с рядом Тейлора).


Решение задачи



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


А можно просто указать значение




А можно просто указать значение для индекса суммирования.

Во втором параметре вместо выражения




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


создаем последовательность квадрате тех же




Теперь с помощью процедуры seq() создаем последовательность квадрате тех же натуральных чисел (последовательность заключена в квадратные скоС ки, поэтому формально это список, однако квадратные скобки можно не использовать).

Сумма членов созданной выше последовательности




Сумма членов созданной выше последовательности должна быть равна, как несложно догадаться, сумме квадратов натуральных чисел от 1 до 10.

в третьей командной строке берется




Итак, в первой командной строке с использованием процедуры add() непосредственно вычисляется сумма квадратов, в то время как в третьей командной строке берется сумма по множеству значений переменной суммирования, которые, в свою очередь, являются значениями квадратов натуральных чисел из рассматриваемого диапазона. Результат выполнения обеих операций одинаков.


Замечательно то, что Maple вычисляет




Замечательно то, что Maple вычисляет и достаточно сложные "символьные" суммы, как в следующем примере.

с рядами Maple может использоваться




Однако при работе с рядами Maple может использоваться не только для вычисления сумм.

Проверяем необходимое условие сходимости




Проверяем необходимое условие сходимости ряда.

Необходимое условие выполнено, поэтому далее




Необходимое условие выполнено, поэтому далее вступают в силу более существенные критерии — в данном случае признак Даламбера.

меньше ли это значение, чем




Проверяем, меньше ли это значение, чем 1.

Таким образом, по признаку Даламбера




Таким образом, по признаку Даламбера ряд сходится. В следующих примерах для исследования рядов на сходимость предлагается специальная процедура.

Аргументом процедуры является общий член




Аргументом процедуры является общий член ряда (это оператор, т.е. а(n) является функцией п). В теле процедуры используется две локальные переменные: п — для "технических" нужд и Res — для записи результата. При этом переменной среды Digits присвоено значение 100 (по умолчанию равно 10) — переменная определяет, сколько значащих цифр будет вычисляться при работе с числами с плавающей точкой.


Еще один способ вызова процедуры




Еще один способ вызова процедуры состоит в предварительном описании общего члена ряда в виде оператора действия на индекс суммирования.

Ряд сходится по признаку Коши




Ряд сходится по признаку Коши Рассмотрим еще один пример.

В следующей задаче используются признаки




В следующей задаче используются признаки Даламбера и Раабе.

Составляем отношение двух последовательных




Составляем отношение двух последовательных членов.

После этого упрощаем




После этого упрощаем его.

Далее вычисляем




Далее вычисляем предел.

Поскольку предел равен 1, признак




Поскольку предел равен 1, признак Даламбера не позволяет сделать вывод о сходимости ряда. Поэтому на следующем шаге воспользуемся признаком Раабе.

о том, что ряд




Полученное число свидетельствует о том, что ряд расходится.

Определим выражение f, задающее исходную




Определим выражение f, задающее исходную функцию.

Основную часть ряда обозначим через




Основную часть ряда обозначим через fl (переменная среды %% ссылается на результат выполнения предпоследней операции (т.е. на ряд для функции), а опция polynom является инструкцией, что указанное первым параметром выражение следует привести к полиномиальному виду).

Теперь можно сравнить, насколько отличаются




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

что даже разложения до четвертой




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

в ряд Тейлора порядок остатка




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

В подобных ситуациях порядок остатка




В подобных ситуациях порядок остатка определяется переменной среды Order; по умолчанию значение этой переменной равно 6. Поэтому в предыдущем выражении последним слагаемым должно было бы быть слагаемое степени 5 по х (соответственно остаток — степени 6). Однако поскольку функция четная, это слагаемое, естественно, отсутствует (точнее, соответствующий коэффициент тождественно равен нулю). Поэтому последним является слагаемое степени 4, а остаток указан как имеющий степень 5 (хотя на самом деле степень остатка равна 6).
Чтобы при вызове процедуры taylor() не указывать, до какой степени проводить разложение, можно изменить значение переменной среды Order.

которая будет представлять разложение функции




Определим процедуру F(x,n), которая будет представлять разложение функции f (х) в ряд в окрестности нуля до слагаемых степени порядка п, преобразуя такое разложение в полином.

Рассмотрим пример вызова этой процедуры




Рассмотрим пример вызова этой процедуры (можно сравнить с результатом разложения, полученным выше).

Теперь построим график исходной функции,




Теперь построим график исходной функции, ее ряд до степени 5 и ряд до степени 10.

При построении графиков использовалась команда




При построении графиков использовалась команда numpoints=150, в которой "частота" базовых точек, по которым строятся графики, увеличивается (по умолчанию — значение 50) в три раза.
Если функция зависит от нескольких переменных, ее также можно разложить в ряд.

в качестве параметров указываются раскладываемая




Разложение в ряд осуществляется с помощью процедуры mtaylor(). При этом в качестве параметров указываются раскладываемая в ряд функция, список переменных, по которым следует выполнять разложение, (если точка, в окрестности которой это разложение выполняется, не указана, то разложение выполняется в окрестности нуля), степень "обрыва" ряда (будут отброшены слагаемые, суммарная степень которых при х и у больше либо равна 4), а также вес этих переменных (по умолчанию вес всех переменных одинаков и равен 1). В данном случае указан список [2,1] — "присутствие" переменной х в два раза уменьшено (если судить по степеням) по сравнению с у.

то конкретный коэффициент разложения, используют




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

в ряд Тейлора можно раскладывать




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

Правила вызова процедуры series




Правила вызова процедуры series () такие же, как и у процедуры taylor().

не является аналитической, посколь




Видим, что функция f (х) в точке х= 2 не является аналитической, посколь ку в разложении имеется слагаемое с отрицательным показателем степеш Ряд, который получен выше, фактически является рядом Лорана для функ ции f(x). Интересно сравнить, как отличаются разложения этой функции окрестности различных точек друг от друга и самой функции. С этой цель определим процедуру, зависящую от трех параметров — раскладываемой ряд функции, равенства, определяющего переменную и точку разложения, также степени остаточного члена.

что второй параметр VarAndPoint является




Предполагается, что второй параметр VarAndPoint является равенством (например, х-2). Локальной переменной t присваивается в качестве значения левая часть этого равенства (в приведенном примере это х). Далее выполняется разложение функции-аргумента в ряд и преобразование в полиномиальный вид.
Например, посредством новой процедуры F() полученный выше ряд Лорана можно сгенерировать следующим образом.

в окрестности другой точки, например




Если нужно разложить функцию в ряд в окрестности другой точки, например х=0, поступаем следующим образом.

в ряд Тейлора для данной




Разложение в окрестности точки х=1 совпадает с разложением в ряд Тейлора для данной функции.

Все эти выражения аппроксимируют исходную




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

Выше при создании фафика значение




Выше при создании фафика значение опции discont установлено равным true. Это сделано для того, чтобы при отображении графиков функций Maple не соединял точки разрыва линиями.

В самом начале процедуры выполняется




В самом начале процедуры выполняется проверка второго параметра на предмет соответствия типов. Тип аргумента возвращается функцией whattype(), и если он не является равенством выводится сообщение Неверно введенный диапазон.
В противном случае локальной переменной s в качестве значения присваивается имя переменной, расположенной в левой части равенства VarAndRange. Переменной а присваивается начальная точка диапазона, на котором раскладывается в ряд функция, а переменной b — конечная точка этого диапазона.

Переменная 1 равна половине длины интервала, а начальное значение переменной Res принимается равным нулевому слагаемому косинус-разложения Фурье (т.е. разложения функции по косинусам). Далее в рамках оператора цикла коэффициенты разложения вычисляются, умножаются, соответственно, на косинусы и синусы и прибавляются к переменной Res. По окончании цикла эта переменная возвращается в качестве результата.
Теперь воспользуемся описанной процедурой для разложения в ряд Фурье функций. В частности, определим следующую функцию.

Ряд Фурье для этой функции




Ряд Фурье для этой функции на интервале (пять первых слагаемых) имеет следующий вид.

Ниже можно сравнить графики самой




Ниже можно сравнить графики самой функции и полученного для нее ряда Фурье.

и следовало ожидать, на интервале




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

Часто возникает необходимость определять непосредственно




Часто возникает необходимость определять непосредственно коэффициенты косинус- и синус-разложений. В этой ситуации также можно воспользоваться некоторыми полезными процедурами. Начнем с вычисления коэффициентов косинус-разложения.

Принципиально эта процедура отличается от




Принципиально эта процедура отличается от предыдущей тем, что второй параметр является диапазоном (не равенством, как в процедуре FurSer). Соответственно, проверка выполняется для этого типа (диапазон имеет тип '..'). Кроме того, здесь мы ограничиваемся вычислением коэффициента разложения.
Точно так же определяются коэффициенты и для синус-разложения.

Описанные выше процедуры могут использоваться




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

Чтобы упростить полученное выражение, ядру




Чтобы упростить полученное выражение, ядру Maple нужно сообщить, что m является целым числом. Для этого вводим следующую команду.

коэффициентов имеем, соответственно, такой




Для косинус- коэффициентов имеем, соответственно, такой результат.

в том, что функция нечетная,




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

определим процедуру, записывающую ряд Фурье




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

В отличие от процедуры FurSer,




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

После подключения пакета можно узнать,




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

Кроме того, можем проверить, удовлетворяют




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

Теперь заданную выше процедуру вызываем,




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

Однако при подстановке вместо конкретного




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

Решение задачи






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




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

Как видим, определяемые системой полиномы




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

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




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

Решение задачи






Обобщенные полиномы Лагерра могут быть




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

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




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

Ниже приведены примеры полиномов




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

самое важное свойство описанных выше




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

Среди этих процедур есть




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

в ряде, для чего воспользуемся




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

Чтобы вычислить сумму, используем процедуру




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

По такому принципу можно вычислять




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

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




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

Коэффициенты разложения ряда являются функциями




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

Например, коэффициент




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

В данном случае ряд для




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

Как видим, коэффициенты ряда представлены




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

Сравним точное выражение для функции




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

Для большей наглядности собираем слагаемые




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

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




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

Еще одна важная проблема связана




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

Решение задачи






к ряду линейный дифференциальный оператор.




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

к ряду R2 применяем




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

в результате выражении следует упростить




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

В пакете OrthogonalSeries также предусмотрены




В пакете 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) — функции Ханкеля.


и часто используются при решении




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

Кроме того, через функции Бесселя




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

это неактивная форма данной процедуры.





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

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




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

Решение задачи






В качестве независимой переменной для


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

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

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


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

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


Суммирование числовых рядов


В Maple для суммирования большого (хотя и не обязательно) числа слагаемых предназначена процедура sum(), имеющая два параметра, которые при вызове процедуры разделяются запятой. Посредством первого параметра а(k) задается общая зависимость слагаемых от индекса суммирования к. Что касается второго параметра, то тут допускается некоторое разнообразие. Так, если в качестве второго параметра просто указать индекс суммирования, то Maple попытается получить формулу для суммы в виде S(к), где S(k+1)-S(k)=a(k).

Найти сумму ряда


Найти сумму ряда

Найти сумму ряда


Найти сумму ряда

Задаем общую зависимость члена ряда


Исследовать на сходимость ряд
Задаем общую зависимость члена ряда от индекса суммирования.

Сразу определяем процедуру, которая будет


Исследовать на сходимость ряды:
Сразу определяем процедуру, которая будет "тестировать" ряды. В процедуре сначала проверяется необходимое условие сходимости ряда. Если условие не выполняется, выводится сообщение Ряд расходится: а(n) не стремится к 0. Если условие выполнено, ряд исследуется на сходимость согласно признаку Коши. При этом, если вычисляемый предел равен 1 (в такой ситуации признак Коши не позволяет сделать заключение о сходимости ряда), пользователь увидит сообщение Необходимо дополнительное исследование.

Описываем общий член ряда как


Исследовать на сходимость ряд
Описываем общий член ряда как функцию индекса суммирования.

в ряд Тейлора до члена


Разложить в ряд Тейлора до члена с х функцию
Воспользуемся процедурой taylor(), указав первым параметром раскладываемую в ряд функцию, вторым параметром — равенство, определяющее переменную и точку, в окрестности которой выполняется разложение в ряд, а третьим необязательным параметром — порядок "остатка" ряда. Так, если раскладывать функцию следует до слагаемых со степенью 4 включительно, то порядок остатка ряда равен 5.

в ряд Тейлора


Разложить в ряд Тейлора функцию.

в ряд Маклорена функцию


Разложить в ряд Маклорена функцию f(x,y) = (1+x)m(1+y).


имеет особенность. Поэто му


Разложить в ряд функцию
Как несложно убедиться, функция в точке х= 2 имеет особенность. Поэто му использовать процедуру taylor() невозможно. Сначала опишем функцию:

в ряд Фурье приведенные далее


Разложить в ряд Фурье приведенные далее функции.
Определим процедуру с такими параметрами: раскладываемая в ряд функция (f), равенство, определяющее переменную и интервал разложения (VarAndRange), а также количество членов ряда (n).

Заключительные замечания


Описанные в этой главе методы разложения функций в ряды Тейлора, Фурье и основы работы со специальными функциями имеют непосредственное отнршение к решению дифференциальных уравнений — как обыкновенных, так и уравнений в частных производных. В частности, разложение в ряд Тейлора используется при нахождении приближенных решений для обыкновенных дифференциальных уравнений и их систем, а на разложении решений в ряды по ортогональным функциям основан метод разделения переменных при решении уравнений в частных производных. Речь об этом пойдет в главе 5. В следующей же главе обсуждаются вопросы, связанные с вычислением интегралов.