Научная статья на тему 'Реализация скобки Кругликова–Лычагина–Майера в системе компьютерной алгебры Maple'

Реализация скобки Кругликова–Лычагина–Майера в системе компьютерной алгебры Maple Текст научной статьи по специальности «Математика»

CC BY
86
18
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ / СКОБКА КРУГЛИКОВА–ЛЫЧАГИНА–МАЙЕРА / KRUGLIKOV–LYCHAGIN–MAYER BRACKET / MAPLE / DIFFERENTIAL EQUATIONS

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

В настоящей статье описана реализация скобки Кругликова–Лычагина–Майера на языке Maple. Результаты работы были анонсированы в {bib:gio9} и {bib:gia9}.

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

Implementation of Kruglikov–Lychagin–Mayer bracket on Maple

In this article we describe an implementation of Kruglikov–Lychagin–Mayer bracket on Maple.

Текст научной работы на тему «Реализация скобки Кругликова–Лычагина–Майера в системе компьютерной алгебры Maple»

УДК 517.951

С. Н. Тычков

Реализация скобки Кругликова—Лычагина—Майера в системе компьютерной алгебры Maple

Аннотация. В настоящей статье описана реализация скобки Кругликова— Лычагина—Майера на языке Мар1е. Результаты работы были анонсированы

Ключевые слова и фразы: дифференциальные уравнения, скобка Кругликова—Лычагина— Майера, Мар1е.

Введение

В работе предлагается реализация на языке Maple скобки Кру-гликова-Лычагина-Майера, которая используется для решения вопроса о формальной интегрируемости [3] системы дифференциальных уравнений. Пусть £ — система г дифференциальных уравнений в частных производных:

где х = (х1,х2,... ,хп) — вектор размерности п, и — вещественная

в [1] и И-

(1)

функция от х, Оъ = (о^1, о^2, ..., а^п), г = 1, 2,...,г — мультииндексы,

© С. Н. Тычков, 2011

© Программные системы: теория и приложения, 2011

элементы которых — неотрицательные целые числа. В этих обозначениях под д|а|и/дха мы понимаем частную производную

д|а|и дх"1дх^2... дх^п,

где а — мультииндекс, |а| = а1 + ... + ап.

Для упрощения записи введем обозначение:

д |ст|и

Ра =

дха

В координатах х, п,ра пространства джетов ЛкМ” (к = шах(|ст^))

І

система (1) запишется следующим образом:

Г (х,п, ... ,рСТ1) = 0,

