Научная статья на тему 'Вычисление матричной степени и матричных функций'

Вычисление матричной степени и матричных функций Текст научной статьи по специальности «Математика»

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

Текст научной работы на тему «Вычисление матричной степени и матричных функций»

Для этого нужно показать, что матрица R невырожденная, H G Cn, E = EH, R — IEh € Fi,ie > RA = H. H

БЛАГОДАРНОСТИ: Работа выполнена при поддержке РФФИ, проект 04-07-90268.

Литература

1. Strassen V. Gaussian Elimination is not optimal. Numerische Mathematik. 1969.13, 354-356.

2. Малашонок Г. 11. О решении систем линейных уравнений р-адическим методом. Программирование, 2003, 2, с.8-22.

3. Малашонок Г. 11. Матричные методы вычислений в коммутативных кольцах. Тамбов: Изд-во ТГУ 2002.

4. Gustavson F.G. High-performance linear algebra algorithms using new generalized data structures for matrices. IBM Journal for Research and development. Vol. 41, Issue 1, January, 2003, P. 31-55.

5. Gustavson F.G. Recursion leads to automatic variable blocking for dense linear-algebra algorithms. IBM Journal for Research and development. Vol. 41, Issue 6, November, 1997, P. 737-756.

6. Axo А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.

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

Вычисление матричной степени и матричных функций

© Г.И. Малашонок , © М.В. Старов

1 Введение

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

Недавно появилась работа Виктора Робука, в которой предлагается способ вычисления матричной степени [1], в котором используются только коэффициенты характеристического полинома и не требуется вычисления его корней. Этот алгоритм позволил перевести задачу вычисления матричной степени из области вычислительной математики в область компьютерной алгебры.

Алгоритм вычисления матричной степени в работе [1] сводится к следующему. Пусть имеется матрица М порядка N и т > N, тогда вычисление матричной степени Мт можно выполнить по следующему алгоритму:

N-1

Mm = ^ Ф;,тМ* , (1)

где

N-p-1

фр,т Zp,m 'У ^ akZp+k,m •> (2)

к=1

^ (ki + ... + kN)! ki kn ro\

ZP,m = b ki! ...kN! ai ..^N (3)

где сумма пробегает все к* которые удовлетворяют уравнению:

к\ + 2к2 + ... + Мкы = т — р (4)

при условии р < т, и ад = ( — 1)9+1стд, где ад коэффициенты характеристического полинома матрицы М.

2 Оценка сложности алгоритма

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

Сначала получим оценку снизу количества решений Г(т, N) диофантового уравнения (4) при р = 0:

т т — №кМ т—Ыкн —...—3кз

N N—1 2

ЕЕ ... Е 1 (5)

кн=0 кн —1=0 к2 = 0

В этой формуле стоит N — 1 кратное суммирование целых положительных чисел, а верхние пределы - это целые части стоящих там дробей. Можно на эту сумму смотреть как на N — 1 кратный объем,

составленный из единичных кубиков. Чтобы оценить этот объем снизу, будем вычислять объем

фигуры, которая в него целиком погружена, для этого уменьшим верхний предел на 1, а целое деление заменим на рациональное деление. Получим выражение:

т л т—Ыкы л т — №кы — ... — 3кз ..

