擦除后查找矩阵的最大条件数

时间:2015-12-11 22:34:39

标签: matlab matrix linear-algebra gaussian numerical-methods

我正在处理以下问题:给定一个大尺寸的随机高斯矩阵,例如1000乘500.然后任意删除500行并考虑剩下的矩阵的条件数。我们可以获得的最大可能条件数是多少?

这里高斯矩阵意味着矩阵具有i.i.d标准正常条目。我想写一个MATLAB程序来做一些模拟。我该如何编写程序?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

这是一个有趣的问题。我不知道任何理论结果,但很容易设置蒙特卡罗模拟并看到。

请注意,任意删除500行相当于始终删除 last 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

正如预期的那样,删除行时条件数会增加(虽然我没想到它会增加太多!)。

从获得的向量cond1cond2中,您可以计算统计数据或百分位数。例如,在每种情况下,只有10%概率超过的值

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

这意味着在原始矩阵中,条件数的90%次数小于5.8375;而在简化矩阵中,条件数的90%的次数小于942.25