приведи конкретный пример что вот есть конкретная ...
Создано: 20 января 2026 г.
Отвечено с использованием GPT-5.2 Thinking от Chat01
Создано: 20 января 2026 г.
Отвечено с использованием GPT-5.2 Thinking от Chat01
приведи конкретный пример что вот есть конкретная матрица с k-ым количеством собственных чисел которые нужно передвинуть и находятся k правых собственных векторов, затем находится k левых собственных векторов и как будет выглядеть процесс нормировки какая будет система для нахождения нормированных левых векторов и как она будет решаться, до базиса не дополняй - рассмотри именно минор k на k, то есть нужно нормировать только k левых собс векторов, также в примерах по перемещению собственных значений в указанные полюса много случаев где нужно два собс числа передвинуть в два полюса, но есть один пример где кратное собс число и нужно передвинуть это кратное собс число с кратностью два в два разных полюса - будет ли какое-то принципиальное отличие в этом случае? это всё в контексте модального управления с перемещинием k собственных чисел в заданные полюса, я имею ввиду чтобы матрица из столбцов правых собственных векторов умноженная на матрицу из строк левых собтсвенных чисел давала единичную матрицу - как будет выглядеть система для нормировки в этом случае
pythonimport sympy as sp A = sp.Matrix([[1,1,0],[0,-2,1],[0,0,3]]) A.eigenvects() [(-2, 1, [Matrix([ [-1/3], [ 1], [ 0]])]), (1, 1, [Matrix([ [1], [0], [0]])]), (3, 1, [Matrix([ [1/10], [ 1/5], [ 1]])])]
pythonAT = A.T AT.eigenvects() [(-2, 1, [Matrix([ [ 0], [-5], [ 1]])]), (1, 1, [Matrix([ [-6], [-2], [ 1]])]), (3, 1, [Matrix([ [0], [0], [1]])])]
pythonv1 = sp.Matrix([1,0,0]) v2 = sp.Matrix([-1,3,0]) w1 = sp.Matrix([-6,-2,1]) w2 = sp.Matrix([0,-5,1]) print("w1^T v1", (w1.T*v1)[0]) print("w1^T v2", (w1.T*v2)[0]) print("w2^T v1", (w2.T*v1)[0]) print("w2^T v2", (w2.T*v2)[0])
pythonW = sp.Matrix.hstack((-w1/6),(-w2/15)) # columns? wait W should be columns of left vectors? let's compute W^T V Wrows = sp.Matrix([(-w1/6).T, (-w2/15).T]) # 2x3 V = sp.Matrix.hstack(v1,v2) # 3x2 Wrows*V Matrix([ [1, 0], [0, 1]])
pythonA2 = sp.diag(2,2,-1,-3) v1 = sp.Matrix([1,0,0,0]) v2 = sp.Matrix([1,1,0,0]) V = sp.Matrix.hstack(v1,v2) wtil1 = sp.Matrix([1,0,0,0]) # column wtil2 = sp.Matrix([0,1,0,0]) Wtil_rows = sp.Matrix([wtil1.T, wtil2.T]) # 2x4 G = Wtil_rows*V G, G.det(), G.inv() (Matrix([ [1, 1], [0, 1]]), 1, Matrix([ [1, -1], [0, 1]]))
pythonW_rows = G.inv()*Wtil_rows W_rows, W_rows*V (Matrix([ [1, -1, 0, 0], [0, 1, 0, 0]]), Matrix([ [1, 0], [0, 1]]))
Ниже — ровно то, что вы описали: берём только k пар правых/левых собственных векторов (никакого дополнения до базиса), и нормируем их так, чтобы
где — столбцы правых СВ, а — строки левых СВ.
Для комплексного случая вместо надо ставить (сопряжённое транспонирование).
Вы хотите, чтобы выполнялось для . Это и есть система нормировки:
Дальше два сценария:
Ниже — два численных примера, чтобы это было видно руками.
Возьмём матрицу (не симметричную, но простую):
Пусть “двигаем” моды с и .
Правые собственные векторы:
Левые собственные векторы — это решения , эквивалентно . Получаются (как столбцы для ):
Проверка “вне диагонали” (и это важно):
, — занулилось само из-за .
Остаётся только привести диагональ к 1:
Тогда
Итог для разных : нормировка = масштабирование каждой строки отдельно.
Возьмём матрицу с кратным собственным числом 2:
Собственное значение имеет кратность 2, и любой вектор в плоскости — правый собственный. Выберем неортогональные правые СВ:
Левые собственные для тоже живут в строках . Возьмём “сырые”:
Тогда матрица попарных произведений (k×k “минор”):
Хотим найти нормированные левые как линейные комбинации “сырых”:
и требуем
Здесь
и действительно .
То же самое можно записать как систему на коэффициенты: пусть
тогда условия дают
Итог для кратного : нормировка обычно НЕ раскладывается на независимые “подмасштабы”, а делается через систему .
Пусть вы нашли какие-то правых и какие-то левых собственных векторов для выбранных мод и собрали:
Считайте “k×k минор сопряжённости”:
Если , то нормированные левые берутся так:
Как это “решается” численно/алгебраически: это линейных систем размера .
Например, i-я строка находится из
По сути — два разных случая.
Тогда у вас есть 2 независимых собственных вектора, и с точки зрения размещения полюсов (при управляемости) вы можете задать два разных желаемых полюса : это просто “расщепление” кратного корня.
Отличие в модальном/эигенструктурном подходе обычно не в возможности, а в том, что:
Тогда всего один собственный вектор и один обобщённый (цепочка Жордана).
Вот тут уже возникает принципиальная разница именно для “модального” вывода: вам надо работать с обобщёнными собственными векторами/условиями цепочки, и простая схема “взяли два собственных вектора и нормировали” неприменима как есть.
Если хотите, я могу в следующем сообщении связать это прямо с формулами модального управления (как входит в выражения для проектирования обратной связи при перемещении ровно k мод), но вы просили именно нормировку и именно на k×k — выше это сделано.