/*т— 1 г 1 С 2 1

/ / ... с1х2 ..Лхх-^ (6)

0 0 0

Последовательное прямое вычисление интегралов позволяет получить простую нижнюю оценку, если пренебречь меньшим из двух слагаемых, которое равно

кк-2 . е-20(к) к — 2 (е2\к ..

Щрк(к — 2> = 2п (Т). (7)

Здесь к > 3 - нижний индекс переменной хк, по которой ведется интегрирование. В итоге получим значение интеграла:

тм-2 е-2в(м) т — 2N + 2 ( те2

= («п2N(т — 2N+ 2> = ^---------------т— (-ж) .

Здесь использовалась формула Стирлинга:

—! = /2пп(—') ев(п\ где |0(—)| < ----. (8)

\е/ 12—

Для вычисления всех требуемых значений Ф^т из (1) нужно знать все значения Zim, i = 0, N — 1 (3). Если даже предполагать, что в (3) все факториалы и необходимые степени коэффициентов характеристического полинома заранее вычислены и записаны в память, то тогда для вычисления одно такого слагаемого Zim потребуется не меньше, чем 2N операций умножения. Следовательно, для нахождения всех значений Zim требуется

m

Rp = 2N ^ Fk,N

k=m-N +1

операций умножения.

Вычисление всех Ф^т требует дополнительно N(N2—~ операций умножения, вычисление всех матричных степеней Mk, k < N требует N3(N — 2) операций умножения и вычисления, в соответствии с (1) требуют N2 (N — 1) операций умножения. Всего дополнительно потребуется N4 — N3 — N2/2 — N/2 операций.

Следовательно, основной вклад в число мультипликативных операций дает сумма (6) со сла-

N

сложность превышает полиномиальную, считаются очень сложными. И их стараются не применять.

Поэтому в следующем параграфе мы предлагаем улучшенный алгоритм, который имеет полиномиальную сложность.

3 Алгоритм с полиномиальной сложностью

М

^(Л) = А" + ^Л"-1 + ... + Нм . (9)

Пусть т > N рассмотрим деление с остатком полинома Ат на Л.(Л):

Лт = / (Л)Л-(Л) + г(Л), (10)

где /(Л) = /оЛт-" + /1Лт-"-1 + ... + /т_" и г(Л) = г 1 Л"-1 + ... + Г".

По теореме Гамильтона-Кэли Л.(М) = 0. Следовательно:

Мт = г(М). (11)

Таким образом, задача нахождения матричной степени сводится к нахождению коэффициентов по-Г(Л)

коэффициенты, приравняем коэффициенты при равных степенях в левой и правой части равенства (10). Получим систему, состоящую из т + 1 уравнений и содержащую т + 1 неизвестных

/о,.., /т_м, го,.., Г"_1:

/о = 1 ,

fi = — (h1fi —1 + h2fi —2 + ... + hi/o) , i = 1 N — 1 (12)

fi = —(h1fi —1 + h2fi —2 + ... + hN fi — N) , i = N m — N +1

ri = (hi fm—N + ... + hNfm —2N+i) , i = 1, N

Матрица коэффициентов системы имеет треугольный вид, у которой все элементы, за исключением N

этой системы потребуется всего N(m — N) операций умножения. Учитывая то, что для вычисления всех степеней матрицы Mk, k < N, требуется N3(N — 2) операций умножения, а для вычнсле-

N2 ( N — 1)

умножения, всего получим C = N(N3 + m) — N2(N + 2) операций умножения во всем алгоритме. Приведем соответствующий алгоритм.

Algorithm MatrixPower

Mm

Mm

N = length(M);

C oef C harPol [] = CoeffCharPol(M); n = m — N + 1; f [0] = 1;

i = 1 n — 1 k = N — 1;

for j = i — N to i — 1 do if j > 0 then

f[i] = f [i] + CoefCharPol[k] x (f [j]); k = k — 1; f [i] = —f [i];

i = 0 N — 1 k = m — N +1; j = i N— 1 k = k — 1; if k > 0 then

r[i] = r[i] + CoefCharPol[j] x f [k]; r[i] = —r[i];

MatrP [0] = I;

MatrP [1] = M;

i = 2 N — 1 MatrP [i] = M x MatrP [i — 1];

i = 0 N — 1 MatrP[i] = MatrP[i] x R[N — i — 1]; MatrPower = MatrPower + MatrP [i]; return MatrPower;

4 Улучшенный алгоритм с экспоненциальной сложностью

Исследование решения системы (12) позволяет по-новому взглянуть на алгоритм с экспоненциальной сложностью.

Рассмотрим решение системы (12) методом Крамера. Определитель матрицы коэффициентов системы будет иметь вид:

д

і G. .G G. .. G G G. .G G

hl і. .G G. .. G G G. .G G

hN hN — l . .і G. .. G G G. .G G

G hN . . hl і. .. G G G. .G G

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

G G. . hN hN — l . .. і G G. .G G

G G. .G hN . . hl і G. .G G

G G. .G G. . . h2 G і. .G G

G G. .G G. . . hN—l G G. .і G

G G. .G G. . . hN G G. .G 1

Так как этот определитель равен 1, то последние N неизвестных Г1, ..,Г" равны соответствующим определителям, полученным заменой одного из последних столбцов на единичный столбец. Раскладывая их по последним N столбцам, найдем г* (1=1,..,1М):

hl і. .. G G. .. G . . . G G

hN hN — l . .. і G. .. G . . . G G

G hN . . . hl і. .. G . . . G G

G G. . . hN hN — l . .. і . . . G G

G G. .. G hN . . . hl . . . G G

G G. .. G G. . hN—i . . . hl 1

G G. .. G G. . . hN . . hi+1 hi

Эти определители отличаются только последней строкой: определитель г* в последней строке имеет N — I + 1 коэффициент характеристического полинома ^,.., а их первые т — N строки берутся

из определителя Д. Разложим г* по последней строке. Получим:

N

ri ^ ^ ak Zm—N+i — ^ k=i

где а4 = ( —1)4+1 ^ и ^ обозначает минор, образованный строками 1, 2,.., т — N и столбцами

1, 2,.., t — 1,4 + 1,.., т — N + 1 определителя Д.

r

Отметим, что = 1 и Zk, к > 1, равен значению верхнего детого углового минора порядка к — 1 определителя Д. Докажем по индукции, что:

(к1 + ... + )! к1 к

— ' ------------------------«1 ...а

к1! • • • !

N

N

для к = 2,.., т — N Здесь сумма пробегает все к*, которые удовлетворяют уравнению

к1 + 2к2 + ... + Жк^ = к — 1 .

Предположим, что это утверждение верно для всех Zj, г < к. Рассматривая Zk как угловой минор к—1

N

Zfc ^ ^ aiZfc—г

і=1

Здесь предполагается, что ^ = ^и і < 1.

N N

^ ^ «і^к-і ^ ^ «і ^ ^

і=1 і=1 к—і

(к1 + ... + ^ )! кі

к^ ••• kN!

а ... а

N

ЕЕ

і=1 к

(к1 + ... + кі — 1 + ... + kN)! к1

----------------------------------а 1

к1! ••• (кі - 1)! ••• kN! 1

N

к N ■ «/ =

^ (к1 + ... + ^)! к1 кн ^-кї-ттгк^-^ ...«

N

Здесь мы воспользовались тождеством

N

Е

і=1

(к1 + ... + кі — 1 + ... + kN)! (к1 + ... + kN)!

к1! ••• (кі — 1)! ••• kN!

к1! • • • kN!

Таким образом мы получили еще один алгоритм вычисления матричной степени

N N

Мт = +і-кмN-і .

і=1 к=і

Этот алгоритм напоминает алгоритм (1), однако тут нет лишних слагаемых, которые имеются в сумме (1). Соответствие этих алгоритмов устанавливается равенством = Ят-р. Этот алгоритм также имеет экспоненциальную сложность.

к

N

5 Численные эксперименты

Были реализованы программы для приведенных выше алгоритмов с полиномиальной и экспоненциальной сложностью вычисляющих матричную степень. Приведем результаты экспериментов по вычислению матричных степеней для матриц пятого порядка.

Степень Ді(мс) Жі(мс) і Л£ 1 ~ /V* Др Жр р N *

25 16.7 0.6 27.8 3745 575 6

50 388 0.7 554 7.8 х 104 700 111

75 2847 0.9 3163 4.4 х 105 825 533

100 11536 1.2 9613 1.5 х 106 950 1550

125 34599 1.5 23066 3.7 х 106 1075 3459

150 88902 2.1 42334 7.8 х 106 1200 6570

Np — число операций умножения в алгоритме с полиномиальной сложностью,

Rp — нижняя оценка числа операций умножения в алгоритме с экспоненциальной сложностью,

Nt — время вычисления матричной степени в алгоритме с полиномиальной сложностью,

Rt — время вычисления матричной степени при использовании алгоритма с экспоненциальной сложностью,

NRt — время вычисления матричной степени при использовании алгоритма с полиномиальной сложностью,

NRp

ностью.

Литература

1. Robuk V.N. A constructive formula for function of matrix. Alternative to the Lagrange-Silvester formula. Nuclear Instruments and Methods in Physics Research A 534 (2004) 319-323.

2. Ланкастер П. Теория матриц. М.: Наука, 1973, с. 280.

3. Математическая энциклопедия/ Гл. ред. И.М. Виноградов. — М.: Сов. Энциклопедия, 1979. Т.5.

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

Использование жесткого диска в матричных вычислениях

© М.С.Зуев

Вычисления с использованием жесткого диска реализованы, например, в известном пакете численных методов POOCLAPACK (Parallel out-of-core Linear algebra package, см. [5]).

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

В современной литературе блочные и блочно-рекурсивные матричные методы рассматриваются как одни из самых эффективных. В отличие от стандартных строчно-ориентированных методов, такие методы более эффективно используют процессорный кэш, и поэтому позволяют достигать производительности процессора, близкой к пиковой (см. [2-4]). Например, в работе [2] указывается достижение 92 % производительности процессора IBM Power 3 с блочной процедурой разложения Холецкого и 76 % с соответствующей поэлементной процедурой.

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

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

Для исследования эффективности таких алгоритмов были проведены вычислительные эксперименты на однопроцессорной машине. Сравнивались алгоритмы умножения и обращения матриц (одностороннее обращение, см. [1]) размера 4096 х 4096 в конечном поле по 28-битному простому модулю. Как и в POOCLAPACK, матрица разбивается на блоки фиксированного размера, которые записываются в отдельные файлы. Матрице сопоставляется папка на диске. Если разбить матрицу на четыре равных блока, то возможно их хранение в отдельных папках.

Для определения лучшего алгоритма умножения были рассмотрены четыре алгоритма: стандартный блочный алгоритм (алгоритм 0), стандартный блочный алгоритм с записью блоков на

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