0

如何生成随机三角矩阵?(上下)

通常我使用rand(n),但如果我尝试tril(rand(n))它会是单数的,我不想要那样。

4

3 回答 3

3

你的答案是正确的:

 A=tril(rand(n))

你可以检查这个矩阵不是奇异的使用

 rcond(A)>eps

或者

 min(svd(A))>eps

并验证最小奇异值是否大于 eps 或与您的需求相关的任何其他数值公差。(代码将返回 1 或 0)。因为n>50您将开始处理奇异矩阵。

这是一个关于矩阵如何以其大小接近奇点的小分析......

在此处输入图像描述

于 2015-10-07T16:28:54.460 回答
0

如果你想要一个条件良好的随机三角矩阵,你可以用A = rand( n )取A 2的三角形部分。因此,任何大小n的triu( A * A )条件良好,但矩阵-矩阵乘法当然具有复杂性O(n 3 )

于 2019-04-12T00:40:22.833 回答
0

好了,关于三角矩阵奇点的想法就说到这里。三角矩阵的行列式决定了奇异性,因为在构建逆矩阵时它会进入分母。三角矩阵的性质是行列式等于对角元素的乘积。

所以对于矩阵NxN,我们在对角线上有 iid U(0,1) 数的乘积。显然,行列式会随着N增加而减少,因为所有数字都<1,并且您拥有的数字越多,产品(也称为行列式)的价值就越小。

有趣的是,检查 det=X 1 X 2 ...*X N的平均值将下降为 2 -N,因为产品中的每个项都是 U(0,1),平均值为 1/2,并且它们都是 iid 替代检查是从产品 PDF 计算平均值(请参阅https://math.stackexchange.com/questions/659254/product-distribution-of-two-uniform-distribution-what-about-3-or- more ),实际上,它会给你完全相同的结果, 2 -N。也可以计算行列式的方差,即第二动量减去均方,它等于 (3 -N -4 -N )。

请注意,这些是平均值,您可以平均预期,例如,如果您对 N=100 的 10 6 个三角矩阵进行采样,计算它们的行列式并将其平均,您应该会发现它非常接近 2 -100

这就是问题所在。平均而言,三角随机矩阵随着 的增长呈指数增长N。2 -10大约等于 1/1,000。2 -20大约等于 1/1,000,000。对于 N = 100,它应该平均约为 10 -30左右,这使得整个练习没有意义。

不幸的是,除了这个简单的分析,我无法提供任何东西。

于 2015-10-12T01:55:36.593 回答