Научная статья на тему 'Алгоритмы символьного интегрирования в системе MathPartner'

Алгоритмы символьного интегрирования в системе MathPartner Текст научной статьи по специальности «Математика»

CC BY
329
37
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АЛГОРИТМ РИША / СИМВОЛЬНОЕ ИНТЕГРИРОВАНИЕ / НЕОПРЕДЕЛЕННЫЙ ИНТЕГРАЛ / СИСТЕМА MATHPARTNER / ДИФФЕРЕНЦИАЛЬНОЕ ПОЛЕ / ЭЛЕМЕНТАРНЫЕ ФУНКЦИИ / RISCH ALGORITHM / SYMBOLIC INTEGRATION / INDEFINITE INTEGRAL / CAS MATHPARTNER / DIFFERENTIAL FIELD / ELEMENTARY FUNCTIONS

Аннотация научной статьи по математике, автор научной работы — Корабельников Вячеслав Алексеевич

Начало созданию библиотеки процедур для символьного интегрирования положила теорема Риша, опубликованная в 1969 году. Однако за прошедшие почти 50 лет такая библиотека все еще не создана. Известно только несколько попыток создания подобных библиотек, но не одна из них не была завершена. В системе компьютерной математики MathPartner строится новая библиотека процедур для символьного интегрирования, в основе которой лежит теорема Риша. Мы даем подробное описание основных процедур, составляющих эту библиотеку, и роль каждой из них в алгоритме символьного интегрирования. Мы приводим уточненную процедурную блок-схему всего алгоритма и примеры вычисленных интегралов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Symbolic integration algorithms in CAS MathPartner

Risch theorem, published in 1969, gave beginning to creation of procedure library for symbolic integration. But such library, for past almost 50 years, still not been created. Some attempts of creation such libraries is known, but not one of them not finished. In computer algebra system MathPartner a new procedure library for symbolic integration, based on Risch theorem, is creating. We give detailed description of basic procedures contained in this library, and role of each procedure in symbolic integration algorithm. We represent procedural block diagram of whole algorithm and examples of computed integrals.

Текст научной работы на тему «Алгоритмы символьного интегрирования в системе MathPartner»

ISSN 1810-0198. Вестник Тамбовского университета. Серия: естественные и технические науки

Том 24, № 125 2019

© Корабельников В.А., 2019

DOI 10.20310/1810-0198-2019-24-125-75-89

УДК 517.312, 004.421.6

Алгоритмы символьного интегрирования в системе MathPartner

Вячеслав Алексеевич КОРАБЕЛЬНИКОВ

ФГБОУ ВО «Тамбовский государственный университет им. Г.Р. Державина» 392000, Российская Федерация, г. Тамбов, ул. Интернациональная, 33 ORCID: https://orcid.org/0000-0002-3920-8373, e-mail: [email protected]

Symbolic integration algorithms in CAS MathPartner

Vyacheslav A. KORABELNIKOV

Tambov State University named after G.R. Derzhavin 33 Internatsionalnaya St., Tambov 392000, Russian Federation ORCID: https://orcid.org/0000-0002-3920-8373, e-mail: [email protected]

Аннотация. Начало созданию библиотеки процедур для символьного интегрирования положила теорема Риша, опубликованная в 1969 году. Однако за прошедшие почти 50 лет такая библиотека все еще не создана. Известно только несколько попыток создания подобных библиотек, но не одна из них не была завершена. В системе компьютерной математики MathPartner строится новая библиотека процедур для символьного интегрирования, в основе которой лежит теорема Риша. Мы даем подробное описание основных процедур, составляющих эту библиотеку, и роль каждой из них в алгоритме символьного интегрирования. Мы приводим уточненную процедурную блок-схему всего алгоритма и примеры вычисленных интегралов.

Ключевые слова: алгоритм Риша; символьное интегрирование; неопределенный интеграл; система MathPartner; дифференциальное поле; элементарные функции Благодарности: Работа выполнена при поддержке РФФИ (проект № 16-07-00420). Для цитирования: Корабельников В. А. Алгоритмы символьного интегрирования в системе MathPartner // Вестник Тамбовского университета. Серия: естественные и технические науки. Тамбов, 2019. Т. 24. № 125. С. 75-89. DOI 10.20310/1810-0198-201924-125-75-89

