Простой алгоритм для генерации положительно-полуопределенных матриц

Используйте базовую, угловатую, как javascript framework для дизайна пользовательского интерфейса, и извлекайте данные, используя rest api. Это полностью удалит зависимость java от пользовательского интерфейса.

26
задан Scottie T 6 March 2009 в 18:14
поделиться

4 ответа

  1. генерируют случайную матрицу
  2. , умножают его на свое собственное перемещение
  3. , Вы получили положительную полуопределенную матрицу.

Пример кода (Python):

from scipy import random, linalg
matrixSize = 10 
A = random.rand(matrixSize,matrixSize)
B = numpy.dot(A,A.transpose())
print 'random positive semi-define matrix for today is', B
46
ответ дан vartec 15 October 2019 в 07:06
поделиться

Необходимо быть ясными на определении "случайных". Каковы Ваши ограничения на получающуюся матрицу? Вы хотите, чтобы коэффициенты были однородно или обычно распределены? Вы хотите, чтобы собственные значения имели конкретное распределение? (и т.д.).

существует много способов генерировать положительные полуопределенные матрицы M, включая:

  1. , Учитывая произвольную матрицу A, вычислите M = <глоток> T (построение разложение Cholesky )
  2. , Учитывая произвольную диагональную матрицу S с неотрицательными диагональными записями и ортонормированной матрицей Q того же размера, вычислите M = QSQ <глоток> T (построение сингулярное разложение )

По числовым причинам, я, вероятно, выбрал бы второй подход путем генерации диагональной матрицы с желаемыми свойствами, затем генерируя Q как состав многих отражения Домовладельца (генерируйте случайный вектор v, масштаб к единичной длине, H = я - 2vv <глоток> T ); я подозреваю, что Вы хотели бы использовать K * N, где N является размером матрицы M, и K является числом между 1.5-3 (я предполагаю на этом), который гарантирует, что это имеет достаточно степеней свободы.

Вы могли также генерировать ортонормированную матрицу Q использование вращения Givens : выберите 2 отличных значения от 1 до N и генерируйте вращение Givens вокруг той пары осей с углом, равномерно распределенным от 0 до 2 * пи. Тогда возьмите K * N их (то же обоснование как выше абзаца), и их состав приводит к Q.

редактирование: я был бы предположение (не уверенный), что, если у Вас есть коэффициенты, которые независимо сгенерированы и обычно распределяются, тогда матрица в целом "обычно распределялась бы" (независимо от того, что это означает). Это верно для векторов, по крайней мере. (N независимо сгенерированные Гауссовы случайные переменные, один для каждого компонента, дает Вам Гауссов случайный вектор), Это не верно для равномерно распределенных компонентов.

19
ответ дан Jason S 15 October 2019 в 07:06
поделиться

Если можно генерировать случайную матрицу на выбранном языке, то при помощи свойства, что матрица, умноженная на транспонировала, является положительным semi-definte, можно генерировать случайный положительный полуопределенный matix

В Matlab, это было бы столь же просто как

% Generate a random 3x3 matrix
    A = rand(3,3) 
% Multiply by its tranpose
    PosSemDef = A'*A 
8
ответ дан chillysapien 15 October 2019 в 07:06
поделиться

Естественные распределения на положительно полуопределенных матрицах - это распределения Уишарта .

6
ответ дан 28 November 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: