-
Notifications
You must be signed in to change notification settings - Fork 0
alexeymuranov/sig
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Sig === Read some input, generate some matrices, compute their signatures, select "interesting" signatures, print them out. Author: Alexey Muranov (Алексей Муранов). Proposed by Stepan Orevkov (Степан Оревков). Программa берёт на вход матрицу с полиномиальными коэффициентами. Пример исходной матрицы 3х3: [ [ -1 - s - t - s*t, s + s*t, 0 ], [ 1 + t, -1 - s - t - s*t, s + s*t ], [ 0, 1 + t, -1 - s - t - s*t ] ] После подстановки s = -1/a, t = -1/b получается: [ [ -1 + 1/a + 1/b - 1/(a*b), -1/a + 1/(a*b), 0 ], [ 1 - 1/b, -1 + 1/a + 1/b - 1/(a*b), -1/a + 1/(a*b) ], [ 0, 1 - 1/b, -1 + 1/a + 1/b - 1/(a*b) ] ] При умножении на (1-a)(1-b) получается [ [ -4 + 2/a + 2*a + 2/b - 1/(a*b) - a/b + 2*b - b/a - a*b, 2 - 2/a - 1/b + 1/(a*b) - b + b/a, 0 ], [ 2 - 2*a - b^(-1) + a/b - b + a*b, -4 + 2/a + 2*a + 2/b - 1/(a*b) - a/b + 2*b - b/a - a*b, 2 - 2/a - b^(-1) + 1/(a*b) - b + b/a ], [ 0, 2 - 2*a - 1/b + a/b - b + a*b, -4 + 2/a + 2*a + 2/b - 1/(a*b) - a/b + 2*b - b/a - a*b ] ] и эта матрица эрмитова при |a| = |b| = 1. Переменные a и b надо заменять на всевозможные комплексные числа, равные по модулю единице, кроме единицы. Сигнатуру надо считать на всех таких значениях a и b, что |a| = |b| = 1, a \ne 1, b \ne 1, с некоторым фиксированным шагом 1/q. На самом деле, результат не меняется, если все параметры одновременно заменить на сопряжённые. Поэтому можно сделать, чтобы один из параметров принимал только значения с неотрицательной мнимой частью. Кроме сигнатуры надо еще считать дефект (англ: nullity; фр: nullité) эрмитовой формы. Это коранг матрицы -- число нулевых собственных чисел (нулевое -- значит меньше чем, скажем, 10^{-10}). Удобнее всего, если результат будет в виде списка (таблицы?) наборов чисел (p_1,...,p_k,s,n), где exp(2\pi i p_1/q), ... , exp(2\pi i p_k/q) -- значения параметров, s = signature, n = nullity. При этом удобно, чтобы выдавались не все наборы, а только те, для которых величина |s|-n больше некоторого наперед заданного значения. Было бы еще неплохо, чтобы каждый раз выдавалось минимальное по модулю собственное число, признанное ненулевым. Это полезно, так как если оно будет слишком маленьким, то это будет означать, что при этих значениях параметров надо для надежности все пересчитать с более высокой точностью. Надо выдавать и те случаи, где сигнатура интересная, не указывая мин. собств. значение, и отдельно те случаи, когда есть подозрительно малые собств. значения (независимо от того, какая там сигнатура).
About
Read some input, generate some matrices, compute their signatures, etc.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published