Abstract. Risch theorem, published in 1969, gave beginning to creation of procedure library for symbolic integration. But such library, for past almost 50 years, still not been created. Some attempts of creation such libraries is known, but not one of them not finished. In computer algebra system MathPartner a new procedure library for symbolic integration, based on Risch theorem, is creating. We give detailed description of basic procedures contained in this library, and role of each procedure in symbolic integration algorithm. We represent procedural block diagram of whole algorithm and examples of computed integrals. Keywords: Risch algorithm; symbolic integration; indefinite integral; CAS MathPartner; differential field; elementary functions

Acknowledgements: The work is partially supported by the Russian Foundation for Basic Research (project no. 16-07-00420).

For citation: Korabelnikov V. A. Algoritmy simvol'nogo integrirovaniya v sisteme MathPartner [Symbolic integration algorithms in CAS MathPartner]. Vestnik Tambovskogo universiteta. Seriya: estestvennye i tekhnicheskie nauki - Tambov University Reports. Series: Natural and Technical Sciences, 2019, vol. 24, no. 125, pp. 75-89. DOI 10.20310/1810-01982019-24-125-75-89 (In Russian, Abstr. in Engl.)

Введение

Алгоритм вычисления производной для произвольной композиции элементарных функций хорошо известен, а соответствующие программы давно вошли во все библиотеки, которые поддерживают символьные вычисления. Для обратной операции, операции вычисления первообразной функции по ее производной, ситуация значительно более сложная. В отличие от дифференцирования, в интегрировании есть только одно общее правило J(f + g) = f f + f g. Но и оно применимо далеко не всегда (см. [1, с. 218]).

Алгоритм интегрирования дробно-рациональных функций был известен еще во времена И. Ньютона, Г.В. Лейбница и Д. Бернулли. Так как интеграл от дробно-рациональной функции всегда существует, то этот алгоритм позволяет проинтегрировать любую дробно-рациональную функцию. Главный недостаток этого алгоритма — это необходимость разложения знаменателя подынтегральной функции на линейные множители. В случае, если знаменатель подынтегрального выражения не раскладывается на линейные множители над кольцом Q, то потребуется добавлять к этому кольцу элементы из R или C. В 19 веке Ш. Эрмит улучшил этот алгоритм (см. [2]).

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

В 1969 году Р. Риш [3] использовал теорему Лиувилля чтобы описать алгоритм, который находит элементарное выражение для интеграла от элементарной функции, если оно существует. Если же не удалось вычислить первообразную, то это должно означать, что первообразная не является композицией элементарных функций (см. [4]). Стоит отметить, что алгоритм Риша позволяет производить интегрирование лишь чисто трансцендентных функций. Для алгебраических функций Р. Риш доказал существование алгоритма, но алгоритм им не был получен (см. [5]).

В 1971 году Дж. Мозесом на основе алгоритма Риша была написана программа под названием SIN, которая интегрировала чисто трансцендентные функции. В 1981 г. Дж. Дэвенпорт, также основываясь на алгоитме Риша, разработал алгоритм интегрирования чисто алгебраических функций. Для интегрирования произвольных элементарных функций программы Мозеса и Дэвенпорта были непригодны (см. [5]).

Алгоритм Дэвенпорта обладал большой вычислительной сложностью. Б. Трагер в 1984 г. внёс серьёзные улучшения в алгоритм Дэвенпорта. Обновлённый алгоритм был реализован в системах компьютерной алгебры Axiom и Maple (см. [5]). М. Бронштейн в 1990 г, обобщил алгоритм Трагера на произвольные элементарные функции. В 1998 г. М. Бронштейн написал монографию [2] по символьному интегрированию, в которой достаточно популярно изложил лучшие достижения в этой области, начиная с теоремы Лиувилля и заканчивая собственными результатами.

Полная программная реализация алгоритма Риша-Трагера-Бронштейна на данное время не завершена (см. [5]).

Целью данной работы является описание алгоритмов символьного интегрирования, которые сегодня применяются в системе компьютерной алгебры MathPartner [6]. Это еще один шаг на пути к созданию доказательного алгоритма вычисления первообразной без эвристик. Под «доказательным» понимается такой алгоритм, который либо вычисляет интеграл как композицию элементарных функций, либо сообщает, что подынтегральное выражение не интегрируемо в элементарных функциях. Данная работа описывает текущее состояние создаваемой библиотеки процедур символьного интегрирования на пути решения это сложной фундаментальной задачи.

1. Основные понятия

Сначала введем определения, необходимые для описания алгоритма Риша. Будем придерживаться терминологии, принятой в [7, с. 213-229].

