Implementation of an algorithm for finding the resolvent of a matrix using the adject matrix and characteristic polynomial

Cover Page

Cite item

Full Text

Abstract

The article describes the implementation of an algorithm for calculating the resolvent of a matrix using the adjoint matrix and the characteristic polynomial of the matrix in Python. The graphs show the speed of the algorithm for various matrix dimensions.

Full Text

Введение. При решении многих задач требуется вычислять резольвенту матрицы [1], не зная ее собственных значений. В частности, такая задача возникает при решении систем линейных алгебраических уравнений с малым параметром методом Ляпунова-Шмидта [2; 3]. В работе [1] приведен подход вычисления резольвенты матрицы с использованием присоединенной матрицы и характеристического многочлена матрицы. Для вычисления последних Д. К. Фаддеевым предложен метод одновременного вычисления коэффициентов

характеристического многочлена и присоединенной матрицы [1].

Изложим алгоритм вычисления резольвенты матрицы на основе подхода, изложенного в [1] и метода Д. К. Фаддеева одновременного вычисления коэффициентов характеристического многочлена и присоединенной матрицы.

Алгоритм вычисления резольвенты матрицы. Для вычисления резольвенты постоянной (m × m) −матрицы A

R(λ)=λEА1 воспользуемся формулой [1, с. 112]

R(λ)=1xmin(λ)С(λ)

где C(𝜆) – приведенная присоединенная матрица для матрицы [𝜆𝐸 − A] (см. [1, с. 99]);

𝜒min (𝜆) – минимальный характеристический многочлен матрицы A.

Приведенную присоединенную матрицу C(𝜆) и минимальный характеристический многочлен матрицы A будем вычислять по формулам [1, с. 99-100]

C(λ)=1d(λ)BA(λ)xmin(λ)=Δ(λ)d(λ)

где B𝐴(𝜆) – присоединенная матрица для матрицы A [1, с. 92], 𝑑(𝜆) – наибольший общий делитель всех элементов матрицы B𝐴(𝜆),

Δ(λ)=λnp1λn1p2λn2...pn1λpn – характеристический многочлен матрицы A.

Для нахождения присоединенной матрицы B𝐴(𝜆) воспользуемся формулой [1, с. 94]

BA(λ)=B0λn1+B1λn2+B2λn3+...+Bn1,

где B0– единичная (m× m) −матрица, а (m× m) −матрицы Bk, k= 1, … , n − 1, находятся методом Д. К. Фаддеева по формулам [1, с. 97]

Ak=A Bk1,pk=1kSp(Ak),Bk=AkpkE,k=1, ... , m.

Здесь 𝐸0 – единичная (m× m) −матрица.

Программная реализация алгоритм вычисления резольвенты матрицы. Приведем фрагменты алгоритма вычисления резольвенты матрицы A на языке Python с использованием пакета SymPy.

Фрагмент кода инициализации матрицы A с целыми случайными элементами

𝑎ij, i, j = 1, … , m из отрезка [−10, 10]:

max_aij = 10

A = np.random.randint(-max_aij, max_aij + 1, (m, m))

Фрагмент кода реализации метода Д. К. Фаддеева одновременного вычисления характеристического многочлена ∆(𝜆) и присоединенной матрицы BA(𝜆):

def fadeev_method(A):

m = len(A)

E = sympy.eye(m)

B = [0 for i in range(m + 1)]

B[0] = sympy.eye(m)

tmpA = [0 for i in range(m + 1)]

p = [0 for i in range(m +  1)]

for k in range(1, m + 1):

tmpA[k] = A * B[k -  1]

p[k] =  1 / k * matrix_trace(tmpA[k])

B[k] = tmpA[k] - p[k] * E

deltaLambda = lyamda ** m

for i in range(1, m + 1):

deltaLambda -= p[i] * lyamda ** (m - i)

                B_A = sympy.zeros(m)

for k in range(m):

B_A += B[k] * lyamda ** (m - 1 - k)

return B_A, deltaLambda

Фрагмент кода вычисления наибольшего общего делителя всех элементов присоединенной матрицы BA(𝜆):

d = B_A[0, 0]

for i in range(m):

for j in range(m):

d = sympy.gcd(d, B_A[i, j])

Фрагмент кода вычисления приведенной присоединенной матрицы C(𝜆), минимального характеристического многочлена 𝜒min(𝜆) и резольвенты R(𝜆) матрицы A:

C =  1 / d * B_A

x_min = deltaLambda.as_expr() / d

R =  1 / x_min * C

Вычислительный эксперимент. Вычисления проводились на ноутбуке с процессором 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz и операционной системой Windows 11 Pro.

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

 

Рисунок. Графики зависимостей скорости работы алгоритма от размерности матрицы A при условиях:
a) |𝑎ij | ≤ 10, b) |𝑎ij | ≤ 105, c) |𝑎ij | ≤ 106, d) |𝑎ij | ≤ 107, i, j = 1, … , m

 

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

Для сравнительного анализа использовалась функция пакета Sympy нахождения обратной матрицы, зависящей от параметра. Вычисления показали, что при m = 30 и |𝑎ij| ≤ 10 эта функция уже затрачивает порядка 10 мин., что значительно превышает скорость работы    разработанного алгоритма вычисления резольвенты матрицы с использованием приведенной присоединенной матрицы и минимального характеристического многочлена.

×

About the authors

P. A. Shamanaev

National Research Mordovia State University

Email: ogarevonline@yandex.ru
Russian Federation

D. A. Katin

National Research Mordovia State University

Email: ogarevonline@yandex.ru
Russian Federation

E. V. Desyaev

National Research Mordovia State University

Author for correspondence.
Email: ogarevonline@yandex.ru
Russian Federation

References

  1. Гантмахер Ф. Р. Теория матриц. – М.: Наука, 1966. – 576 с.
  2. Вайнберг М. М., Треногин В. А. Теория ветвления решений нелинейных уравнений. – М.: Наука, 1964. – 524 с.
  3. Шаманаев П. А., Прохоров С. А. Алгоритм решения систем линейных алгебраических уравнений с малым параметром методом Ляпунова-Шмидта в регулярном случае [Электронный ресурс] // Математическое моделирование, численные методы и комплексы программ имени Е. В. Воскресенского: IX Международная научная молодежная школа-семинар (Саранск, 8-11 октября 2020 г.). – С. 129–131. – Режим доступа: https://conf.svmo.ru/files/2020/papers/paper40.pdf (дата обращения: 23.11.2023).

Supplementary files

Supplementary Files
Action
1. JATS XML
2. Figure. Graphs of the dependence of the speed of the algorithm on the dimension of the matrix A

Download (481KB)

Мы используем файлы cookies, сервис веб-аналитики Яндекс.Метрика для улучшения работы сайта и удобства его использования. Продолжая пользоваться сайтом, вы подтверждаете, что были об этом проинформированы и согласны с нашими правилами обработки персональных данных.

Согласие на обработку персональных данных

 

Используя сайт https://journals.rcsi.science, я (далее – «Пользователь» или «Субъект персональных данных») даю согласие на обработку персональных данных на этом сайте (текст Согласия) и на обработку персональных данных с помощью сервиса «Яндекс.Метрика» (текст Согласия).