научная статья по теме ПАКЕТ ДЛЯ РАБОТЫ С ЛИНЕЙНЫМИ ОПЕРАТОРАМИ С ЧАСТНЫМИ ПРОИЗВОДНЫМИ Математика

Текст научной статьи на тему «ПАКЕТ ДЛЯ РАБОТЫ С ЛИНЕЙНЫМИ ОПЕРАТОРАМИ С ЧАСТНЫМИ ПРОИЗВОДНЫМИ»

ПРОГРАММИРОВАНИЕ, 2013, No 4, с. 72-82

КОМПЬЮТЕРНАЯ АЛГЕБРА

УДК 004.92+004.94

ПАКЕТ ДЛЯ РАБОТЫ С ЛИНЕИНЫМИ ОПЕРАТОРАМИ С ЧАСТНЫМИ ПРОИЗВОДНЫМИ

© 2013 г. Е. Шемякова

Вычислительный центр им. A.A. Дородницына РАН 119991 Москва, ул. Вавилова, 40 E-mail: shemyakova.katya@gmail.com Поступила в редакцию 15.09.2012

Статья содержит описание пакета ЬРБО, предназначенного для работы с линейными операторами с частными производными с символьными коэффициентами в системе компьютерной алгебры МАРЬЕ. Помимо базовых процедур (создания операторов, получения, изменения и различных упрощений их коэффициентов, а также алгебраических операций с ними) реализованы порождающие системы калибровочных инвариантов для отдельных операторов и пар операторов, метод преобразований Лапласа (не связан с интегральным методом Лапласа), процедуры, возвращающие необходимые и достаточные условия разложения операторов третьего порядка на плоскости в композиции операторов того или иного вида через инварианты, и несколько процедур, связанных с преобразованиями Дарбу.

1. ВВЕДЕНИЕ

Пакет ЬРБО позволяет работать с линейными операторами с частными производными с символьными коэффициентами в системе компьютерной алгебры МАРЬЕ. Это первая публикация, посвященная этому пакету.

Пусть К - дифференциальное поле характеристики ноль с коммутирующими операторами дифференцирования д.

xi,

,дх„, И К [Б] =

К [БХ1,..., БХп ] - кольцо линейных операторов с частными производными с коэффициентами из К, где БХ1,..., БХп соответствуют операторам дифференцирования дХ1,..., дХп.

Операторы L £ K [D] имеют вид

С

£ ajD

| J |=0

(1)

где ■] = (¿1,..., ¿п) - мульти-индекс и DJ = БХ11 ... БХ™, aJ е К и ^| = ¿1 + ... ¿п.

В некоторых случаях требуется, чтобы поле К

мкнутым. Большинство процедур пакета (помимо базовых описанных в разделе 2) работают

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

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

системы калибровочных инвариантов для достаточно большого класса отдельных операторов и пар операторов от двух независимых переменных. Раздел 4 посвящен методу преобразований Лапласа (не связан с интегральным методом Лапласа). Одна из описанных здесь процедур, Ьар1асе_Бо1уег реализует метод Лапласа. Для метода Лапласа не известно никаких оценок на достаточное число итераций, и для каждого отдельного уравнения и соответствующего ему оператора требуется предварительный анализ. Поэтому в пакете предлагаются некоторые дополнительные процедуры, например, построе-

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

2. БАЗОВЫЕ ФУНКЦИИ

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

процедуры LPD0__set_vars(vars), где vars -

список независимых переменных. Например,

LPD0__set_vars([x,y,z,t]); задаст работу с

четырьмя независимыми переменными x, y, z, t.

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

K

результат был корректен, можно включить

комментарии LPD0__warnings : =true :. Если

задать LPD0__warnings : =true :, то, при использовании некоторых процедур, будет выдаваться дополнительная информация (например, решения каких дифференциальных уравнений должны принадлежать полю). По умолчанию, LPD0__warnings :=faise :.

Оператор произвольного порядка относительно произвольных переменных xi,...,xn, хранится как одномерный массив коэффициентов. Коэффициент при DX1 ... D^" записан в этом одномерном массиве под номером combinat[vectoint]( [il, ...,in]), где combinat[vectoint] - процедура стандартного пакета МАРЬЕ.

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

• LPD0__create О задает оператор умножения

на число ноль, оператор порядка ноль.

задает оператор L, в котором коэффициент

aj становится равным f. Степень оператора может при этом изменится. Подчеркнем, что здесь новый оператор записывается опять в L, и он же возвращается в качестве результата.

• LPD0__createO(aOO) задает оператор умножения на функцию аОО, оператор порядка ноль.

тор awDx + aoiDy + aoo.

задает оператор a2oDxx + anDxy + ao2Dyy + aioDx + aoiDy + aoo-

aj

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

Dj