( , Г2(х,п. . .. ,Ра2 )=0,

(2)

Г(х, п, ... ,раг) = 0.

Под оператором полной производной по переменной х* будем понимать оператор:

д ^ д

* = дх* + ^Рст+1г дра .

а

Определение 1. Скобкой Кругликова-Лычагина-Майера (далее КЛМ-скобка) двух функций Г Є Сто(ЛкМ”) и О Є Сто(ЛгМ”) называется функция

(3) 1г.°1'=/ е дра ^ - £ до ° г,

|а = 1а |в|=г в

где Па = Оа о ... о Оа , а = (а1, .... а”), а ОІ — оператор полной производной по переменной хІ (і = 1 ..., п).

Система (1) определяет подмногообразие £ в пространстве джетов, определенное формулой (2). Скобка КЛМ представляет собой функцию на пространстве джетов. Ограничение этой функции на подмногообразие £ будем называть скобкой в силу системы (2).

Замечание 1. Алгоритм исследования формальной интегрируемости основывается на следующем результате. Если система (2) формально интегрируема, то КЛМ-скобки

[Гі.Г] (і, і = 1,.... г, і = і)

равны нулю в силу системы E. Обратно, если все скобки Майера равны нулю в силу E, а характеристический идеал [3] {Fi, F2, .. ., Fr} есть полное пересечение [4], то система формально интегрируема. Исчерпывающее описание данного метода с доказательством можно найти в [5].

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

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

В работе [6] проведено сравнение методов дифференциальных базисов Грёбнера и КЛМ-скобки.

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

1. Вспомогательные процедуры

Для реализации формулы (3) нам прежде всего необходима процедура вычисления полной производной по независимой переменной.

Удобно записывать частную производную функции n переменных д“//дж“ в виде координат джетов /а. Чтобы в нашей программе предусмотреть возможность записывать производные функций в таком виде, заведём два списка ivars и dvars, содержащие имена независимых и зависимых переменных соответственно. Например, пусть заданы ivars := [x, y] и dvars := [u, v]. Тогда под записью u[1, 2] мы понимаем производную uxyy.

Также объявим переменные ivarsCount и dvarsCount, хранящие количества элементов в списках ivars и dvars соответственно.

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

TDiff := proc( expr, varIndex::integer, $ ) local m_1_,m_2_;

if varlndex <= 0 or varlndex > ivarsCount then error "Incorrect variable index: %1", varlndex; end if;

if not has( expr, dvars ) then return diff( expr, ivars[varIndex] ); elif type( expr, ’‘ + ‘’ ) then return map( procname, args ); elif type( expr, ,‘*° ) then m_1_, m_2_ := op( 1, expr ), subsop( 1 = 1, expr ); return procname( m_1_, varlndex ) * m_2_ + m_1_ * procname( m_2_, varlndex ); elif type( expr, ) then

m_1_, m_2_ := op( expr );

return expr * ( TDiff( m_2_, varlndex ) * ln( m_1_ ) +

TDiff( m_1_, varlndex ) * m_2_ / m_1_ );

elif type(expr, ‘function4) then m_1_ := 0;

for m_2_ from 1 to nops( expr ) do

m_1_ := m_1_ + D[m_2_]( op( 0, expr ) )( op( expr ) ) *

TDiff( op( m_2_, expr ), varlndex );

end do; return m_1_; elif checkJet( expr ) then m_1_ := op( 0, expr ); m_2_ := op( varlndex, expr ) + 1;

return m_1_ [op( subsop( varlndex = m_2_, [op( expr )] ) )]; else

error "Unexpected expression to find derivative of %1 by %2", expr, varlndex; end if; end proc:

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

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

TotDiff := proc( expr, vars::list )

local varIndex::integer, result; result := expr; for varIndex in vars do result := TDiff( result, varIndex ); end do;

return result; end proc;

2. Реализация

Ниже представлена реализация формулы (3) на языке Maple.

MayerBracket := proc(F, G, f::symbol) local alphas::list, betas::list, sigma::list,

orderF::integer, orderG::integer, result;

orderF := EquationOrder( F, f );

orderG := EquationOrder( G, f );

alphas := select( x -> evalb( ‘+‘( op ( x ) )= orderF ),

allSigmas( F, f ) ); betas := select( x -> evalb( ‘+‘( op ( x ) ) = orderG ), allSigmas( G, f ) );

result := 0; for sigma in alphas do result := result + diff( F, f[op( sigma )] ) *

end do;

return simplify( result ); end proc;

3. Пример

Рассмотрим переопределенную систему уравнений из работы [6]:

где c € R. Наша программа для вычисления КЛМ-скобки этой системы представлена ниже. Комментарии к инструкциям приведены в самой программе.

^импортирует нужные процедуры из пакета Brackets with(Brackets):

#задает списки независимых и зависмых переменных

TotDiff( G, sigma2vars( sigma ) );

end do;

for sigma in betas do result := result - diff( G, f[op( sigma )] )

* TotDiff( F, sigma2vars( sigma ) );

setup([x, y], [u]):

#первое уравнение

F[1] := u[0, 3] + u[3, 0]*u[1, 2] - u[2, 1]~2:

#второе уравнение

F[2] := u[2, 0]*u[0, 2] - c*u[1, 1]~2:

#вычисляем скобку Майера

F[3] := MayerBracket(F[2], F[1], u):

#продолжение системы в 4-джеты

D4 := {TotDiff(F[1], [1]), TotDiff(F[1], [2]), TotDiff(F[2], [1, 1]), TotDiff(F[2], [1, 2]), TotDiff(F[2], [2,2])}:

#выражение производных 4-го порядка через производные меньших порядков Der4 := solve(D4, {u[0, 4], u[1, 3], u[2, 2], u[3, 1], u[4, 0]}):

#продолжение системы в 3-джеты

D3 := {F[1], TotDiff(F[2], [1]), TotDiff(F[2], [2])}:

#выражение производных 4-го порядка через производные меньших порядков Der3 := solve(D3, {u[0, 3], u[1, 2], u[3, 0]}):

#исключаем из F_3 четвертые и третьи производные Fm := factor(simplify(eval(eval(F[3], Der4), Der3))):

В результате работы этой программы мы получаем КЛМ-скобку для системы (4):

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

[F1, F2] = (^2 - ^ (2^2 + 4cuxy- uXxU2yyuXxy) ,

где

R uyy + uxxuxxy,

s __ r 2 2 2

s Rc uxy — uxxuyy uxxy,

T _ S + Rc2uxy.

Скобка [Fi, F2] тождественно равна нулю, если и только если с _ 3. Список литературы

[1] Тычков С. Н. Вычисление скобки Кругликова-Лычагина-Майера в системе Maple // Международная конференция «Геометрия в Одессе 2009» (25—30 мая 2009). — Одесса : ВПП «Друкарьский д1м», с. 76. |[]

[2] Тычков С. Н. Реализация скобки Кругликова-Лычагина-Майера в системах символьной математики // Международная конференция «Геометрия в Астрахани 2009» (10—16 сентября 2009). — Астрахань : Издательский дом «Астраханский университет», с. 31. |[]

[3] Алексеевский Д. В., Виноградов А. М. Основные идеи и понятия дифференциальной геометрии. М. : ВИНИТИ, 1988.— 289 с. |[], 1

[4] Кокс Д., Литтл Д., О’Ши Д. Идеалы, многообразия и алгоритмы. М. : Мир, 2000.— 687 с. |1

[5] Lychagin V., Kruglikov B. Mayer brackets and solvability of PDEs—I // Differential Geometry and its Applications, 2002. 17, p. 251—272. |1

[6] Kruglikov B. Note on two compatibilty criteria: Jacobi-Mayer bracket vs.

differential Groebner basis // Lobachevskii Journal of Mathematics, 2006. 23,

p. 57-70. TD, 3

S. N. Tychkov. Implementation of Kruglikov-Lychagin-Mayer bracket on Maple. Abstract. In this article we describe an implementation of Kruglikov—Lychagin—Mayer bracket on Maple.

Key Words and Phrases: differential equations, Kruglikov—Lychagin—Mayer bracket, Maple.

Образец ссылки на статью:

С. Н. Тычков. Реализация скобки Кругликова-Лычагина-Майера в системе компьютерной алгебры Maple // Программные системы: теория и приложения : электрон. научн. журн. 2011. №2(6), с. 97-103. URL: http://psta.psiras .ru/read/psta2011_2_97-103.pdf

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