Генерация положительно определенной матрицы размеров 8x8

Я пытаюсь создать положительно определенную матрицу (A'*A) размерами 8x8. где А равно 1x8.

Я пробовал это для многих случайно сгенерированных матриц A, но не смог их сгенерировать.

octave-3.6.1.exe:166> A= (rand(1,8)+rand(1,8)*1i);
octave-3.6.1.exe:167> chol(A'*A);
error: chol: input matrix must be positive definite

Может кто-нибудь, пожалуйста, скажите мне, что здесь происходит не так. Спасибо за помощь заранее.


person complex22    schedule 10.05.2013    source источник


Ответы (2)


Это невозможно сделать, так как никакая матрица такого вида не является положительно определенной.

Утверждение: Учитывая 1xn (действительную, n>1) матрицу A, симметричная матрица M = A'A не является положительно определенной:

Доказательство: по определению M положительно определена тогда и только тогда, когда x' Mx > 0 для всех ненулевых x. То есть тогда и только тогда, когда x'A'Ax = (Ax)'Ax = (Ax)^2 = (A_1 x_1 + ... + A_n x_n) > 0 для всех ненулевых x.

Поскольку действительные значения A_i линейно зависимы, существует x_i, а не все нули, такие, что A_1 x_1 + ... + A_n x_n = 0. Мы нашли ненулевой вектор x такой, что x'Mx = 0, поэтому M не является положительно определенным.

Другое доказательство, которое можно применить непосредственно к сложному случаю, таково: пусть A будет 1xn (комплексной, n>1) матрицей. Положительная определенность подразумевает обратимость, поэтому M = A * A должен иметь полный ранг, чтобы быть положительно определенным. Он явно имеет ранг 1, поэтому он необратим и, следовательно, не является положительно определенным.

person jorgeca    schedule 10.05.2013
comment
Спасибо за Ваш ответ. Это также применимо для сложных матриц? так как я не могу генерировать сложные матрицы. Я попытался сделать следующее: - person complex22; 11.05.2013
comment
Большое спасибо за ваш ответ. Это было действительно полезно - person complex22; 11.05.2013
comment
@complex22 Я добавил сложный случай. Ваш первоначальный вопрос уже был очищен, но помните, что вы можете использовать кнопку {}, чтобы включить блоки кода или написать его inline вокруг обратных кавычек. - person jorgeca; 11.05.2013

Вот как я обычно создаю матрицу SPD

1) Создайте случайную симметричную матрицу
2) Убедитесь, что все диагональные значения больше, чем сумма любой строки или столбца, в которых они появляются.

Обычно для (1) я использую случайное число от 0 до 1. Тогда легко определить число, которое будет использоваться для каждой диагональной записи.

Ваше здоровье,

person user3047595    schedule 28.11.2013