оператора L. Новый оператор записывается опять в L, и он же возвращается в качестве результата.

Также доступны следующие базовые процедуры.

оператора L.

simplify ко всем коэффициентам оператора L. Новый оператор записывается опять в L, и он же возвращается в качестве результата.

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

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

енты оператора в формате, удобном для пользователя.

• LPDO__add(LI::array,L2::array) находит

сумму операторов LI и L2.

вает операторы L1 и L2, и присваивает результат L1. Результат записывается в L1.

дит разность операторов L1 и L2.

композицию операторов L1 и L2.

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

• LPDO__conj (L: : array ,f) выдает (1/f)Lf.

тат применения оператора L к функции f. эффициент при Dj в операторе L.

мально транспонированный оператор L.

Пример 1. Зададим, оператор a100(x, y, z)Dx + a010(x, y, z)Dy + a001(x, y, z)Dz + a000(x, y, z) и выведем, на экран коэффициенты этого оператора в форм,am,е, удобном для пользователя.

restart:

read "/PATH-TO-PACKAGE/lpdo_.txt"; # for Linux # for Windows: read £\\PATH-TO-PACKAGE\\LPDO_.TXT£;

LPDO__set_vars([x,y,z]) :

L:= Create_LPDO_from_coeff([aOOO(x,у,z), al00(x,y,z),a010(x,y,z),a001(x,y,z)]):

LPDO__print(L);

[0, 0, 0], а000(х, y, z) [1, 0, 0], al00(x, y, z) [0, 1, 0], a010(x, y, z) [0, 0, 1], aOOKx, y, z)

Посчитаем степень полученного оператора:

LPDO__degree(L);

1

Следующие команды добавят еще один, ненулевой коэффициент и изменят один из коэффициентов:

LPDO__set_value(L,1,[2,1,0] ):

LPDO__set_value(L,0,[0,0,1]):

LPDO__print(L);

[0, 0, 0], а000(х, y, z) [1, 0, 0], al00(x, y, z) [0, 1, 0], a010(x, y, z) [2, 1, 0], 1

Пример 2. Продолжим пример 1. Для отображения производных с помощью нижних индексов (например, чтобы ux,uy задавали бы производные относительно x и y функции и) удобно использовать процедуру declare стандартного пакета PDEtools;

with(PDEtools):

declare(a000(x,y,z), al00(x,y,z), a010(x,y,z), a001(x,y,z)5 и(х,у,г), r(x,y,z));

Создадим, еще один, оператор и, применим к функции u(x,y,z);

N:= Create_LPD0_from_coeff( [r(x,y,z),1]):

LPDO__print(N);

[0, 0, 0], r(x, y, z) [1, 0, 0], 1

LPDO__apply(N,u(x,y,z));

ru+u_x

Посчитаем коммутатор [L, N] и выведем, его коэффициенты при DxDy и DX на экран:

F:= LPDO__minus(LPD0__mult(N,L),

LPDO__mult(L,N)):

LPDO__value(F_conj,[1,1,0]);

-2 r_x

LPDO__value(F_conj,[2,0,0]);

Г-У

3. КАЛИБРОВОЧНЫЕ ИНВАРИАНТЫ

Введем сначала максимально общее определение дифференциального инварианта:

Определение 1. Рассмотрим некоторое множество преобразований G, действующих на U С K[D]. Функция коэффициентов операторов L € U и их производных различных порядков называется дифференциальным инвариантом G

G

Если же некоторое множество преобразований О действует и на и С К [В], и н а V С К [В], то можно рассматривать функцию коэффициентов и их производных различных порядков операторов £ е и и М е V. Если значение этой

О

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

Многие свойства в теории интегрируемости инвариантны относительно калибровочных преобразований:

Определение 2. Пусть д - обратимый эле-К

ванием оператора £ е К [В] назовем преобразование

£^д-1£д .

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

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

Определение 3. Рассмотрим некоторое мно-

О

и С К [В]. Функция коэффициентов операторов £ е и и М е и и их производных различных порядков называется дифференциальным инвариантом пары (£, М) от,носит,ельно О, если значение этой функции не меняется под О

Определение 4. Дифференциальным мономом функции f е К относительно множества дифференцирований дХ1,..., дХп называется выражение вида

дк1 дкп f

Определение 5. Дифференциальным выражением от, функций f1,..., fs е К 1 относительно множества дифференцирований дХ1,..., дХп называется рациональная, функция с коэффициен-К

ных мономов функций fi, г = 1,..., в.

Определение 6. Множество дифференциальных инвариантов 11,..., ^ относительно

О

на, и С К [В], назы

Для дальнейшего прочтения статьи необходимо приобрести полный текст. Статьи высылаются в формате PDF на указанную при оплате почту. Время доставки составляет менее 10 минут. Стоимость одной статьи — 150 рублей.

Показать целиком