Избегайте генерации особой матрицы в MATLAB - PullRequest
5 голосов
/ 24 февраля 2011

Как бы вы сгенерировали случайную матрицу, которая не является единственной в MATLAB .?

Я знаю, что для проверки этого можно использовать определитель матрицы, но после прочтения Определитель MATLAB :

"Использование det (X) == 0 в качестве теста для сингулярности матрицы подходит только для матриц умеренного порядка с небольшими целочисленными значениями. Тестирование сингулярности с использованием abs (det (X)) <= допуск не рекомендуется, так как Трудно выбрать правильный допуск. Функция cond (X) может проверять наличие единичных и почти сингулярных матриц. "</p>

Так что если я хочу сгенерировать большую случайную матрицу (axb) a = 5000, b = 5000 , как это сделать ??.

1 Ответ

14 голосов
/ 24 февраля 2011

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

A = randn(5000);

. Вы можете проверить это, используя min(svd(A)) и проверив, что наименьшее единственное значение равнобольше нуля.

Это общеизвестный факт, но вот пример бумаги, если вы хотите один .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...