Алгоритм понижения кратности интеграла рациональной алгебраически точной дифференциальной формы с квазиэллиптическим знаменателем

Автор: Бураченко Мария Викторовна

Журнал: Сибирский аэрокосмический журнал @vestnik-sibsau

Статья в выпуске: 5 (12), 2006 года.

Бесплатный доступ

Изложен метод понижения кратности интеграла рациональной алгебраически точной дифференциальной формы с квазиэллиптическим знаменателем вписан алгоритм и представлена его реализация для системы компьютерной алгебры Maple 9.

Короткий адрес: https://sciup.org/148175340

IDR: 148175340   |   УДК: 517.55,

Algorithm of integral multiplicity reducing for rational algebraically exact differential form with quasielliptic denominator

It is considered a method of integral multiplicity reducing for rational algebraically exact differential from with quasielliptic denominator. It is described the algorithm and presented its implementation in the algebraic computer system Maple 9.

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

Каждому многограннику Ньютона A можно поставить в соответствие двойственный конический полиэдр (веер) ХА. Дадим его определение.

С каждым ковектором v е Rn * связана грань А v многогранника А, на которой скалярное произведение < v , и > минимально на А. Два ковектора будем считать эквивалентными, если связанные с ними грани совпадают. Замыкание классов эквивалентности ковекторов, связанных с гранью А i , образует конус в Rn *, порожденный элементами решетки Z . Этот конус называется двойственным к грани А i. Совокупность конусов, двойственных всем граням многогранника А, образует веер ХА, который называется двойственным к многограннику А. Мы будем рассматривать только полные вееры, для которых объединение входящих в них конусов есть все пространство Rn *.

Очевидно, что образующими ребер веера АЛ являются внутренние нормали vj гиперграней

А ( 1) е A , а набор v рождает конус a v7 '1:

, ..

, ..

., vj таких нормалей по-

., vj ) в ХА тогда и только

тогда,    когда соответствующие грани

A ( - 1),..., A ( П - 1)   имеют непустое пересечение

to = Zl Z iriiA ^} dx л ... a d x .

Q ( X 1 ,..., X n )    1 П

A

Размерность конуса σ будет дополни-

тельной к размерности грани A

т. е.

dima = п - dimA

Конус, число ребер которого равно его размерности, назовем симплициальным. Симплици-

альный k -мерный конус a ( v 1 ,

..

примитивным,

k

П = ^ Е X Vv l ,0 X v 1

1 1 = 1

если

., vk ) называется параллелепипед

не содержит целых точек

(точек, все координаты которых целые числа), отличных от точки 0, или, что то же самое, векторы v 1, .., vk можно дополнить до базиса решетки Zn *. При k = n это условие эквивалентно тому, что матрица, образованная векторами v 1, .., vk – уни-модулярна, т. е. ее определитель равен ± 1. Веер будем называть примитивным, если любой его конус симплициален и примитивен.

Пусть d – число гиперграней многогранника A( Q ) и ZA - веер, двойственный A ( Q ) . Обозначим через v 1 ,..., v d минимально целочисленные образующие ребер веера ΣΔ. Если веер ΣΔ не является примитивным, то можно построить примитивный веер ~ A , состоящий из примитивных конусов, причем каждый конус ~ A лежит внутри некоторого конуса из S A , и если конус из ZA - примитивный, то он не измельчается. Пусть в результате такого подразбиения к векторам v 1, …, vd добавились векторы vd+ 1, …, vd+r .

Для каждого вектора vk , 1 ≤ k d , определим

матрицу Ck = Ck 1 ... kn - 1 k = ( vk 1 ,..

., vkn - 1

цами которой служат векторы vk 1 ,

..

1 , vk ., vk

) , столб-

'n - 1 , поро-

ждающие вместе с vk конус в S A . Поскольку ~ A - примитивный веер, то все матрицы Ck унимо-дулярны, т. е. det Ck = ±1, 1 ≤ k d .

С каждой матрицей Ck свяжем биномиальную замену координат x = yC k , что в терминах коорди-

k нат (v1 ,

..

k k

., vn ) векторов v означает следующее:

vk1      vkn 1   vk xi = У11 ... Уп 1-1  Уп ,

vk 1       ,,kn-1    ,.k vvv xn = У1 n ...Уп-1  Упп .

.

На подынтегральное выражение в (1) будем смотреть как на дифференциальную форму, и записывать ее в виде

Определение 2 . Дифференциальная форма ω называется алгебраически точной, если существует рациональная ( n – 1) – форма φ, дифференциал d φ которой равен ω . Такую форму φ будем называть рациональной первообразной для формы ω.

