2015-12-11 4 views
1

Я имею дело со следующим вопросом: если задана случайная гауссовская матрица большого размера, скажем, например, 1000 на 500. Затем произвольно удалите 500 строк и рассмотрите номер условия матрицы оставил. Какое максимально возможное число условий мы можем получить с высокой вероятностью?Поиск максимального числа условий матрицы после стирания

Здесь гауссова матрица означает, что матрица имеет стандартные стандартные записи. Я хотел бы написать программу MATLAB для моделирования. Как я могу написать программу? Спасибо за любую помощь.

+0

Этот номер условия будет широко варьироваться в зависимости от того, какое содержимое будет содержать эта матрица. Я не вижу, как вы теоретически найдете этот номер условия, если содержимое матрицы изменится. Вы сказали «гауссовскую» матрицу: я предполагаю матрицу, порожденную гауссовским случайным распределением? Что будет означать и с.д. быть? «С большой вероятностью» в этом случае случайности заключается в многократном повторении, удалив из этой матрицы 500 строк и найдя номер условия .... затем сохраните самое большое число условий. Вы хотите сказать максимально возможное условие ** с учетом входной матрицы **? – rayryeng

ответ

3

Это интересная проблема. Я не знаю никаких теоретических результатов, но легко настроить симуляцию Монте-Карло и посмотреть.

Обратите внимание, что произвольно удаления 500 строк эквивалентно всегда удаления последних 500 строк, например, потому что ряды i.i.d. и номер условия инвариантен к изменению порядка строк.

M = 100; %// initial number of rows 
N = 50; %// number of columns 
R = 1e4; %// number of Monte Carlo realizations 
cond1 = NaN(1,R); %// preallocate 
cond2 = NaN(1,R); %// preallocate 
for r = 1:R 
    X = randn(M,N); %// matrix with i.i.d normalized Gaussian entries 
    cond1(r) = cond(X); 
    cond2(r) = cond(X(1:N,:)); 
end 
loglog(cond1, cond2, '.', 'markersize', 1) %// scatter plot of results in logarithmic scale 
xlabel('Condition number of original matrix') 
ylabel('Condition number of reduced matrix') 

Это результат для M=100; N=50;. Обратите внимание, что для M=100; N=50; может потребоваться много времени для получения большого количества реализаций.

enter image description here

Как и ожидалось, состояние число увеличивается при удалении строк (хотя я не ожидал, что увеличение так много!).

От полученных векторов cond1 и cond2 вы можете вычислить статистику или процентили. Так, например, значение, которое превышено лишь 10% вероятности, в каждом случае,

>> quantile(cond1,.9) 
ans = 
    5.837510220358853 
>> quantile(cond2,.9) 
ans = 
    9.422516183444204e+02 

Это означает, что в исходной матрице, 90% времени состояние число меньше 5.8375; тогда как в уменьшенной матрице в 90% случаев число условий меньше 942.25.

+0

Хорошая симуляция! Если вы вводите корреляцию между строками (например, вычерчивая каждый столбец из коррелированного многомерного нормального распределения), вы можете сделать эффект еще больше! Я не уверен, каков контекст его проблемы, но в зависимости от того, как генерируется его входная матрица, случайное удаление 500 строк может иметь еще большее влияние на число условий. –

+0

Спасибо за ваше решение, я получил некоторую идею из этого ответа. Фактически то, что я хотел бы рассмотреть, является более сложной задачей: всего в 1000 выбрать 500 способов удалить 500 строк, меня интересует максимально возможное число условий, которое можно было бы получить среди всех этих возможностей. Так будет ли программа отличаться от этой настройки? –

+0

Ну, это другое дело. Для этого вы можете построить цикл и на каждой итерации использовать 'Xreduced = X (randperm (1000,500) ::' построить матрицу со случайным набором из 500 строк от оригинала 'X' –

Смежные вопросы