Implementation of an algorithm for finding the resolvent of a matrix using the adject matrix and characteristic polynomial
- 作者: Shamanaev P.A., Katin D.A., Desyaev E.V.
- 期: 卷 11, 编号 16 (2023)
- 栏目: Статьи
- ##submission.dateSubmitted##: 23.11.2024
- ##submission.dateAccepted##: 23.11.2024
- URL: https://ogarev-online.ru/2311-2468/article/view/271159
- ID: 271159
如何引用文章
全文:
详细
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.
全文:
Введение. При решении многих задач требуется вычислять резольвенту матрицы [1], не зная ее собственных значений. В частности, такая задача возникает при решении систем линейных алгебраических уравнений с малым параметром методом Ляпунова-Шмидта [2; 3]. В работе [1] приведен подход вычисления резольвенты матрицы с использованием присоединенной матрицы и характеристического многочлена матрицы. Для вычисления последних Д. К. Фаддеевым предложен метод одновременного вычисления коэффициентов
характеристического многочлена и присоединенной матрицы [1].
Изложим алгоритм вычисления резольвенты матрицы на основе подхода, изложенного в [1] и метода Д. К. Фаддеева одновременного вычисления коэффициентов характеристического многочлена и присоединенной матрицы.
Алгоритм вычисления резольвенты матрицы. Для вычисления резольвенты постоянной (m × m) −матрицы A
воспользуемся формулой [1, с. 112]
где C(𝜆) – приведенная присоединенная матрица для матрицы [𝜆𝐸 − A] (см. [1, с. 99]);
𝜒min (𝜆) – минимальный характеристический многочлен матрицы A.
Приведенную присоединенную матрицу C(𝜆) и минимальный характеристический многочлен матрицы A будем вычислять по формулам [1, с. 99-100]
где B𝐴(𝜆) – присоединенная матрица для матрицы A [1, с. 92], 𝑑(𝜆) – наибольший общий делитель всех элементов матрицы B𝐴(𝜆),
– характеристический многочлен матрицы A.
Для нахождения присоединенной матрицы B𝐴(𝜆) воспользуемся формулой [1, с. 94]
где B0– единичная (m× m) −матрица, а (m× m) −матрицы Bk, k= 1, … , n − 1, находятся методом Д. К. Фаддеева по формулам [1, с. 97]
Здесь 𝐸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(𝜆):
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 мин., что значительно превышает скорость работы разработанного алгоритма вычисления резольвенты матрицы с использованием приведенной присоединенной матрицы и минимального характеристического многочлена.
作者简介
P. Shamanaev
编辑信件的主要联系方式.
Email: ogarevonline@yandex.ru
俄罗斯联邦
D. Katin
Email: ogarevonline@yandex.ru
俄罗斯联邦
E. Desyaev
Email: ogarevonline@yandex.ru
俄罗斯联邦
参考
- Гантмахер Ф. Р. Теория матриц. – М.: Наука, 1966. – 576 с.
- Вайнберг М. М., Треногин В. А. Теория ветвления решений нелинейных уравнений. – М.: Наука, 1964. – 524 с.
- Шаманаев П. А., Прохоров С. А. Алгоритм решения систем линейных алгебраических уравнений с малым параметром методом Ляпунова-Шмидта в регулярном случае [Электронный ресурс] // Математическое моделирование, численные методы и комплексы программ имени Е. В. Воскресенского: IX Международная научная молодежная школа-семинар (Саранск, 8-11 октября 2020 г.). – С. 129–131. – Режим доступа: https://conf.svmo.ru/files/2020/papers/paper40.pdf (дата обращения: 23.11.2023).
补充文件