Определение 3 . Пусть φ – рациональная форма степени p , т. e. ф =     £ ф ( x ) dX 1 A ... A dx , ,

1< 1 <...

функции переменной x e Rn. Если знаменатели всех функций ф являются степенями квазиэл-1... p липтического полинома Q, то мы говорим, что форма φ не растет на бесконечности, когда для каждой гиперграни а" 1 многогранника A(Q) форма ф(yCi)

не имеет полюса на гиперплоскости yn = 0.

Введем     обозначения:      |vk = v k +... + v k ,

[/                \       „ |vk 11- 1            |vk n -11- 1 > ]

G + =H У 1 ,... У п - 1 )e R : y 1     ..... у П - 1      ° r .

В указанных обозначениях справедлива следующая теорема:

Теорема 1 . Пусть Q – квазиэллиптический полином, не обращающийся в нуль на Rn , и интеграл (1) абсолютно сходится. Если дифференциальная форма (2) имеет рациональную первообразную φ, которая не растет на бесконечности, то для интеграла (1) справедлива формула

I = ( - 1 ) n d i r ( 1 + ( - 1 ) vk l) det Ck f j - J ) [ ф ( yCk ) ] | y n = 0 , (3) k = 1                       ( G +     G - )

где суммирование ведется по всем ( n – 1)-мерным граням a n-x ( Q ) .

Доказательство этой теоремы в рамках данной работы не приводится, но его можно найти в [5].

Для случая n = 2 формулу (3) можно перепи-

сать в виде

I = 2 z   J M yCk )] | y 2 = 0

k : v k - четн R

Алгоритм понижения кратности интеграла рациональной алгебраически точной дифференциальной формы с квазиэлептическим знаменателем

На основании вышеизложенного представим алгоритм понижения кратности интеграла (1). Все вспомогательные алгоритмы, выделенные латинскими буквами, будут описаны далее, после основного алгоритма.

QuasiellipticIntegration( P, Q, x )

Input: P = P ( x 1 , … xn ) – полином, зависящий от n переменных, – числитель подынтегральной формы интеграла (1);

Q = Q ( x 1, … xn ) – полином, зависящий от n переменных, – знаменатель подынтегральной формы интеграла (1);

  • x = [ x 1 ,… xn ] – список переменных;

Output: интеграл вида (3), кратность которого ( n – 1);

  • 1)    проверка того, что Q не обращается в n нуль в R :

t 1 : = PolyNot0( Q, x );

if t 1 = false then error `знаменатель обращается в нуль`;

  • 2)    проверка квазиэллиптичности полинома Q :

t 2 : = Quasielliptic( Q , x );

if t 2 = false then error `знаменатель не квазиэллиптический`;

  • 3)    проверка условия предположения 1:

Δ : = NewtonPolyhedron( Q , x );

  • if найдется 1 ≤ I n , такой что не суще

ствует 5 е N , такого что [ о,..., 5 , ...,0 |еА then error V i )

`условие предположения 1 не выполняется`;

  • 4)    проверка того, что дифференциальная форма с коэффициентом Q алгебраически точная, и вычисление ее рациональной первообразной φ, не растущей на бесконечности:

φ : = RationalPrimitive ( P, Q , x ) φ: = = RationalPrimitive ( Q , P , x ) ;

if ф = [0,..., 0] then error 'для исходной 123