Определение 1.1. Поле K называется дифференциальным полем, если на нем определен оператор дифференцирования d, удовлетворяющий двум условиям: d(ab) = d(a)b + ad(b), d(a + b) = d(a) + d(b). Элемент d(a) называется производной элемента a E K, производную также обозначают a'.

Определение 1.2. Пусть K — дифференциальное поле. Тогда множество C = {a E K : d(a) = 0} является подполем K. Элементы этого подполя называют константами.

Определение 1.3. Пусть K — дифференциальное поле с оператором дифференцирования d. Расширение E поля K называется дифференциальным расширением K, если на E определен оператор дифференцирования di, такой, что di(a) = d(a), Va E K. Оператор d1 называется продолжением оператора d и часто обозначается тем же символом d.

Отметим, что если E — алгебраическое расширение поля K, то дифференцирование поля K однозначно продолжается до дифференцирования поля E (см. [7, с. 217]).

Определение 1.4. Пусть Е — дифференциальное расширение дифференциального поля К. Если 9 Е Е удовлетворяет соотношению f 9' = f' для некоторого ненулевого элемента f Е К, то 9 называют логарифмом элемента f над К, и обозначают 9 = /од^).

Определение 1.5. Пусть Е — дифференциальное расширение дифференциального поля К. Если 9 Е Е удовлетворяет соотношению 9' = f'9 для некоторого ненулевого элемента f Е К, то 9 называют экспонентой элемента f над К, и обозначают 9 = ежр^).

Определение 1.6. Пусть К (ж) — дифференциальное поле. Будем обозначать К (ж, 9) дифференциальное расширение поля К (ж), которое получается добавлением в поле К (ж) элемента 9.

Определение 1.7. Элемент 9 является регулярным мономом над дифференциальным полем К, если 9 трансцендентен над К, и является либо логарифмом, либо экспонентой. Набор 91, 92,... , 9п называется набором регулярных мономов, если каждый ее элемент 9^ является регулярным мономом над К (ж, 91, 92,..., 9^-1), г = 1,..., п.

Определение 1.8. (см. [1, с. 225]) Пусть К — функциональное поле. Расширение К(91, 92,..., 9п) поля К называется полем элементарных функций над К, если каждая функция 9^ либо является регулярным мономом над К, либо алгебраична над К. Функция называется элементарной над К, если она принадлежит некоторому полю элементарных функций над К .

Сформулируем принцип Лиувилля (см. [1, с. 226]).

Теорема 1.1. Пусть К — дифференциальное поле, f (ж) Е К, д(ж) — элементарная над К функция, такая, что д'(ж) = f (ж). Тогда д(ж) можно представить в виде

где г>о(ж) Е К; ^(ж) принадлежат расширению К0 поля К, получающемуся присоединением к К конечного числа констант, алгебраических над К; с — константы из поля К0 .

Нам требуется конструировать наименьшее дифференциальное поле, содержащее подынтегральную функцию. Для решения этой задачи используется следующее утверждение, приведенное в [7, с. 225].

Теорема 1.2. Пусть К — поле констант, 91,... ,9к-1 (к > 0 )— набор регулярных мономов, Е — множество таких индексов 1 < г < к — 1, что 9^ является экспонентой 9г = ехр(^), а Ь — множество таких индексов 1 < г < к — 1, что 9^ является логарифмом 9^ = к^(^).

1. Пусть 9к = exp(/k) — экспонента над дифференциальным полем

Fk-1 = K(x, в\,..., 9к-1), /к S Fk-1. Если элемент 9к алгебраичен над Fk-1, то /к представляется в виде линейной комбинации с рациональными коэффициентами

/к = с + ni/i + mj9j,щ, m e Q,

ieE jeL

где c — некоторая константа.

2. Пусть вк = log(/k) — логарифм над дифференциальным полем

Fk-1 = K(x,91,... ,9k-1), /к S Fk-1. Если элемент 9k алгебраичен над Fk-1, то /к представляется в виде произведения рациональных степеней

/к = cПх Д j,ni,mj S Q,

ieE jeL

где c — некоторая константа.

2. Алгоритм Риша

Пусть х — независимая переменная над полем констант К, 91, 92,... , 9п — набор регулярных мономов, К(х, 91, 92,..., 9п) — дифференциальное поле и f Е К(х, 91, 92,..., 9п).

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

