Procedural interpretation of symbolic integration algorithms in MathPartner system

Cover Page

Cite item

Full Text

Abstract

The work is devoted to the development of a procedure library for the computer algebra system MathPartner. A software implementation of symbolic integration algorithms is being developed. The solution of the problem of symbolic integration is divided into three stages. At the first stage, the integrand is reduced to the form necessary for applying the Rish algorithm. A description is given of the corresponding procedures that reduce the integrand to an expression containing a finite set of arithmetic operations and compositions of logarithmic functions and exponentials, and also make a set of regular monomials. At the second stage, the integration of the fractional part of the integrand is performed. A description is given of the procedures that reduce the fractional part to the form required for the application of the integration algorithm. At the third stage, the polynomial part of the integrand is integrated. Procedures are obtained that allow, depending on the type of the integrand, to apply the appropriate integration algorithms. The appendix contains a description of the user’s language commands of the MathPartner system, which are designed to calculate integrals in symbolic form.

Full Text

Введение Система компьютерной алгебры это программный комплекс, предназначенный для выполнения символьных и численных вычислений. Одной из современных систем компьютерной алгебры является MathPartner. В отличие от большинства известных систем, MathPartner представляет из себя web-сервис, который свободно доступен в Интернете. Язык этой системы, называемый Mathpar, является по сути некоторым диалектом языка LaTeX. MathPartner позволяет сохранять и текст задания, и про- межуточные вычисления, и результат вычислений. Пользователь имеет возможность сохранять исходный текст, текст в формате LaTeX и в виде изображения (pdf, jpg) [1]. Система MathPartner содержит большую библиотеку процедур для символьно-чис- ленных вычислений. Одним из пакетов этой библиотеки является пакет процедур для символьного интегрирования. Алгоритмы, лежащие в основе этой библиотеки процедур, 168 В. А. Корабельников описаны в [2]. В этой статье приведены теоретические основы алгоритмов символьно- го интегрирования, реализованные в системе MathPartner. В рамках этих алгоритмов строится набор регулярных мономов и подынтегральное выражение представляется в виде суммы правильной дроби и полинома. Показан на алгоритмическом уровне про- цесс интегрирования полинома и правильной дроби. Рассматривается структура пакета процедур для символьного интегрирования и даются характеристики основным проце- дурам. Приводится общая блок-схема всего алгоритма символьного интегрирования. 1. Формирование набора регулярных мономов В данной статье используются обозначения, принятые в [3, с. 213-229]. Процедура integrate. В системе MathPartner для интегрирования функций раз- работана процедура integrate. На входе процедура получает подынтегральную функ- цию. Процедура integrate вызывает процедуру toComplex, которая подготавливает подынтегральное выражение к процессу интегрирования. Полученное выражение пере- дается процедуре mainProcOfInteg, которая вычисляет первообразную функции, выра- женную в виде комбинации логарифмов и экспонент. После получения первообразной процедура integrate производит ее упрощение. Комбинации логарифмов и экспонент заменяются на тригонометрические, обратные тригонометрические, гиперболические, обратные гиперболические функции. Логарифмы от произведений заменяются на со- ответствующие суммы логарифмов. Появившиеся числовые слагаемые удаляются из первообразной. Полученная функция выдается пользователю в качестве ответа. Для применения алгоритма Риша подынтегральная функция должна быть выраже- на через комбинацию натуральных логарифмов и экспонент [4, с. 225]. Для преобразова- ния подынтегральной функции процедура integrate вызывает процедуру toComplex. Процедура toComplex. Реализованная в пакете обработки функций системы MathPartner, процедура toComplex предназначена для проведения замены тригономет- рических, обратных тригонометрических, гиперболических, обратных гиперболических функций на соответствующие комбинации логарифмов и экспонент, и использует сле- дующие известные формулы: sin(x) = (exp(ix) exp( ix))=2i; cos(x) = (exp(ix) + exp( ix))=2; arctg(x) = i=2(ln(1 ix) ln(1 + ix)); arcctg(x) = i=2(ln((x i)=x) ln((x + i)=x)); sh(x) = (exp(x) exp( x))=2; ch(x) = (exp(x) + exp( x))=2; arctgh(x) = 1=2ln((1 + x)=(1 x)); arcctgh(x) = 1=2ln((x + 1)=(x 1)): Процедура mainProcOfInteg. На входе получает функцию, преобразованную про- цедурой toComplex. Возвращает первообразную от входного выражения. Процедура mainProcOfInteg вызывает процедуру convertLOGandPOWtoLNandEXP, ко- торая предназначена для замены показательных функций на соответствующие комби- нации логарифмов и экспонент: f(x)g(x) = exp(g(x) ln(f(x))) . Эта процедура также ПРОЦЕДУРНАЯ ИНТЕРПРЕТАЦИЯ АЛГОРИТМОВ В СИСТЕМЕ MATHPARTNER 169 приводит логарифмы и показательные функции к основанию e : ax = exp(a ln(x)) , loga(x) = ln(x)= ln(a): Процедура mainProcOfInteg вызывает процедуру makeListOfLNandEXP, которая со- ставляет список логарифмов и экспонент, содержащихся в подынтегральном выраже- нии. Список составляется таким образом, что чем глубже вложены в аргументах ло- гарифм или экспонента, тем ближе к началу списка они находятся. Например, для подынтегрального выражения exp(x2 ln(x3+x ln(x)+exp(x2))) список будет иметь вид: [ln(x); exp(x2); ln(x3 + x ln(x) + exp(x2)); exp(x2 ln(x3 + x ln(x) + exp(x2)))]: Процедура mainProcOfInteg вызывает процедуру makeRegularMonomialsSequence, которая преобразует список логарифмов и экспонент в набор регулярных мономов. Про- исходит построение наименьшего поля, которому принадлежит подынтегральное выра- жение. Исходным является поле C(x) рациональных функций над полем комплексных чисел (см. [4, с. 2254]). Это поле последовательно расширяется добавлением в него ло- гарифмов и экспонент из списка. Подынтегральная функция представляется в виде рациональной функции от по- следнего регулярного монома из набора. Если выражение представляет собой непра- вильную дробь, то выделяется целая часть, и дробь приводится в правильный вид. Процедура mainProcOfInteg вызывает процедуру polPartInteg для интегрирования полиномиальной части подынтегрального выражения и процедуру fracPartInteg для интегрирования дробной части подынтегрального выражения. Собирает полученные результаты и возвращает в процедуру integrate. Процедура makeRegularMonomialsSequence. Действия процедуры makeRegular- MonomialsSequence основаны на следующем алгоритме. Просматриваются все лога- рифмы в списке. Если аргумент логарифма представляет собой дробь = p=q , то в подынтегральном выражении ln() заменяется на ln(p) ln(q) . ln() меняется в списке на ln(p) . ln(q) вставляется в список после ln(p) . Просматриваются последовательно все элементы списка логарифмов и экспонент начиная с первого элемента. Начальный элемент списка является регулярным мономом, т. е. расширяет поле C(x) . Этот элемент остается в списке. Далее для определения регулярных мономов используется следующий алгоритм. 1. Пусть рассматриваемым элементом списка является логарифм. Тогда происходит проверка, выражается ли рассматриваемый элемент списка через предыдущие. Пусть 1; 2; : : : ; k 1 уже добавленные в C(x) регулярные мономы, ln(fk) рассматри- ваемый элемент списка, E множество индексов i , 0 i k 1 , таких что i экспонента, L множество индексов j , 0 j k 1 , таких что j логарифм. Со- гласно структурной теореме [3, с. 225], если рассматриваемый логарифм принадлежит уже сформированному полю, то его аргумент должен выражаться в виде произведения fk = c Y i2E ni i Y j2L fmj j ; 170 В. А. Корабельников где ni;mj 2 Q, fj аргумент j , c 2 C . Поэтому производится поочередное де- ление аргумента рассматриваемого логарифма на предыдущие элементы списка. Если элементом списка является экспонента, то производится деление на саму экспоненту. Если элементом списка является логарифм, то производится деление на аргумент это- го логарифма. Если деление проходит без остатка, то рассматриваемый элемент списка удаляется. Если деление происходит с остатком, то как в подынтегральном выраже- нии, так и в последующих элементах списка производится замена рассматриваемого логарифма на сумму логарифма от остатка и элемента деления. Производится замена рассматриваемого элемента списка на логарифм, аргументом которого является оста- ток от деления. 2. Пусть рассматриваемым элементом списка является экспонента. Тогда происходит проверка, выражается ли рассматриваемый элемент списка через предыдущие. Пусть 1; 2; : : : ; k 1 уже добавленные в C(x) регулярные мономы, exp(fk) рассматри- ваемый элемент списка, E множество индексов i , 0 i k 1 , таких что i экспонента, L множество индексов j , 0 j k 1 , таких что j логарифм. Согласно структурной теореме [3, с. 225], если рассматриваемая экспонента принадле- жит уже сформированному полю, то ее аргумент должен выражаться в виде линейной комбинации fk = c + X i2E nifi + X j2L mjj ; где ni;mj 2 Q, fi аргумент i , c 2 C . Составляется система линейных уравне- ний. Если она имеет решение, то рассматриваемый элемент удаляется из списка. Это решение позволяет выразить рассматриваемый элемент списка через предыдущие. В подынтегральном выражении и в последующих элементах списка меняется рассматри- ваемый элемент на его выражение через предыдущие элементы списка. Если система не имеет решения, то рассматриваемый элемент оставляется в списке без изменений. Таким образом, список логарифмов и экспонент преобразуется в набор регулярных мономов. Процедура makeRegularMonomialsSequence передает полученный набор регу- лярных мономов в процедуру mainProcOfInteg. 2. Интегрирование дробной части Процедура fracPartInteg. Для подготовки дроби к интегрированию процедура fracPartInteg производит вызов процедур FactorPol_SquareFree и partialFraction. Процедура FactorPol_SquareFree, реализованная в пакете полиномиальных вычис- лений системы MathPartner, производит разложение знаменателя на свободные от квад- ратов множители. Процедура partialFraction производит разложение дроби на сумму простейших дробей с помощью метода неопределенных коэффициентов. Процедура fracPartInteg производит интегрирование отдельно каждого слагае- мого из суммы. Согласно принципу Лиувилля (см. [4, с. 226]) и леммам о разложе- нии (см. [4, с. 227,232]), интеграл от каждого слагаемого выражается в виде суммы ПРОЦЕДУРНАЯ ИНТЕРПРЕТАЦИЯ АЛГОРИТМОВ В СИСТЕМЕ MATHPARTNER 171 дробной функции и логарифмов с постоянными коэффициентами. Если показатель степени, в которую возведен знаменатель рассматриваемого слага- емого, больше единицы, то процедура fracPartInteg вызывает процедуры Hermite и LogarithmicPart. Процедура Hermite разделяет интеграл на сумму рациональной и логарифмической части и вычисляет рациональную часть интеграла. Процедура LogarithmicPart вычисляет логарифмическую часть интеграла. Если показатель степени, в которую возведен знаменатель рассматриваемого сла- гаемого, равен единице, то полином, стоящий в знаменателе, свободен от квадратов, и рациональная часть интеграла равна нулю. Процедура LogarithmicPart вычисляет логарифмическую часть интеграла. Процедура partialFraction. Действия процедуры partialFraction основывают- ся на следующих рассуждениях (см. [5, с. 38]). Пусть p=q полученная дробная часть, q = Q qi i , где qi - свободный от квадратов полином. Тогда p=q = p1;1=q1 + p2;1=q2 + p2;2=q2 2 + : : : + pk;1=qk + pk;2=q2 k + : : : + pk;k=qk k ; где pi;j = Ai;j при qi = x a , pi;j = Ai;jx + Bi;j при qi = x2 + ax + b , где Ai;j ;Bi;j числа, полученные с помощью метода неопределенных коэффициентов. Процедура Hermite. Действия процедуры Hermite основаны на алгоритме Эрми- та (подробнее см. [4, с. 220, 230, 235]). Z pi;j qj i = pi;jb (j 1)qj 1 i + Z (j 1)pi;ja + (pi;jb)0 (j 1)qj 1 i ; где qia+q0i b = 1 и j > 1 . В результате применения этой формулы степень j , в которую возведен знаменатель, уменьшилась. Таким образом, эта формула повторно применя- ется пока j 6= 1 . Процедура LogarithmicPart. Действия процедуры LogarithmicPart основаны на следующем алгоритме (см. [4, с. 222]): 1. Интегрируемая дробь обозначается u=v . 2. Если числитель и производная знаменателя являются числами, то формируется ответ: u ln(v) . Ответ передается в процедуру fracPartInteg. 3. Если u=v дробь, числитель и знаменатель которой являются полиномами от x , то вычисляется результант Res = resultantx(u yv0; v) полином новой перемен- ной y . Если u=v дробь, числитель и знаменатель которой являются полиномами от ln() , то вычисляется результант Res = resultantln()(u yv0; v) полином новой пе- ременной y . Если u=v дробь, числитель и знаменатель которой являются полиномами от exp() , то вычисляется результант Res = resultantexp()(u y(v0 deg(v)v0); v) по- лином новой переменной y . 4. Процедура solvePolynomEq, реализованная в пакете полиномиальных вычислений системы MathPartner, используется для нахождения всех корней результанта Res в по- ле комплексных чисел. Просматриваются все найденные корни. Упрощается очередной 172 В. А. Корабельников корень. Если корень содержит переменную интегрирования, то интеграл от исходной функции не выражается в элементарном виде. Вычисление интеграла останавливается, и пользователь информируется о том, что функция не интегрируема в элементарном виде. 5. Определяется V (y) = НОД(u yv0; v) , если u=v дробь, числитель и знаменатель которой являются полиномами от x или от ln() ; V (y) = НОД(u y(v0 deg(v)v0); v) , если u=v дробь, числитель и знаменатель которой являются полиномами от exp() . Корень результанта подставляется в V (y) . Полученное выражение упрощается. Пер- вообразная от дроби p=q выражается в виде формулы: c ln(V (c)) , где c рассматри- ваемый корень результанта. Полученный логарифм прибавляется к общему ответу. 3. Интегрирование полиномиальной части Процедура polPartInteg. Интегрирование полиномиальной части выполняет про- цедура polPartInteg. Возможны три случая: 1. Если полиномиальная часть полином от x , то вызывается процедура integPol. Ее действия основаны на формуле R P aixidx = P aixi+1=(i + 1) . 2. Если полиномиальная часть полином от ln() , то вызывается процедура integPolLn. 3. Если полиномиальная часть полином от exp() , то вызывается процедура integPolExp. Процедура integPolLn. Действия процедуры integPolLn основываются на следу- ющих рассуждениях. Пусть P полиномиальная часть подынтегрального выражения. Согласно принципу R Лиувилля (см. [4, с. 226]) и лемме о разложении (см. [4, с. 227]), P = v0+ Pd i=0 ci log(vi) , где ci 2 C , v0; v1; : : : ; vd функции составленные из логариф- мов и экспонент, содержащихся в выражении P , и функция v0 является полиномом от ln() . Обозначим v0 = Pm+1 j=0 ti ln()i , P = Pm i=0 pi ln()i , где ti; pi; функции, составленные из логарифмов и экспонент, содержащихся в выражении P . Подставляя в это уравнение выражение для P и v0 , получим выражение Xm i=0 pi ln()i = mX+1 i=0 t0 i ln()i + Xm i=0 (i + 1)ti+1 ln()i 0 + Xd i=1 ci v0i vi : Для нахождения неизвестных ti; i = m+ 1; : : : ; 0 приравниваем коэффициенты при одинаковых степенях ln() и получаем систему дифференциальных уравнений 8>>>>>>>>>< >>>>>>>>>: 0 = t0 m+1 pm = t0 m + (m + 1)tm+1 0 pm 1 = t0 m 1 + mtm 0 : : : p1 = t0 1 + 2t2 0 p0 = t0 0 + t1 0 + Pd i=1 ci v0i vi : (1) ПРОЦЕДУРНАЯ ИНТЕРПРЕТАЦИЯ АЛГОРИТМОВ В СИСТЕМЕ MATHPARTNER 173 В процедуре integPolLn выполняются следующие действия. Создается список B длиной m + 2 , в который записываются решения уравнений системы (1). Решением первого уравнения является константа, которую невозможно определить рассматривая только первое уравнение. Эта константа определяется при решении второго уравнения. Поэтому изначально в элемент списка B[m+2] записывается значение 0 . Дальнейшие действия повторяются для каждого уравнения системы (1). При помощи процедуры mainProcOfInteg вычисляются A1 = R pm , A2 = R ((m + 2)B[m + 2]=ln()0) . Если про- цедура mainProcOfInteg не вернула значение A1 или A2 , то и интеграл от подынте- гральной функции не выражается в элементарном виде. Вычисление интеграла оста- навливается, и пользователь информируется о том, что функция не интегрируема в элементарном виде. Если процедура mainProcOfInteg вернула значения A1 и A2 , то в элемент списка B[m + 1] записывается значение разности A1 A2 . Если в выраже- нии элемента списка B[m + 1] есть функция ln() , то выделяется выражение h , на которое умножен ln() . Если h содержит переменную интегрирования, то интеграл от подынтегральной функции не выражается в элементарном виде. Вычисление интеграла останавливается, и пользователь информируется о том, что функция не интегрируема в элементарном виде. Если h не содержит переменную интегрирования, происходит сложение h=(m+2) и выражения элемента списка B[m+2] . Результат записывается в B[m + 2] вместо старого значения. Происходит вычитание h ln() из выражения элемента списка B[m+1]; и результат записывается в элемент списка B[m+1] вместо старого значения. Таким образом, найдено решение очередного уравнения. Собирается ответ: Pm+2 i=0 B[i] ln()i . Процедура integPolExp. Действия процедуры integPolExp основываются на сле- дующих рассуждениях. Пусть P полиномиальная часть подынтегрального выраже- ния. Согласно принципу Лиувилля (см. R [4, с. 226]) и лемме о разложении (см. [4, с. 227]), P = v0 + Pd j=1 cj log(vj) , где cj 2 C , v0; v1; : : : ; vd функции, составленные из ло- гарифмов и экспонент, содержащихся в выражении P , и функция v0 является поли- номом от exp() . Обозначим v0 = Pm i= k ti exp()i , P = Pm i= k pi exp()i , где ti; pi; функции, составленные из логарифмов и экспонент, содержащихся в выражении P . Подставляя в это уравнение выражение для P и v0 , получим выражение Xl i= k pi exp()i = Xl i= k t0 i exp()i + Xl i= k iti exp()iu0 + Xd j=1 cj v0j vj : Приравниваем коэффициенты при одинаковых степенях exp() и получаем систему дифференциальных уравнений 8< : pi = t0 i + iti0; i 6= 0 p0 = t0 0 + Pd j=1 cj v0j vj : (2) В процедуре integPolExp выполняются следующие действия. Создается список B длиной m+k+1 , в который будут записываться решения системы дифференциальных 174 В. А. Корабельников уравнений (2). В B[i]; i 6= 0 , записываются значения ti . Рассматривается уравнение pi = t0 i+i0ti , i 6= 0 . Вызывается процедура notDenom, которая преобразует полученное уравнение к полиномиальному виду. Вызывается процедура solveRischDiffEq, которая решает дифференциальное уравнение и записывает решение в B[i] . Для i = 0 вычисляется R p0 при помощи процедуры mainProcOfInteg, и результат записывается в B[0] . Собирается ответ: Pm i= k B[i] exp()i . Процедура notDenom. Действия процедуры notDenom основываются на следующих рассуждениях (см. [6]). Рассматривается дифференциальное уравнение pi = t0 i+i 0 ti . Пусть pi полином. Тогда ti тоже полином. Если 0 полином, то уравнение остается без изменений, а если 0 = v=w; то чтобы ѕизбавиться от знаменателейї, уравнение домножается на w: Пусть pi = r=g: Тогда ti имеет вид ti = a=b: Если 0 полином, то получается уравнение r g = a0b ab0 b2 + i0a b : Следовательно, b = p g; r = a0b ab0 + iu0ab = ba0 + ( b0 + iu0b)a . Если 0 = v=w; то из соотношения r g = a0b ab0 b2 + iva bw получается: b = p g=w; r = a0bw ab0w + ivab = bwa0 + (ivb b0w)a . Получено уравнение вида: P = c1a0 + c2a ; где P; c1; c2; a полиномы. Процедура solveRischDiffEq. Действия процедуры solveRischDiffEq основаны на следующем алгоритме (см. [6]). Рассматривается дифференциальное уравнение от- носительно a : P = c1a0 +c2a , где P; c1; c2 полиномы либо от x , либо от ln( ) , либо от exp( ) . Возможны следующие три случая: 1. Если P; c1; c2 полиномы от x , то неизвестная a полином от x . Степень полинома a обозначается через n . Вычисляется n = deg(P) maxfdeg(c1 1; deg(c2)g . Если n < 0 , то исходное подынтегральное выражение не интегрируется в элементар- ном виде. Вычисление интеграла останавливается, и пользователь информируется о том, что функция не интегрируема в элементарном виде. Если n = 0 , то a = P=c2 . Ес- ли n > 0 , то приравниваются коэффициенты при одинаковых степенях x , составляется и решается система линейных уравнений. Решения уравнений являются коэффициен- тами неизвестного полинома. Если система линейных уравнений не имеет решения, то исходное подынтегральное выражение не интегрируется в элементарном виде. Вычис- ление интеграла останавливается, и пользователь информируется о том, что функция не интегрируема в элементарном виде. ПРОЦЕДУРНАЯ ИНТЕРПРЕТАЦИЯ АЛГОРИТМОВ В СИСТЕМЕ MATHPARTNER 175 2. Если P; c1; c2 полиномы от ln( ) , то неизвестная a полином от ln( ) . Сте- пень полинома a обозначается через n . Вычисляется n = deg(P) maxfdeg(c1); deg(c2)g . Если n < 0 , то исходное подынтегральное выражение не интегрируется в элементар- ном виде. Вычисление интеграла останавливается, и пользователь информируется о том, что функция не интегрируема в элементарном виде. Если n 0 , то уравнение принимает вид: P = c1 Xn i=0 a0 i ln( )i + Xn i=1 iai 0 ln( )i 1 ! + c2 Xh i=0 ai ln( )i: Приравниваются коэффициенты при одинаковых степенях ln( ) , и получается си- стема дифференциальных уравнений. Пусть a = Pn i=0 i ln( )i , c1 = Pm i=0 i ln( )i , c2 = Ps i=0 i ln( )i , P = Pt i=0 pi ln( )i . Возможны следующие случаи: 2.1. Степени полиномов c1 и c2 равны. Получается система дифференциальных уравнений вида: 8>< >: pt = m0n + mn pt 1 = m0n 1 + m 10n + nmn 0 + mn 1 + m 1n ::: Для решения каждого уравнения вызывается процедура solveRischDiffEq. Если очередное уравнение не имеет решения, то исходное подынтегральное выражение не интегрируется в элементарном виде. Вычисление интеграла останавливается, и пользо- ватель информируется о том, что функция не интегрируема в элементарном виде. 2.2. Степень полинома c1 больше степени полинома c2 . Получается система диф- ференциальных уравнений вида: 8>>>>>< >>>>>: pt = m0n pt 1 = m0n 1 + m 10n + nmn 0 ::: pt r = m0n r + ::: + m r0n + nmn r+1 0 + ::: + sn ::: Для решения каждого уравнения вызывается процедура mainProcOfInteg. Если ре- шение очередного уравнения не выражается в элементарном виде, то исходное подын- тегральное выражение не интегрируется в элементарном виде. Вычисление интеграла останавливается, и пользователь информируется о том, что функция не интегрируема в элементарном виде. 2.3. Степень полинома c1 меньше степени полинома c2 . Получается система урав- нений вида: 8>>>>>< >>>>>: pt = sn pt 1 = sn 1 + s 1n ::: pt r = m0n + sn r + ::: + s rn ::: 176 В. А. Корабельников Для решения каждого уравнения выражается i . 3. Если P; c1; c2 полиномы от exp( ) , то неизвестная a полином от exp( ) . Наибольшая степень полинома a обозначается через n2 . Наименьшая отрицательная степень полинома a обозначается через n1 . Пусть степени P меняются от t1 до t2 , степени c1 меняются от m1 до m2 , степени c2 меняются от s1 до s2 . Тогда n2 = t2 maxfm2; s2g , n1 = t1 maxfm1; s1g . Уравнение принимает вид: P = c1 Xn2 i= n1 (0 i + iiu0) exp( )i + c2 Xn2 i= n1 i exp( )i: Приравниваются коэффициенты при одинаковых степенях exp( ); и получается сис- тема дифференциальных уравнений. Пусть a= Pn2 i= n1 i exp( )i; c1= Pm2 i= m1 i exp( )i; c2 = Ps2 i= s1 i exp( )i , P = Pt2 i= t1 pi exp( )i . Возможны следующие случаи: 3.1. Наибольшая степень полинома c1 больше либо равна наибольшей степени по- линома c2 . Получается система дифференциальных уравнений вида: 8>>< >>: pt2 = m2(0n2 + n2n2 0) ::: pt2 r = m2 r(0n2 + n2n2 0) + ::: + m2(0n2 r + (n2 r)n2 r 0) + s2n2 ::: Для решения каждого уравнения вызывается процедура solveRischDiffEq. Если очередное уравнение не имеет решения, то исходное подынтегральное выражение не интегрируется в элементарном виде. Вычисление интеграла останавливается, и пользо- ватель информируется о том, что функция не интегрируема в элементарном виде. 3.2. Наибольшая степень полинома c1 меньше наибольшей степени полинома c2 Получается система уравнений вида: 8>>< >>: pt2 = s2n2 ::: pt2 r = m2(0n2 + n2n2 0) + s2 rns + ::: + s2n2 r ::: Для решения каждого уравнения выражается i . 4. Заключение Приведенная реализация алгоритмов символьного интегрирования не является пол- ной. Необходимо провести в дальнейшем доработку некоторых процедур. В процедуре makeRegularMonomialsSequence требуется реализовать поддержку дробных степеней при определении трансцендентности логарифма (см. [3, с. 225]). В текущей версии ал- горитма допускаются только целые степени. Для устранения случаев, когда рассматриваемый элемент из списка регулярных мо- номов неоднозначно выражается через предыдущие, необходимо список перестроить. ПРОЦЕДУРНАЯ ИНТЕРПРЕТАЦИЯ АЛГОРИТМОВ В СИСТЕМЕ MATHPARTNER 177 Для этого надо разработать алгоритм такого перестроения списка логарифмов и экспо- нент (см. [3, с. 235]). Для каждого нового варианта списка надо организовать повторный запуск процедуры makeRegularMonomialsSequence. В текущей версии алгоритма такие случаи считаются неинтегрируемыми. В процедуре solveRischDiffEq надо усовершенствовать алгоритм оценки степени полинома (см. [3, с. 240]). В процедурах partialFraction и notDenom реализованы неполные и упрощенные алгоритмы, поэтому необходимо произвести в процедуре partialFraction замену ал- горитма разбиения правильной дроби в сумму простых дробей алгоритмом для общего случая (см. [4, с. 273]), а в процедуре notDenom произвести замену алгоритма избавления от знаменателей алгоритмом для общего случая (см. [3, с. 237]). Приложение. Как вычислять интегралы с помощью web-сервиса MathPartner Чтобы найти первообразную, нужно выполнить следующие шаги: 1. Зайти на web-сайт MathPartner http://mathpar.cloud.unihub.ru/ 2. Нажать на кнопку ѕТетрадьї. 3. В появившемся поле ввода текста выбрать числовое поле и название переменной с помощью оператора: SPACE=Q[x]. 4. После задания кольца нужно ввести оператор интегрирования int(), в аргумен- те которого указать интегрируемую функцию. Затем нужно указать переменную интегрирования. Например, int( sin(x) ) dx. 5. Нажать кнопку ѕвыполнитьї. Например, чтобы найти первообразную от функции sin(x) , нужно ввести следующий текст: SPACE=Q[x]; int( sin(x) ) dx; При нажатии на кнопку ѕвыполнитьї получим следующий ответ: (-1) cos(x). В случае, если первообразная от функции не выражается в элементарном виде, то программа выдает первоначально заданный текст команды интегрирования. Например: SPACE=Q[x]; int( exp(x^2) ) dx; При нажатии на кнопку ѕвыполнитьї получим следующий ответ: int(exp(x^2) )dx.
×

About the authors

Vyacheslav A. Korabelnikov

Derzhavin Tambov State University

Email: korabelnikov.va@gmail.com
Post-Graduate Student, Functional Analysis Department 33 Internatsionalnaya St., Tambov 392000, Russian Federation

References

  1. Г. И. Малашонок, Руководство по языку "Mathpar", Издательство Тамбовского университета, Тамбов, 2013.
  2. В. А. Корабельников, “Алгоритмы символьного интегрирования в системе MathPartner”, Вестник Тамбовского университета. Серия: естественные и технические науки, 24:125 (2019), 75-89 doi: 10.20310/1810-0198-2019-24-125-75-89.
  3. Е. В. Панкратьев, Элементы компьютерной алгебры, МГУ, М., 2007.
  4. Дж. Дэвенпорт, И. Сирэ, Э. Турнье, Компьютерная алгебра. Системы и алгоритмы алгебраических вычислений, МГУ, М., 1991.
  5. Г. М. Фихтенгольц, Курс дифференциального и интегрального исчисления. Т. 2, ФИЗМАТЛИТ, М., 2001.
  6. С. М. Тарарова, “К проблеме построения алгоритма символьного интегрирования”, Вестник Тамбовского университета. Серия: естественные и технические науки, 17:2 (2012), 607-617.

Supplementary files

Supplementary Files
Action
1. JATS XML


Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

Согласие на обработку персональных данных с помощью сервиса «Яндекс.Метрика»

1. Я (далее – «Пользователь» или «Субъект персональных данных»), осуществляя использование сайта https://journals.rcsi.science/ (далее – «Сайт»), подтверждая свою полную дееспособность даю согласие на обработку персональных данных с использованием средств автоматизации Оператору - федеральному государственному бюджетному учреждению «Российский центр научной информации» (РЦНИ), далее – «Оператор», расположенному по адресу: 119991, г. Москва, Ленинский просп., д.32А, со следующими условиями.

2. Категории обрабатываемых данных: файлы «cookies» (куки-файлы). Файлы «cookie» – это небольшой текстовый файл, который веб-сервер может хранить в браузере Пользователя. Данные файлы веб-сервер загружает на устройство Пользователя при посещении им Сайта. При каждом следующем посещении Пользователем Сайта «cookie» файлы отправляются на Сайт Оператора. Данные файлы позволяют Сайту распознавать устройство Пользователя. Содержимое такого файла может как относиться, так и не относиться к персональным данным, в зависимости от того, содержит ли такой файл персональные данные или содержит обезличенные технические данные.

3. Цель обработки персональных данных: анализ пользовательской активности с помощью сервиса «Яндекс.Метрика».

4. Категории субъектов персональных данных: все Пользователи Сайта, которые дали согласие на обработку файлов «cookie».

5. Способы обработки: сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передача (доступ, предоставление), блокирование, удаление, уничтожение персональных данных.

6. Срок обработки и хранения: до получения от Субъекта персональных данных требования о прекращении обработки/отзыва согласия.

7. Способ отзыва: заявление об отзыве в письменном виде путём его направления на адрес электронной почты Оператора: info@rcsi.science или путем письменного обращения по юридическому адресу: 119991, г. Москва, Ленинский просп., д.32А

8. Субъект персональных данных вправе запретить своему оборудованию прием этих данных или ограничить прием этих данных. При отказе от получения таких данных или при ограничении приема данных некоторые функции Сайта могут работать некорректно. Субъект персональных данных обязуется сам настроить свое оборудование таким способом, чтобы оно обеспечивало адекватный его желаниям режим работы и уровень защиты данных файлов «cookie», Оператор не предоставляет технологических и правовых консультаций на темы подобного характера.

9. Порядок уничтожения персональных данных при достижении цели их обработки или при наступлении иных законных оснований определяется Оператором в соответствии с законодательством Российской Федерации.

10. Я согласен/согласна квалифицировать в качестве своей простой электронной подписи под настоящим Согласием и под Политикой обработки персональных данных выполнение мною следующего действия на сайте: https://journals.rcsi.science/ нажатие мною на интерфейсе с текстом: «Сайт использует сервис «Яндекс.Метрика» (который использует файлы «cookie») на элемент с текстом «Принять и продолжить».