我正在处理以下问题:给定一个大尺寸的随机高斯矩阵,例如1000乘500.然后任意删除500行并考虑剩下的矩阵的条件数。我们可以获得的最大可能条件数是多少?
这里高斯矩阵意味着矩阵具有i.i.d标准正常条目。我想写一个MATLAB程序来做一些模拟。我该如何编写程序?谢谢你的帮助。
答案 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;
,获取大量实现可能需要很长时间。
正如预期的那样,删除行时条件数会增加(虽然我没想到它会增加太多!)。
从获得的向量cond1
和cond2
中,您可以计算统计数据或百分位数。例如,在每种情况下,只有10%概率超过的值
>> quantile(cond1,.9)
ans =
5.837510220358853
>> quantile(cond2,.9)
ans =
9.422516183444204e+02
这意味着在原始矩阵中,条件数的90%次数小于5.8375
;而在简化矩阵中,条件数的90%的次数小于942.25
。