Matlab 求矩阵擦除后的最大条件数

Matlab 求矩阵擦除后的最大条件数,matlab,matrix,linear-algebra,gaussian,numerical-methods,Matlab,Matrix,Linear Algebra,Gaussian,Numerical Methods,我正在处理以下问题:给定一个大尺寸的随机高斯矩阵,例如1000×500。然后任意删除500行,并考虑矩阵左的条件数。在高概率情况下,我们能得到的最大可能条件数是多少 这里,高斯矩阵表示矩阵具有i.i.d标准正常项。我想写一个MATLAB程序来做一些仿真。如何编写程序?谢谢你的帮助。这是一个有趣的问题。我不知道有什么理论结果,但很容易建立蒙特卡罗模拟并观察 请注意,任意删除500行相当于始终删除最后500行,例如,因为行是i.i.d.,并且条件编号对更改行的顺序是不变的 M = 100; %//

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


这里,高斯矩阵表示矩阵具有i.i.d标准正常项。我想写一个MATLAB程序来做一些仿真。如何编写程序?谢谢你的帮助。

这是一个有趣的问题。我不知道有什么理论结果,但很容易建立蒙特卡罗模拟并观察

请注意,任意删除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获得大量实现可能需要很长时间

正如所料,当您删除行时,条件数会增加(尽管我没想到它会增加这么多!)

从获得的向量
cond1
cond2
可以计算统计数据或百分位数。例如,在每种情况下,仅以10%概率超过的值为

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

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

时,条件数将根据矩阵包含的内容而变化很大。如果矩阵内容发生变化,我看不出理论上如何找到这个条件数。你说的“高斯”矩阵:我假设一个由高斯随机分布生成的矩阵?这意味着什么和s.d?在这种情况下,随机性的“高概率”是通过从该矩阵中删除500行并找到条件数来进行多次迭代。。。。然后保存最大的条件编号。你的意思是说给定一个输入矩阵的最大可能条件数吗?很好的模拟!如果在行之间引入相关性(例如,通过从相关的多元正态分布中绘制每列),可以使效果更大!我不确定他的问题的背景是什么,但根据他的输入矩阵是如何生成的,随机删除500行可能会对条件数产生更大的影响。感谢您的解决方案,我从这个答案中得到了一些想法。实际上,我想考虑的是一个更复杂的问题:总共有1000个选择500种方法来移除500行,我感兴趣的是在所有这些可能性中可能获得的最大可能条件数。那么,在这种设置下,程序会有所不同吗?嗯,那是另一回事。为此,您可以构建一个循环,并在每次迭代中使用
Xreduced=X(randperm(1000500),:
构建一个矩阵,该矩阵由原始矩阵的500行组成
X