Поиск положительной полуопределенной матрицы большого ранга * C *, записи которой дают особую матрицу * L * - PullRequest
0 голосов
/ 04 марта 2019

Моя цель в двух словах:

Учитывая матрицу 8x8 C У меня есть алгоритм, который создает другую матрицу 8x8 L = L (C) физически соответствующим образом, причем каждая запись L задается определенной (возможно, иррациональной) линейной комбинацией до 8 записей C .Я хочу найти конкретный выбор C , который является положительным полуопределенным и имеет большой ранг (7 или 8), но дает единственное число L .

Факты:

  • Каждый положительный полуопределенный C может быть записан как C = U * U для некоторых U (где U * обозначает комплексное сопряжение транспонирования U ).
  • В этом случае ker U = ker C , и, следовательно, ранг U и C одинаковы.
  • Если U имеет невырожденную подматрицу 7x7 принципа, то ранг U не менее 7.

Наивное решение:

  1. Объявите U как матрицу символов 8x8 и создайте ** С одна тысяча пятьдесят восемь = U * U * 1 059 *.Это гарантирует, что C является положительно-полуопределенным.
  2. Определите V как верхнюю левую подматрицу 7x7 для U .Обратите внимание, что если V неособо, ранг C составляет не менее 7.
  3. Вычислить L из C .
  4. Попробуйте решить ([det (V) ~ = 0, det (L) == 0], [vars]) , где vars = записи U .

Сложность:

Одна непосредственная проблема заключается в том, что не каждый выбор U , который имеет ранг 7 или 8, будет иметь V неособо, поэтому матрица C , которую я ищу, может быть пропущена в этом режиме.Игнорируя это здесь, моя проблема для этого форума больше связана со сложностью проблемы:

Установив C = U * U и используя записи U в качествепеременные, каждая запись C становится суммой 8 членов, каждая степень 2. Например, запись c21 задается как

u11*conj(u12) + u21*conj(u22) + u31*conj(u32) + u41*conj(u42) + u51*conj(u52) + u61*conj(u62) + u71*conj(u72) + u81*conj(u82)

Поскольку каждая запись L является линейной комбинацией от 2 до 8 записей C , мы имеем, что каждая запись L является линейной комбинацией между 2 * 8 = 16 и 8 * 8 =64 степени степени 2 из записей U (или U *).Таким образом, det (L) является равномерной степенью 2 * 8 = 16 полиномов с 8! * 16 ^ 8≈10 ^ 14 и 8! * 64 ^ 8≈10 ^ 19 членов до упрощения.Мне нужно, чтобы этот многочлен был равен нулю, в то время как одновременно det (V) отличен от нуля (однородный многочлен степени 7 с 7! = 5040 членами).

Обратите внимание, что если один из них следует избегать использования C = U * U и вместо этого пусть элементы C будут переменными, тогда det (L) будет полиномом одинаковой степени 8 с числом от 8! *2 ^ 8≈10 ^ 7 и 8! * 8 ^ 8≈10 ^ 11 членов до упрощения.Мне нужно, чтобы этот многочлен был равен нулю, в то время как det (V) отличен от нуля, и некоторые дополнительные условия помещаются так, чтобы C был положительно полуопределенным (критерий Сильвестра и т. Д.).

Мой вопрос:

Есть ли более разумный способ сделать это?Конечно, определитель - не самый эффективный способ определить, является ли L единичным, но в идеале я хотел бы получить точный ответ для C , а не числовое приближение.

Я наиболее знаком с Matlab, но любые предложения, использующие любую систему (Python, Macaulay2, ...), будут очень оценены.Что касается вычислительной мощности, у меня есть доступ к нескольким кластерам суперкомпьютеров.

Редактирование:

Возможно, немного возвышенный вопрос.Более усваиваемые подвопросы:

  • Существует ли вычислительно более простой, идеально символический алгоритм определения, является ли матрица сингулярной (в отличие от вычисления определителя)?

  • Есть ли в вычислительном отношении более простой способ требовать, чтобы ответ был положительным полуопределенным (в отличие от установки C = U * U и использования записей U в качестве переменных)?

  • Существует ли менее строгий (но все еще простой в вычислительном отношении) способ требовать, чтобы C имел ранг 7 или 8?

...