О композиции функций и машинном представлении

Malaschonok G.I. Computer mathematics for computational network. A project of the computer mathematics system for computational network is stated. The kernel components of this system are obtained by the basic mathematical objects (numbers, polynomials, functions, matrixes, sequences, series). These mathematical objects are kept in internal memory or out-of-core.

Key words: computer mathematics, computer network.

Поступила в редакцию 20 ноября 2009г.

УДК 004.421

О КОМПОЗИЦИИ ФУНКЦИЙ И МАШИННОМ ПРЕДСТАВЛЕНИИ 1

© Г. И. Малашонок, Р. А. Смирнов

Ключевые слова: каноническая форма, формат хранения функций, композиция функций.

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

1 О представлении в компьютере композиции функций

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

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

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

1 Работа выполнена при поддержке программы "Развитие потенциала высшей школы"

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

1.1 Рациональные функции

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

Класс Polynom содержит два динамических поля: массив степеней (powers) и массив коэффициентов (coeffs). Если в полиноме V переменных и п ненулевых коэффициентов, то в массиве коэффициентов хранится п коэффициентов, а в массиве степеней полинома хранятся vn целых чисел. Каждый отрезок из v чисел относится к одному моному — это степени при соответствующих переменных у этого монома. Мономы в полиноме всегда располагаются в обратном лексикографическом порядке, а переменные — в порядке, обратном старшинству. Каждый полином берется из определённого полиномиального кольца, которое определяет множество коэффициентов полинома. Например полином из кольца Z[x, у, z\

р = —7 x2y5z5 + 9 х7уггг + 3 x5yäz3 — 8 x4y3z + bx3y2z

хранится в виде двух массивов:

powers = 2,5,5, 7,3,3, 5,3,3, 4,3,1, 3,2,1, coeffs = -7, 9, 3, -8, 5.

Полиномы играют роль листовых вершин в дереве функции.

1.2 Общие композиции функции

Для создания дерева композиции функций определим класс TF(Tree Function), в котором заданы три динамических поля:

(1) целочисленное поле пате для имени функции,

(2) массив аргументов типа TF args,

(3) поле типа Element X для указания на листовую вершину дерева.

Каждая функция определяется именем, например, sin, cos, plus, minus и т. д. Всё множество имен упорядочено некоторым образом. В поле пате хранится соответствующий номер функции.

По характеру аргументов все функции делятся на два типа — простые и составные.

У простой функции только один аргумент, на который указывает поле X, а массив аргументов args пустой. У составных функций может быть один или несколько аргументов, при этом поле X пусто, а на аргументы указывают элементы массива args.

На рис. 1. представлена схема дерева для функции sm(cos(x) + tg(y)).

Sin

ADD

\

Cos Tg

x

У

Рис. 1. Схема дерева для функции sin

В этом примере вершины cos и tg простого типа, а вершины ADD и sin - составного.

2 Числа и предельные числа

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

Например, числовой класс NumberR64 предназначен для хранения приближённых действительных чисел в 64-разрядном слове. Его наследует класс предельных чисел NumberR64Lim, в котором кроме родительского динамического поля определено еще одно динамическое поле rORl — целочисленная переменная, принимающее значение —1,1 или 0, в зависимости от того, с какой стороны требуется найти предел в точке: слева, справа или двусторонний.

3 Каноническая форма

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

1. Форма, которая соответствует входному выражению, заданному пользователем (начальная форма).

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

3. Форма, полученная из базовой формы путём приведения подобных слагаемых и приведения произведения сомножителей к стандартному виду путём перестановки полиномов-сомножителей в мультипликативных фрагментах и группировки одинаковых сомножителей под одну степень (приведенная базовая форма).

4. Форма, полученная из формы 3 после удаление сомножителей в степени ноль (сокращенная базовая форма).

5. Форма, полученная из формы 4 путём перемножения всех полиномов, стоящих в каждом мультипликативном фрагменте, после чего в каждом фрагменте останется только один полином-сомножитель (форма с перемноженными полиномами).

6. Форма, полученная из формы 5 путём формального сложения всех дробей без сокращения (форма с одной дробью).

7. Форма, полученная из формы 5 путём раскрытия всех скобок в мультипликативных фрагментах целых слагаемых и приведения целой части к форме 5 (форма с без скобок в целой части).

8. Форма, полученная из форм 6 и 7 факторизацией числителя дроби и свободного слагаемого (форма с одной дробью и факторизованным знаменателем).

9. Форма, в которой открыты все скобки и факторизованы знаменатели (форма полного разложения).

10. Факторизованная форма без учета дробей. Для получения этой формы производится группировка слагаемых и выражение раскладывается на множители.

11. Полная факторизованная форма. Получается вынесением общего множителя у всех числителей дробей и у целой части выражения.

12. Выходная форма. Получается эта форма из любой формы путём замены умножения на минус единицу вычитанием и отрицательных степеней — делением.

4 Вычисление производной и предела композиции функций

Производная композиции функций вычисляется по известной из анализа формуле:

= Р'(д(х))д\х).

Если Г{д) — композиция функций многих переменных, то приведённая формула может рассматриваться как формула вычисления частной производной.

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

ЛИТЕРАТУРА

1. Малашонок Г. И. О проекте параллельной компьютерной алгебры. Вестник Тамбовского университета. Сер. Естественные и технические науки. Том 14, вып. 4, 2009. С.744-748.

Malaschonok G.I., Smirnov R.A. About composition of functions and a machine forms. The form of the function compositions for computer algebra system are discussed. The problem of calculation of limits and derivations of a composition of functions is considered.

Key words: canonical form, function compositions, machine forms of functions.

Поступила в редакцию 20 ноября 2009г.

УДК 004.421

ОБ АЛГОРИТМЕ ФАКТОРИЗАЦИИ ПОЛИНОМОВ МНОГИХ

ПЕРЕМЕННЫХ1

© Г. И. Малашонок, Д. С. Ивашов

Ключевые слова: факторизация полиномов, полиномы многих переменных, компьютерная алгебра.

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

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

Для факторизации полиномов одной переменной известно много замечательных алгоритмов. С обзором работ по факторизации можно познакомиться по учебнику Е.В. Панкратьева [1]. Будем полагать, что имеется некоторый алгоритм разложения на множители полиномов одной переменной. Требуется построить алгоритм факторизации для полиномов многих переменных. Рассмотрим сначала случай двух переменных.

Пусть /'’(ж, у) раскладывается на взаимнопростые множители /¿(ж, у) : Р(х, у) =

[\ 1г{х,у)щ, По <щ < ... < па. Тогда это разложение можно получить вычисляя НОД

г=0

Г(х, у) и Р'(х, у) необходимое количество раз.

Пусть /(ж, у) — полином от двух переменных, у которого нет кратных сомножителей

и который раскладывается на взаимнопростые множители: /(ж, у) = П/?(ж>?/)- Сомно-

э

жители /¿(ж, у) требуется найти. Обозначим Бх = (1едх/(х, у). Возьмём множество разных точек У С <0>, такое что |У| = 5Х + 1 = к. Обозначим (рг(у) = /(ж¿,у) \/ж* в У.

1 Работа выполнена при поддержке программы «Развитие потенциала высшей школы» (проект 2.1.1/1853).