Пусть f — подынтегральная функция. Представим эту функцию в виде суммы f = р + д/г, где р, д, г имеют следующий вид

1. Если f Е К(х), то р, д, г € К[х], &д(г) > ^ед(д).

2. Если f € К(х, 9\,92,..., 9п), 9п = ^(и) и и Е К(х, 91,..., 9п-1), то р, д, г — полиномы от переменной 9п с коэффициентами из поля К(х, 91, 92,..., 9п-1), &д(г) > &д(д).

I

3. Если f Е К(х, 91, 92,..., 9п), 9п = ехр(и) и и Е К(х, 91,..., 9п-1), то р = ^ р^9;

i

n, i=—к

а q и r — полиномы от переменной 9n с коэффициентами из поля K(x, 91, 92,... , 9n-1), deg(r) > deg(q).

2.1. Интегрирование полиномиальной части

Алгоритм интегрирования полиномиальной части сводит вычисление интеграла в поле К(х, 91, 92,..., 9п) к вычислению одного или более интегралов в поле К(х, 91, 92,... , 9п-1). Каждый полученный интеграл рекурсивно вычисляется при помощи алгоритма Риша (подробнее см. [7, с. 229-236], [8]).

Рассмотрим интегрирование полинома р. По теореме Лиувилля

p = + Y1

d , с V

Oi .

vi

i=1

Возможны следующие два случая.

т т+1

1. Пусть 0„ = 1о§(и), и е К(х,0ь... ,0п-1). Для р = ^Рг0„, = , где

г=0 ^=0

Рг е К(х, 01,..., 0п-1), г = 0,1,..., т, е К(х, 6^,..., 0п-1), = 0,1,..., т +1, получаем (см. [8]) следующее выражение

т т+1 т д /