n подынтегральной формы не существует рациональной первообразной, не растущей на беско-нечности`;

  • 5)    проверка абсолютной сходимости интеграла (1):

t 3 = AbsoluteConvergence( P , Q , x );

if t 3 = false then error `интеграл не сходится абсолютно`;

  • 6)    Σ : = NormalFan( Q , x ) – веер в Rn * , двойственный многограннику Δ, конуса которого порождены минимальными целочисленными ко-векторами vk , k = 1, , d внутренних нормалей к ( n - 1)-мерным граням A n - 1 многогранника А;

  • 7)    ~ : = Primitive Normal Fan(A) - прими-

  • тивный веер, полученный в результате простого подразбиения веера Σ (Q) добавлением к его образующим ковекторов vd+1..vd+r;
  • 8)    каждому ковектору vk , k = 1, …, d , сопоставим унимодулярную матрицу

Ck = ( v k 1 ,..., vk n - 1, vk ) , так чтобы ковекторы vk 1 ,..., vk n - 1, vk образовывали конус в ~ ( Q ) ;

  • 9)    с каждой матрицей Ck , 1 ≤ k d + r свяжем биномиальную замену переменных x = yC k ;

  • 10)    return (интеграл кратности ( n – 1), записанный по формуле (2))

end.

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

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

Построение многогранника Ньютона и двойственного ему веера. При рассмотрении Quasiel-lipticIntegration, в частности при проверке условий квазиэллиптичности знаменателя, алгебраической точности подынтегральной формы и абсолютной сходимости интеграла, нам понадобятся алгоритмы построения многогранника Ньютона (алгоритм NewtonPolyhedron) и двойственного ему веера нормалей (алгоритм NormalFan). Напомним, что многогранником Ньютона полинома называется выпуклая оболочка точек носителя этого полинома.

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

Для построения выпуклой оболочки множества точек n -мерного пространства используется алгоритм, базирующийся на алгоритме Моцкина– Бургера [6], и его реализация П. А. Буровским [7] в виде Maple-программ Convexhull и FullConvex-hull программного пакета convexhull.

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

Для построения многогранника Ньютона и двойственного ему вектора нормалей (алгоритмы NewtonPolyhedron и NormalFan соответственно)

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

Если исходный интеграл берется по пространству R 2, то подключение пакета convexhull не требуется. Для построения многогранника Ньютона (это будет выпуклый многоугольник) используется стандартная Maple-процедура convexhull программного модуля simplex. Для построения веера нормалей векторы, получающиеся при обходе многоугольника против часовой стрелки, поворачиваются на угол 900 (если ( x , y ) – координаты вектора-стороны многоугольника, то (– y , x ) – координаты внутренней нормали к этой стороне) и минимизируются т. е. для каждого вектора вычисляется наименьший общий делитель его координат и все координаты на него делятся.

Проверка того, что знаменатель не обращается в нуль, и квазиэллиптичность знаменателя. На знаменатель Q ( x ) подынтегральной формы интеграла (1) накладываются два условия:

Условие 1 . Полином Q ( x ) не обращается в нуль в Rn .

Условие 2 . Полином Q ( x ) является квазиэллип-тическим полиномом, т. е. для любого ненулевого ковектора v е R n * срезка Qv не обращается в нуль в торе ( R \ {0}) n .

Для проверки этих условий используется так называемый алгоритм цилиндрического алгебраического разбиения, или сокращенно CAD-алгоритм (от англ. Cylindrical Algebraic Decomposition ). Этот алгоритм является инструментом для решения систем полиномиальных уравнений и неравенств в Rn и заключается в построении такого разбиения пространства Rn , чтобы в каждой компоненте разбиения сохранялись знаки всех полиномов исходной системы. Под разбиением пространства будем понимать конечную совокупность непересекающихся областей пространства, объединение которых равно этому пространству

Впервые такой метод был предложен в 1948 г. Тарским, но он не был реализован практически. В 1973 г. Коллинз предложил конструктивный метод. В рамках данной статьи алгоритм был реализован в виде Maple-программы CAD.

Введем некоторые определения, необходимые для формулирования основных положений метода. Все определения даются согласно работам [8, 9]. Более детальное описание алгоритма можно найти в [9].

Входными данными для алгоритма является множество полиномов Фс Q [ x 1,..., x n ] , где Q – поле алгебраических чисел , и список пере менных [ x 1 , ..., x n ] .

CAD- алгоритм состоит из трех основных эта пов : проекции , построения базы и расширения .

Этап проекции состоит из (n – 1)- го шага . На каждом шаге строится новое множество полино мов , зависящих от числа переменных , на единицу меньшего , чем полиномы множества , полученно го на предыдущем шаге . Множества нулей поли номов , полученных на каждом шаге этапа , – это проекции особых точек множеств полиномов предыдущего шага , т . е . точек самопересечений , изолированных точек и точек , в которых каса тельные вертикальны . Переход от множества по линомов к множеству их проекций осуществляет ся при помощи оператора proj . Чтобы его запи сать , нам понадобятся некоторые условные обо значения .

Пусть F = {f, .„, /}, где f( ( x 1 , .„, xn ) e Q [ x b..., x n ] , 1 ≤ i r . Эти полиномы можно рассматривать как полиномы, зависящие от одной переменной xn , коэффициентами которых являются полиномы от ( n – 1)-й переменной x 1 , …, xn– 1 , т. е. fi ( x 1 , …, xn ), 1 <  i r , представляется в виде f ( x 1 , ..., xn - 1 ,xn ) = = ft,* ( x 1 , -, x n - 1 ) x d + ... + ft ,0 ( x 1 ,..., x n - 1 )e Q [ x 1 ,..., x n - 1 ][ x n ] и fik ( x 1,..., xn - 1 ) - коэффициент i -го полинома при k -й степени переменной, xn – полином, зависящий от переменных x 1 , …, xn –1 .

k

Обозначим    fk(x 1,..., xn) = I jx„..., xn-1)xn , j=0

где 0 ≤ k di .

Обозначим символом Dxn оператор дифференцирования по переменной xn .

Матрицу mat(g 1, ., gk) = [g —] размера k x k, где l = 1 + max (deg (gi)), назовем матрицей, ассо-1< i < k циированной с полиномами g1, …, gk.

Для полинома g степени s по переменной xn и полинома h степени m по переменной xn определим psc xn ( g , h ) = det ( M l ) , где матрица Ml состоит из l первых столбцов матрицы mat ( xs - l - 1 g ,..., g , x m - l - 1 h ,..., h ) , ассоциированной с полиномами x s - l - 1 g ,..., g , x m - l - 1 h ,..., h .

Тогда proj(F) = proj1(F) и proj2(F) и рго_|'з(F), где proj1 = {fk(x1,..., xn-1)11 < i < r, 0 < k < di};

proj 2 = {psc x n ( fk ( xx ,..., xn ) , Dx n ( fk ( x 1 ,..., xn ) )) |1 i r , 0 l k d i };

proj 3 = {psc m n ( fk - ( x 1 ,..., xn ) , fk j ( x ! ,..., xn ) ) |1 i j r , 0 k , k d., 0 m min ( k , k ) < d } .

ij i          ij i

Определенный таким образом оператор proj рекурсивно применяется (n – 1) раз к исход- ному множеству полиномов, т. е. proj0(Φ) = Φ, proj1(Φ) = proj(proj0(Φ)), …, projj(Φ) = proj(projj–1(Φ)), …, projn-1(Φ) = proj(projn-2(Φ)). Последнее множество – множество полиномов, зависящих от одной переменной x1, – конечный результат этапа проекции.

На этапе построение базы строится множество пробных точек разбиения пространства R 1. В качестве входных данных выступает множество полиномов proj n –1( F ) – это множество полиномов, зависящих от одной переменной, получившееся в результате этапа проекции, и сама переменная, от которой зависят данные полиномы. Вычисляются действительные корни полиномов множества proj n –1( F ). Эти корни в общем случае являются алгебраическими числами и могут быть представлены в виде пары полинома и интервала, на котором этот полином имеет единственный корень – данное алгебраическое число, причем концами интервала являются рациональные числа, а полином выбирается таким образом, чтобы его степень была наименьшей. Пусть у нас получилось следующее множество алгебраических чисел § 1 e ( u i , V ] ], к , § s e ( U s , V s ] , где все U j , V j e Q . Пробные точки выбираем следующим образом: α1 = u 1, α 2 = ξ 1 ,…, α 2 s +1 = vs + 1. Последнее множество и является результатом этапа построения базы.

Цель этапа расширения заключается в построении разбиения пространства Rn . В качестве входных данных выступает множество пробных точек, полученное на этапе построения базы: base 0 = {α 1 , …, α 2 s +1 }. Этап расширения содержит ( n – 1) шагов.

На первом шаге точки множества base 0 подставляются в полиномы множества proj n –2( F ) – проекции, полученной на ( n – 2)-м шаге этапа проекции. В результате такой подстановки для каждой точки α j , 1 ≤ j ≤ 2 s + 1 получается множество полиномов, зависящих от одной переменной x 2 . К ним снова применяется этап построения базы. Пусть в результате для каждой точки α j , 1 ≤ j ≤ 2 s + 1 получилось множество пробных точек {з/,..., e j + 1 } - Тогда множество пробных точек разбиения R 2 организуется следующим образом: J ( ai , ei )• K , ( ai , eJ11 + 1 )• ( aj , ei )- K ,               /I

[ ( a / , e Jij + i ), к , ( a js + i , e Js + 1 ), к , ( a js + i , в JSj + e + , + 1 ) j .

На втором шаге эти точки подставляются в полиномы из множества proj n –3( F ), и аналогичная процедура повторяется. Таким образом, после выполнения ( n – 1)-го шага мы получим множество пробных точек пространства Rn . Это и есть результат CAD-алгоритма.

Корректность рассмотренного CAD-алгоритма в рамках данной статьи не доказывается. Это доказательство можно найти, например, в [9].

Вернемся теперь к проверке условий 1 и 2.

Достаточным условием того, что полином не обращается в нуль в Rn , является то, что все входящие в его состав мономы c α x 1 α1 K xn α n имеют положительные коэффициенты c α и четные степени αi по каждой переменной xi , а свободный член полинома не равен нулю. Если это условие не выполняется, то для проверки условия 1 используется CAD-алгоритм. С его помощью строится множество пробных точек для этого полинома; затем вычисляются значения исходного полинома в этих точках, и если ни в одной из этих точек полином не обращается в нуль, то можно заключить, что полином не обращается в нуль в Rn . Если же хотя бы в одной пробной точке значение полинома равно нулю, то условие 1 не выполнено.

Таким образом, алгоритм PolyNot0 выглядит следующим образом:

PolyNot0( Q , x )

Input: Q = Q ( x 1 , …, xn ) – полином, зависящий от n переменных;

x = [ x 1, …, xn ] – список переменных;

Output: true, если полином Q не обращается в нуль в Rn , false – в противном случае;

if (все мономы полинома Q имеют положительные коэффициенты и четные степени по каждой переменной) and (свободный член полинома Q равен нулю) then return (true) else

  • 1)    SamplePoints : = CAD({ Q }, x ) – множество пробных точек разбиения пространства Rn ;

  • 2)    ValueQ – множество значений полинома Q в точках множества SamplePoints;

  • 3)    if 0 не содержится в множестве ValueQ then return (true) else return (false) end if

end if end.

Достаточным условием квазиэллиптичности полинома является то, что все входящие в его состав мономы c α x 1 α1 K xn α n имеют положительные коэффициенты c α и четные степени α i по каждой переменной xi . Если это условие не выполняется, то при помощи CAD-алгоритма нужно построить множество пробных точек для всех срезок этого полинома (не имеет значения, рассматривать эти полиномы вместе или по отдельности), исключить из этого множества точки, у которых хотя бы одно координата равна нулю (это будет соответствовать исключению координатных осей из Rn , так как в данном случае нас интересует только тор ( R \ {0}) n ), подставить оставшиеся точки в срезки исходного полинома и убедиться, что они не обращаются в нуль ни в одной точке из оставшихся точек. Алгоритм Quasielliptic выглядит таким образом:

Quasielliptic( Q , x )

Input: Q = Q ( x 1 , …, xn ) – полином, зависящий от n переменных;

  • x = [ x 1 , …, xn ] – список переменных;

Output: true, если полином Q квазиэллиптиче-ский, false – в противном случае;

if (все мономы полинома Q имеют положительные коэффициенты и четные степени по каждой переменной) then return (true) else

  • 1)    Δ( Q ):=NewtonPolyhedron( Q,x ) – многогранник Ньютона полинома Q (здесь нас будут интересовать все грани многогранника Ньютона, поэтому мы будем использовать процедуру FullConvexhull);

  • 2)    F = { f 1 , …, fk } – множество срезок, соответствующих граням многогранника Δ( Q );

  • 3)    SamplePoints : = CAD({ f 1 , … , fk }, x ) – множество пробных точек разбиения пространства Rn ;

  • 4)    SamplePointsInTor – подмножество точек из SamplePoints, у которых ни одна координата не равна нулю;

  • 5)    ValueQ – множество значений полиномов множества F в точках множества SamplePoints;

  • 6)    if 0 не содержится в множестве ValueQ then return (true) else return (false) end if

end if end.

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

– определяются степени мономов, входящих в состав коэффициентов первообразной;

– выписываются полиномы с неопределенными коэффициентами и найденными степенями;

– решается уравнение на коэффициенты.

В качестве входных данных для этого алгоритма выступают полиномы P ( x ), Q ( x ) и список переменных x . Если исходная дифференциальная форма алгебраически точна и имеет не растущую на бесконечности рациональную первообразную, то алгоритм возвращает значение этой первообразной, если нет, то возвращается список из n нулей.

Рассмотрим теперь все этапы алгоритма более подробно.

Допустим, что дифференциальная форма ю = P ( x 1, K , x n ) dx,dx алгебраически точна и

Q ( X 1 , . , X n ) 1

φ – ее рациональная первообразная, не растущая на бесконечности. Представим ω в виде ~ = P ( x ) dx следующим образом: если найдется

Q2 k (x)

полином Q ( x ) и натуральное число к , такие что

Q 2 k ( x ) = Q ( x ) , то тогда P ( x ) = P ( x ) ; если найдется полином Q ( x ) и натуральное число к >  1, такие что Q 2 k ( x ) = Q ( x ) , то тогда P ( x ) = P ( x ) Q ( x ) ; если таких Q ( x ) и k не существует, то тогда Q ( x ) = Q ( x ) , k = 1, P ( x ) = P ( x ) Q ( x ) .

Рациональную первообразную φ будем искать в виде

jxtx) dxi л .[z ]... л dxn, B (x) i=1

где x = ( x 1, …, xn ), Ai – некоторые полиномы; B = Q2k 1 - квазиэллиптический полином, не обращающийся в нуль на Rn .

Пусть Δ = Δ( B ) – многогранник Ньютона. Очевидно, что многогранники Δ( Q ) и Δ( B ) гомотетичны. Таким образом, если Δ( Q ) удовлетворяет условию предположения 1, т. е. содержит по ребру на каждой координатной оси в Rn , то и Δ( B ) удовлетворяет этому условию. Веера нормалей, двойственные к Δ( Q ) и Δ( B ), совпадают. Пронумеруем векторы веера нормалей, двойственного А( B ) таким образом, чтобы vz =[ 0, . ,1, . ,0 Rn * ,

V i J i = 1, …, n.

Обозначим через Δ0 множество внутренних точек многогранника А, а через A k - множество точек, лежащих в относительной внутренности ( n -1)-мерной грани А к = А ^ - 1 )( B ), двойственной вектору vk .

В работе [10] доказывается теорема о том, что в предположении 1 для того чтобы дифференциальная форма φ не росла на бесконечности, ее коэффициенты должны иметь вид

Ai(x) = (- 1)*xi 'LvkAk(x), I = 1, •”, n, к=n +1

где Ai 0 и Ak – полиномы, многогранники Ньютона которых удовлетворяют условиям а ( A0 ) + Iz с А 0 U A z 0 , a ( A k ) + 1 с А о к , здесь I = ( 1, . ,1 ) e Rn , I , =( 1, . ,0, . 1 )e Rn , а v k , . , v k -

  • V i )

координаты  вектора,  двойственного грани

AT’ (B).

Исходя из этой теоремы, определим возможные степени полиномов Ai(x), I = 1, …, n, коэффициенты которых не определены. Затем эти полиномы подставляем в уравнение jn: (- 1)z-1 f B(x)iAxl - (2к -1)A (x) 5B(x)) - P(x) = 0

i=1        V       dxz                      dxz J и решим уравнение на коэффициенты.

Если в результате решения этого уравнения все неопределенные коэффициенты получились равными нулю, то рациональной первообразной φ, не растущей на бесконечности, не существует, и мы возвращаем список из n нулей; если же не все неопределенные коэффициенты равны нулю, то возвращается список коэффициентов первообразной.

Абсолютная сходимость интеграла. В [2] доказывается следующая теорема:

Теорема 2 . Если Q – квазиэллиптический полином, не обращающийся в нуль на Rn , то интеграл (1) абсолютно сходится тогда и только тогда, когда I + А ( P ) сА 0 ( Q ) , т. е. когда сдвиг многогранника А( P ) вдоль вектора I = ( 1, „,,1 ) е R лежит во внутренности Δ0( Q ) многогранника Δ( Q ).

На ее основе составлен следующий алгоритм:

AbsoluteConvergence( Q , P , x )

Input: P = P ( x 1 , …, xn ) – полином, зависящий от n переменных, числитель подынтегральной формы интеграла (1);

Q = Q ( x 1 ,…,xn ) – полином, зависящий от n переменных, – знаменатель подынтегральной формы интеграла (1);

x = [ x 1, , xn ] – список переменных;

Output: true, если интеграл (1) сходится абсолютно, false – в противном случае;

  • 1)    Δ( P ) : = NewtonPolyhedron( P , x ) (используется процедура Convexhull);

  • 2)    verticesP – список вершин многогранника Ньютона Δ( P );

  • 3)    образовать список verticesP_I , сдвинув все вершины списка verticesP на вектор I (увеличить все координаты всех точек списка verticesP на 1);

  • 4)    Δ( Q ) : = NewtonPolyhedron( Q , x ) (используется программа Convexhull); { а П 1 ( Q ), к , А d 1 ( Q ) } -гиперграни Δ( Q );

  • 5)    { v 1 , … , vd }: = NormalFan( Q , x ) – веер нормалей, двойственный Δ( Q );

  • 6)    для каждой точки p е verticesP_I и каждой гиперграни А п - 1 ( Q ) вычислить скалярное произведение вектора, отпущенного из произвольной точки гиперграни а п - 1 ( Q ) в точку p , и вектора vk , 1 k d ;

  • 7)    if (все скалярные произведения строго положительны) then return (true) else return(false) end if

end.

Простое разбиение веера нормалей. Рассмотрим алгоритм PrimitiveNormalFan, преобразующий веер нормалей в примитивный веер нормалей в результате простого подразбиения. На входе в алгоритм имеется множество конусов Σ, образующих веер, на выходе – множество примитивных конусов, организующих простое подразбиение веера Σ.

Алгоритм состоит из двух этапов.

На первом этапе исходное множество конусов Σ преобразуется во множество симплициальных конусов

C 0 = ( v 0 ,

S' следующим образом: пусть ., v m ) - не симплициальный конус, т. е.

m m > п, тогда находим вектор v = ^ vi, минимизи-i=1

руем его (сокращаем все его координаты vi на их наибольший общий делитель) и добавляем ко всем группам из ( n –1) векторов множества { v 0 , к , Vm } , образующих конусы размерности ( n – 1). Данная процедура применяется ко всем несимплициальным конусам множества Σ, начиная с конусов размерности 3 и заканчивая конусами размерности n . В результате мы получим множество симплициальных конусов S'. Заметим, что так как в пространстве R 2 все конусы симплициальны, то в случае интегрирования по пространству R 2 первый этап автоматически опускается.

На втором этапе, пока во множестве S' найдется конус C 0 = ( v 0 , к , v 0n ) , такой что матрица, составленная из векторов v 10, K , v 0 n , не является унимодулярной, находим точку p с целыми координатами, лежащую внутри параллелепипеда (или на его гранях, но не совпадающую ни с одной его вершиной), построенного на векторах v 10 , K , v 0 n ; затем проводим из начала координат в точку p вектор v . Далее конструируем множество конусов C ' = { Ci } , где Ci = ( v *, ^, i'' 1 , v , vi+ 1 , ^, vn ), i = 1, .„, n ; исключаем из множества C ' конусы, размерность которых меньше размерности пространства; в заключение добавляем оставшиеся в C ' конусы к множеству S', а конус C 0 из этого множества исключаем. В результате повторения такой процедуры получим множество примитивных конусов, которые и образуют примитивный веер.

Рассмотренный алгоритм корректен, если исходить из простых геометрических соображений.

Компьютерная реализация и примеры вычислений

Пакеты quasielliptic2 и quasielliptic3 на языке системы Maple разработаны для понижения кратности интегралов вида (1), удовлетворяющих условиям теоремы 1, по пространствам R 2 и R 3 соответственно. В них реализованы все алгоритмы, рассмотренные выше (за исключением алгоритма Моцкина–Бургера и алгоритма построения выпуклой оболочки, реализованногох П. А. Буров-ским [7]) в виде одноименных процедур. Все эти процедуры могут вызываться пользователем непосредственно, так как они имеют самостоятельную ценность и могут быть полезны при решении других задач.

Основной алгоритм реализован в процедуре QuasiellipticIntegration. Для ее вызова необходимо ввести следующие входные данные:

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

– Q – полином с рациональными коэффициентами, зависящий от двух или трех переменных, – знаменатель коэффициента подынтегральной формы, причем если существует полином с рациональными коэффициентами Q ' и натуральное число d , такие что Q = Q ' d , то вместо полинома Q в качестве исходных данных можно ввести пару [ Q ', d ] ;

– var – список переменных, от которых зависят полиномы P и Q .

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

Если исходный интеграл не удовлетворяет какому-либо из условий теоремы 1 или условию предположения 1, то выдается сообщение об ошибке и информация о том, какое из условий нарушено. Если все условия для исходного интеграла выполнены, то результатом работы процедуры для случая двух переменных является значение исходного интеграла. Для случая интегрирования по пространству R 3 основной результат работы процедуры – интеграл кратности 2. Если этот интеграл вычисляется до конца стандартными средствами Maple 9, то выдается его значение; если же он до конца не вычисляется, но сводится к одномерному интегралу, то выдается именно этот интеграл. Если стандартными средствами Maple 9 двумерный интеграл не упрощается, но имеет вид (1) и удовлетворяет условиям теоремы 1, то к нему можно применить процедуру Quasiel-lipticIntegration, но уже из пакета quasielliptic2, и вычислить этот интервал до конца.

Рассмотрим примеры работы этой процедуры. Все вычисления производились в среде Maple 9 на компьютере на базе Athlon XP 1700+, 512 Mb RAM.

Сначала приведем примеры вычисления интегралов по пространству R 2. Нам потребуется пакет quasielliptic2. Загрузим его следующим образом:

  • >    read (quasielliptic2):

Пример 1. Вычислим интеграл с x2 + 4 x2 y2 + 4 x4 y 4 + x4 y6 + x6 y 4 + y2

J Л----- 2     2 4 , 4 4     4 2     2\ dxdy '

R 2 ( 1 + x + x y + x y + x y + y )

Введем входные данные:

  • >    P1 : = x^2+4*x^2*y^2+4*x^4*y^4+ x^4*y^6+ +x^6*y^4+y^2;

P 1 : = x 2 + 4 x 2 y 2 + 4 x 4 y 4 + x 4 y 6 + x 6 y 4 + y 2

  • >    Q1 : = (1+x^2+x^2*y^4+x^4*y^4+ x^4*y^2+ +y^2)^2;

Q 1 : = (1 + x 2+ x 2 y 4+ x 4 y 4 + x 4 y 2+ y 2)2

  • >    var : = [x, y];

var : = [ x , y ]

Вызовем процедуру QuasiellipticIntegration:

  • >    t : = time():

QuasiellipticIntegration (P1, Q1, var);

TimeOfCalculation : = time() – t;

TimeOfCalculation : = 0.100

Пример 2. Вычисляем интеграл

J

R 2

x 2 - y 2 - 2 x 4 y 4 + 2 x 6 y 6

( 1 + x 2 + y 2 + x 4 y 2 + x*y 6 ) 2

dxdy .

Введем входные данные:

  • >    P2 : = x^2-y^2-2*x^4*y^4+2*x^6*y^6;

P 2 : = x 2 y 2 – 2 x 4 y 4 + 2 x 6 y 6

  • >    Q2 : = (1+x^2+y^2+x^4*y^2+x^4*y^6)^2;

Q 2 : = (1 + x 2 + y 2 + x 4 y 2 + x 4 y 6)2

Вызовем процедуру QuasiellipticIntegration:

  • >    t : = time():

QuasiellipticIntegration (P2, Q2, var);

TimeOfCalculation : = time() – t;

n — nv 2

TimeOfCalculation : = 0.091

Пример 3 . Вычислим интеграл

J 7------------ yx-----------d-dxdy .

r 2 ( 1 + x 3 + 2 x 2 y 2 + 3 xy4 + y 6 )

Введем входные данные:

  • >    P3 : = y*x;

P 3 : = yx

  • >    Q3 : = (1+x^3+2*x^2*y^2+3*x*y^4+y^6)^3;

Q 3: = (1 + x 3 + 2 x 2 y 2 + 3 xy 4 + y 6)3

Вызовем процедуру QuasiellipticIntegration:

  • >    t : = time():

QuasiellipticIntegration (P3, Q3, var);

TimeOfCalculation : = time() – t;

Error, (in QuasiellipticIntegration) differential form denominator is not quasielliptic polynomial

TimeOfCalculation : = 0.080

Процедура возвращает сообщение о том, что знаменатель подынтегральной дифференциальной формы не является квазиэллиптическим полиномом. Это действительно так, поскольку в точке (–1, –1) полином Q3 обращается в нуль.

Рассмотрим примеры работы процедуры Qua-siellipticIntegration для случая трех переменных. Загрузим пакет quasielliptic3:

  • >    read (quasielliptic3):

Пример 4. Вычислим интеграл

,       4 x 2 + 3 x 2 x 2 + 3 x 2 x 3        , , ,

3      1 3      2 3         dx dx dx .

I

R 3

> Q1 : = (1+x1^2+x2^2+x3^4+x1^4*x3^2+ +x2^4*x3^2)^2

Q 1: = (1 + x 12 + x 22 + x 34 + x 14 x 32 + x 24 x 32)2

> var : = [x1, x2, x3];

var : = [ x 1 , x 2 , x 3]

Вызовем процедуру QuasiellipticIntegration: > t := time():

QuasiellipticIntegration (P1, Q1, var);

TimeOfCalculation : = time() – t;

to to

-II-

-to -to

1 + У 2 2 + У 1 4

,      1 211 )

dy 2 dy1 = —кB I , I

2 ( 4 4 J

TimeOfCalculation : = 11.236

Пример 5 . Вычислим интеграл

1 + x 4

2   2   4   22   22

ii + x 1 + x 2 + x з + X 1 x з + x 2 x з

dx 1 dx 2 dx 3

Введем входные данные: > P2 : = 1+x3^4;

P 2: = 1 + x 34

> Q2 : = (1+x1^2+x2^2+x3^4+x1^2*x3^2+ +x2^2*x3^2)^2;

Q 2: = (1 + x 12 + x 22 + x 34 + x 12 x 32 + x 22 x 32)2

Вызовем процедуру QuasiellipticIntegration: > t : = time():

QuasiellipticIntegration (P2, Q2, var);

TimeOfCalculation : = time() – t;

to to                       1

I I----- 2----2-----2—2 dy 2 dy 1 =

-№- 1 + y 2 + y1 + y 2 y1

= п

to to

-II-

-to -to

1 + y 2 2 + y 12 + y 22 y 12

dy 2 dy 1 = п2

TimeOfCalculation : = 5.338

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

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