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)
- Бөлім: Articles
- ##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).
Қосымша файлдар