Е= Е + Е(г + ^П + Е С V.

г=0 г=0 г=0 г=1 г

Здесь старший коэффициент ¿т+1 является константой, обозначим ее ат+1. Для нахождения остальных коэффициентов ¿г, г = т, т — 1,... , 0 приравниваем коэффициенты при одинаковых степенях . Получаем систему дифференциальных уравнений

Рг = + (г + 1)*г+10П. (2.1)

Для того чтобы определить константу аг+1 и коэффициент ¿г (с точностью до аддитивной константы), перепишем уравнение 2.1 в виде

¿г = У (Рг — (г + 1)(*г+1 + «г+О^) = —(г + 1)^+1 ^ + ^(Рг — (г + 1)^+1^).

Элемент Рг — (г + принадлежит полю К(х, 01,... , #п-1). Воспользуемся ре-

курсией и вычислим этот интеграл при помощи алгоритма Риша. Необходимым условием интегрируемости f в классе элементарных функций является выполнение равенства /(Рг — (г + 1)^г+1^П) = абП + в, где а — константа, а в е К(х, 01,... , 0п-1). При его выполнении получаем аг+1 = —а/(г + 1) и находим значение коэффициента ¿г. Вычисляя ¿0, нужно отказаться от условия в е К(ж,01,... ,0п-1). Достаточно, чтобы существовал элементарный интеграл / (р0 — ¿1#„) (этот интеграл определяется с точностью до аддитивной константы).

2. Пусть 0„ = ехр(и), и е К(х,0ь ... ,#„-1). Для Р = ^ Рг^П, ^ = Е ¿7, где

г=-й 7=-&

Рг е К(х, 01,..., 0п-1), г = — &,...,/, ¿^ е К(х, 01,..., 0п-1), = —&,...,/, получаем следующее выражение

1 11 д ! Е Рг^„ = Е <^ + Е + Е Сг |.

г=-й г=-Й г=-Й г=1

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

Рг = + ¿¿ги', г = 0

^ , ^ (2.2) Р0 = ¿0 + Е .

7 = 1 '

Зафиксируем г = 0 и рассмотрим уравнение Рг = + г£ги' относительно ¿г. Пусть Рг — полином. Тогда ¿г — тоже полином. Если и' — полином, то оставляем уравнение

без изменений, а если u' = v/w, то чтобы «избавиться от знаменателей», домножаем уравнение на w.

Пусть p = r/g. Тогда t будет иметь вид t = a/b. Если u' — полином, то получаем уравнение

r a'b — ab' iu'a g b2 b

Следовательно, b = ^g, r = a'b — ab' + iu'ab = ba' + (—b' + iu'b)a. Если u' = v/w, то из соотношения

r a'b — ab' iva

g b2 bw

получаем: b = , r = a'bw — ab'w + ivab = bwa' + (ivb — b'w)a .

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Во всех рассмотренных выше случаях было получено уравнение вида

P = cía' + C2a, (2.3)

где P, c1, c2, a — полиномы от переменной 0га-1 с коэффициентами из K(x, #1,... , #га-2). Для определения полинома a из уравнения 2.3 возникает три ситуации.

1. P, c1,c2,a G K[x]. Пусть a = h=0 deg(P) = max{deg(c1)+h—1, deg(c2)+h} = h + max{deg(c1) — 1,deg(c2)}. Из последнего равенства находим h: h = deg(P) — max{deg(c1) — 1,deg(c2)}. Если h < 0, то интеграл от функции f не является элементарной функцией. Если h = 0, то a = P/c2. Если h > 0, то получаем формулу:

h \ h P = С1 ( ao + ^ ¿a¿xi-M + C2 ^ a¿x\ i=1 / i=0

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

2. 0n-1 = log(u). Пусть a = h=0 ai^n-1. Тогда deg(P) = h + max{deg(c1), deg(c2)}. Следовательно, h = deg(P) — max{deg(c1), deg(c2)}. Если h < 0, то интеграл от функции f не является элементарной функцией. Если h > 0, то получаем формулу

P = di ^ ai ^-1 + ^ ¿aí^n-1^ñ-11 ) + С2 ^ ai ^-1.

, г=0 г=1 / г=0

Приравнивая коэффициенты при одинаковых степенях 1, получаем систему дифференциальных уравнений относительно неизвестных а. Все выражения, входящие в эту систему, принадлежат К(х, ,... , 6^-2). Таким образом, мы свели решение дифференциального уравнения в К(х,61,... ,0га-1) к решению системы дифференциальных уравнений в К(х, 61,... , 6п-2).

3. 6п-1 = ехр(и). В этом случае в полиномах Р, с1 ,с2,а содержатся отрицательные степени 6п-1. Пусть а = ^а^П^. Обозначим через к1 старшую степень полинома

С1, а через к2 обозначим младшую степень полинома С1, через $1 и д2 старшую и младшую степени полинома с2 соответственно, через т1 и т2 старшую и младшую степени полинома Р. Тогда к = т1 — шах{к1,^1} и к2 = т2 — таж{к2,,д2}. Получаем формулу

Р = С1 Е + + С2 Е

Приравнивая коэффициенты при одинаковых степенях 1, получаем систему дифференциальных уравнений относительно неизвестных аг. Все выражения, входящие в эту систему, принадлежат К (ж, ,... , ^га_2). Таким образом, мы свели решение дифференциального уравнения в К(ж, 01,... ,0га-1) к решению системы дифференциальных уравнений в К (ж, 6^,... , 0п-2).

2.2. Интегрирование дробной части

Рассмотрим интегрирование д/г, ^ед(д) < ^вд(г). Разложим г на свободные от квадратов множители и представим д/г в виде суммы простых дробей д/г = ^г ?г/г^, где гг — множитель г, свободный от квадратов.

В случае, если = ехр(£), то перед разложением г на свободные от квадратов множители нужно в полиноме г вынести в качестве отдельного множителя переменную в максимальной степени. Пусть г = где г не делится на Полином г раскладываем на свободные от квадратов множители (см. [4]). Другими словами, представляем полином г в виде г = Пг г, где гг — множитель г, свободный от квадратов; гг не делится на Раскладываем дробную функцию д/г в сумму простых дробей д/г = а/б^ + ^г /г^, где гг — множитель г, свободный от квадратов. Интеграл от функции а/б^ вычисляется при помощи алгоритмов интегрирования полиномиальной части.

Нам нужно проинтегрировать каждую полученную дробь. Используем следующее утверждение из [4].

Теорема 2.1. Пусть к — свободный от квадратов

полином от переменной с коэффициентами из К (ж, 01, 02,..., 0п-1), со старшим коэффициентом, равным единице. Тогда, если к не делится на в случае, когда — экспонента, то НОД(к, к/) = 1.

Из этой теоремы, а также из того факта, что К (ж, , 02,... , является Евклидовым кольцом, следует, что существуют такие а, Ь € К (ж, 01,... , 0П), что гга + г/ Ь = 1.

Воспользуемся алгоритмом Эрмита:

Г Ок = _ дкь + [ (к — 1)дка + (дкЬ)/

1 гк = (к — 1)гк-1 У (к — 1)гк-1 ,

где а, Ь € К (ж, 01,... , 0П), гга+г^ Ь =1; и к > 1. В результате применения этой формулы степень знаменателя уменьшилась, таким образом мы должны повторно применять эту формулу, пока к =1 (подробнее см. [4]).

Остается проинтегрировать выражение u/v, где v —свободный от квадратов полином. Рассмотрим три случая (подробнее см. [1, с. 222-236]):

1. u/v G K(x). Определим R(y) = resu/tantx(u — yv',v). Корни полинома R(y) обозначим ai, a2,... , Справедлива формула

u v

^ O 1п(НОД(и - aiv',v)).

i=1

2. u/v G K(x,0^02,...,0n), где 0n — логарифм. Пусть R(y) = resu/tanien(u — yv',v). Если хотя-бы один корень a1,a2,...,as полинома R(y) не является константой, то функция f не имеет элементарного интеграла. Если его корни a1, a2,... , as — констан-

ты, то

u v

J^ai ln(НОД(u — a,v',v)). i=1

3. u/v G K(x, 01, 02,... , 0n), где 0n — экспонента. В этом случае положим R(y) = resu/iani<9n(u — y(v' — N£'v),v), где N — степень полинома v, £ — аргумент функции 0n. Если хотя бы один корень a1, a2,... , as полинома R(y) не является константой, то функция f не имеет элементарного интеграла. Если его корни a1, a2,... , as — констан-

u v

^ог(1п(НОД(и - Oi(v' - N£'v), v)) - ),

i=1

где n — степень полинома НОД(и — a^v' — N£'v),v).

3. Библиотека процедур для символьного интегрирования в системе

MathPartner

Все процедуры библиотеки расположены в четырёх пакетах:

• Integrate — содержит алгоритмы построения набора регулярных мономов.

• StrucTheorem — содержит алгоритмы для проверки трансцендентности функций.

• IntPolynom — содержит алгоритмы интегрирования полиномиальной части интеграла.

• IntegrateFractions — содержит алгоритмы интегрирования дробной части интеграла.

ты, то

3.1. Пакет процедур Integrate

Содержит 11 процедур, основными являются процедуры:

integrate: Заменяет в подынтегральном выражении f тригонометрические, обратные тригонометрические, гиперболические, обратные гиперболические и показательные выражения комбинацией логарифмов и экспонент. Вызывает процедуру mainProcOflnteg, которая возвращает первообразную функции f. Затем при помощи

процедур из пакета обработки функций МаЛРаЛпег, полученная функция упрощается. Комбинации логарифмов и экспонент заменяются на тригонометрические, обратные тригонометрические гиперболические, обратные гиперболические функции.

mainProcOfInteg: Основная процедура интегрирования функции. Возвращает первообразную от входного выражения. Выделяет в подынтегральном выражении список логарифмов и экспонент /0,...,/п. Этот список отсортирован следующим образом. Чем глубже в аргументах находятся логарифм или экспонента, тем ближе они находятся к началу списка. С помощью процедуры makeRegularMonomialsSequence (пакет процедур Б^исТЬеогет) составляет из списка /0,...,/п набор регулярных мономов. Отделяет полиномиальную и дробную части интеграла. Интегрирует отдельно полиномиальную часть (пакет процедур 1ПРо1упот) и отдельно дробную часть интеграла (пакет процедур ]П^га1еЕгас1юп).

3.2. Пакет процедур StructTheorem

Содержит 18 процедур, процедура makeRegularMonomialsSequence является основной. Она составляет набор регулярных мономов на основе списка всех логарифмов и экспонент, содержащихся в подынтегральном выражении.

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

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

3.3. Пакет процедур IntPolynom

Содержит 20 процедур, основными являются: integPol: Интегрирование полинома от переменной ж. integPolLn: Интегрирование полинома от переменной /п(м). integPolExp: Интегрирование полинома от переменной ежр(и).

3.4. Пакет процедур IntegrateFractions

Содержит 17 процедур, основными являются:

Hermite: Интегрирование дробной функции по методу Эрмита.

LogarithmicPart: Вычисление интеграла от дробной функции со свободным от квадратов знаменателем.

partialFraction: Разложение дробной функции в сумму простейших дробей.

3.5. Общая схема алгоритма.

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

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

Если д/г не равно нулю, то используя процедуру FactorPol_SquareFree из пакета полиномиальных вычислений Ма^РаЛпег раскладываем г на произведение свободных от квадратов множителей г = ^г г*. Затем вызываем процедуры из пакета integrateFractiions. Процедура partialFraction выражает д/г в виде суммы простейших дробей д/г = г ?г/г.. К каждой дроби из полученной суммы применяем алгоритм Эрмита (процедура Hermite), и затем производим вычисление интеграла от дробной функции со свободным от квадратов знаменателем (процедура LogarithmicPart). Если интеграл от очередной дроби не выражается через элементарные функции, то интеграл от функции f так же не выражается через элементарные функции.

Если р не равно нулю, то вызываем процедуры из пакета intPolynom. Возможны три случая:

Если р — полином переменной х, то процедура integPol вычисляет интеграл от р.

Если р — полином от переменной вхр(£), то процедура integPolExp составляет систему дифференциальных уравнений, описанных в разделе 2.2. Решение этой системы уравнений выражается через интегралы, не содержащие последний регулярный моном. Каждый такой интеграл рекурсивно вычисляем алгоритмом Риша. Если система уравнений не имеет решений, то интеграл от функции f не выражается через элементарные функции.

Если р — полином переменной /п(£), то процедура integPolLn составляет и решает систему дифференциальных уравнений, описанных в разделе 2.1. Решение этой системы уравнений выражается через интегралы, не содержащие последний регулярный моном. Каждый такой интеграл рекурсивно вычисляем алгоритмом Риша. Если система уравнений не имеет решений, то интеграл от функции f не выражается через элементарные функции.

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

Общая схема алгоритма изображена на рис. 1.

Рис. 1. Общая схема алгоритма

4. Примеры вычисления первообразных

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

Таблица 1

Дробно-рациональные функции

функция результат

3/(х + 2) 3 ■ 1п(а6з(х + 2))

3х/(х + 2) (3х - 6 ■ 1п(а6з(х + 2)))

(3х + 4)/(х + 2) (3х - 2 ■ 1п(а6з(х + 2)))

1/(х2 + х + 1) 2/3 ■ 3(1/2) ■ аг^(2/3х ■ 3(1/2) + 1/3 ■ 3(1/2))

(4х + 5)/(х2 + 2х + 3) (2 ■ 1п(а6з(1/2х2 + х + 3/2)) + 1/2 ■ 2(1/2) ■ arctg(1/2x ■ 2(1/2) + 1/2 ■ 2(1/2)))

(4х2 + 5х + 6)/(х2 + 2х + 3) (4х - (((-3/2) ■ 2(1/2) ■ (-1) ■ arctg(1/2x ■ 2(1/2) + 1/2 ■ 2(1/2))) + 3/2 ■ 1п(а6з(9/2х2 + 9х + 27/2))))

1/(х3 + х) 1п(а6в(х)) - 1/2 ■ 1п(а6з(х2 + 1))

1/(х2 + 1) аг^(х)

Таблица 2

Тригонометрические функции

функция результат

вт(2х + 3) (-1/2) ■ сов(2х + 3)

сов(2х + 3) 1/2 ■ вт(2х + 3)

вт(х)2 сов(х)2 1/8х - 1/32 ■ вт(4х)

tg(2x + 3) (-1/2) ■ 1п(а&з(сов(2х + 3)))

с^(2х + 3) 1/2 ■ 1п(а&з(вт(2х + 3)))

1/ сов(х)2 ^(х)

1/ вт(х)2 - ctg(x)

1/(1 - сов(х)) - ^(х/2)

tg(x)2 (вт(х) - х ■ сов(х) - г ■ сов(х))/сов(х)

вт(х) ■ tg(cos(x)) 1п(а&з(со8(сов(х))))

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Таблица З Другие типы функций

функция результат

вт(ж) exp(cos^)) — 1 ■ exp(cos(ж))

exp^) ■ вт(ж) 1/2 ■ exp(ж) ■ sin(ж) — 1/2 ■ exp(ж) ■ cos^)

(y2 + 1) ■ exp(y) ((y2 ■ exp(y) +3 ■ exp(y)) — 2У ■ exp(y))

(y2 + 1) ■ ln(y) 1/3y ■ ln(y3) + 1/3y3 ■ ln(y) + (—1/9)y3 + (—y)

1/ж 1п(ж) 1п(ж)2/2

(ж + 1/ж) 1п(ж) (1/2 ■ (1п(ж))2 + 1/2ж2 ■ 1п(ж)) — 1/4ж2

(ж + exp(ж))2 ((1/2 ■ exp^) + 2ж ■ exp(ж) + 1/3ж3) — 2 ■ exp^))

2 ■ exp(ж)/(exp(4ж) — 1) — 1 ■ (arctg(exp(ж)) — 1/2 ■ ln^s^l^))) + 1/2 ■ 1л(аб8(<й(1/2ж))))

(1п(ж) + 1) ■ жx жx

log(n, ж) (ж ■ 1п(ж) — ж)/ ln(n)

nx (nx)/ln(n)

5. Заключение

Задача вычисления первообразной для композиции элементарных функций, когда результат может быть записан через элементарные функции и алгебраические и трансцендентные постоянные, привлекает внимание математиков с давних времен. И несмотря на то, что общие подходы достаточно понятны, эта задача в виде библиотеки программ все еще ждет своего решения. Мы надеемся, что настоящее описание текущего состояния библиотеки программ в системе MathPartner будет полезным и позволит приблизить полное решение этой классической математической задачи.

б. Благодарности

Автор благодарит профессора Г.И. Малашонка за постановку задачи и многочисленные обсуждения, а также выражает признательность участникам семинара по компьютерной алгебре ТГУ за критику.

Список литературы

[1] Дж. Дэвенпорт, И. Сирэ, Э. Турнье, Компьютерная алгебра. Системы и алгоритмы алгебраических вычислений, Мир, М., 1991.

[2] M. Bronstein, Symbolic Integration Tutorial, ISSAC'98 and Differential Algebra Workshop (Rostock, August 1998; Rutgers, November 2000).

[3] R. Risch, "The problem of integration in finite terms", Trans. Amer. Math. Soc., 1969, 167-189.

[4] B. Terelius, Symbolic Integration, Master of science thesis, Stockholm, 2009.

[5] Д. А. Павлов, "Символьное интегрирование", Компьютерные инструменты в образовании,, 2010, №2, 38-43.

[6] Г. И. Малашонок, Руководство по языку "Mathpar", Издательство Тамбовского университета, Тамбов, 2013.

[7] Е. В. Панкратьев, Элементы компьютерной алгебры, МГУ, М., 2007.

[8] С. М. Тарарова, "К проблеме построения алгоритма символьного интегрирования", Вестник Тамбовского университета. Серия: естественные и технические науки, 17:2 (2012), 607-617.

References

[1] J. Davenport, Y. Siret, E. Tournier, Computer Algebra. Systems and Algorithms of Algebraic Computation, Mir, Moscow, 1991 (In Russian).

[2] M. Bronstein, Symbolic Integration Tutorial, ISSAC'98 and Differential Algebra Workshop (Rostock, August 1998; Rutgers, November 2000).

[3] R. Risch, "The problem of integration in finite terms", Trans. Amer. Math. Soc., 1969, 167-189.

[4] B. Terelius, Symbolic Integration, Master of science thesis, Stockholm, 2009.

[5] D.A. Pavlov, "Symbolic integration", Computer Tools in Education, 2010, №2, 38-43 (In Russian).

[6] G.I. Malaschonok, Language Guide "Mathpar", Publishing House of Tambov University, Tambov, 2013 (In Russian).

[7] E.V. Pankrat'yev, Elements of Computer Algebra, MSU, Moscow, 2007 (In Russian).

[8] S. M. Tararova, "To the problem of constructing an algorithm for symbolic integration", Tambov University Reports. Series: Natural and Technical Sciences, 17:2 (2012), 607-617 (In Russian).

Информация об авторе

Корабельников Вячеслав Алексеевич,

аспирант, кафедра функционального анализа. Тамбовский государственный университет им. Г.Р. Державина, г. Тамбов, Российская Федерация. E-mail: [email protected] ORCID: https://orcid.org/0000-0002-3920-8373

Поступила в редакцию 23.01.2019 г. Поступила после рецензирования 27.02.2019 г. Принята к публикации 28.03.2019 г.

Information about the author

Vyacheslav A. Korabelnikov, PostGraduate Student, Functional Analysis Department. Tambov State University named after G.R. Derzhavin, Tambov, the Russian Federation. E-mail: [email protected] ORCID: https://orcid.org/0000-0002-3920-8373

Received 23 January 2019 Reviewed 27 February 2019 Accepted for press 28 March 2019

i Надоели баннеры? Вы всегда можете отключить рекламу.