特定发行版的pdf

H. *_* H. 4 statistics matlab probability

我是Matlab的新手.我想用Matlab检查所谓的"对数定律",以确定随机矩阵,但仍然不知道如何.

对数定律:

设A是一个随机伯努利矩阵(条目是iid,取值+ -1,大概为1/2),大小为n乘n.我们可能想要将(log(det(A ^ 2)) - log(factorial(n-1)))/ sqrt(2n)的概率密度函数与高斯分布的pdf进行比较.对数定律表明,当n接近无穷大时,第一个的pdf将接近第二个的pdf.

我的Matlab任务非常简单:检查比较,比如说n = 100.谁知道怎么做?

谢谢.

Amr*_*mro 5

考虑以下实验:

n = 100;                           %# matrix size
num = 1000;                        %# number of matrices to generate

detA2ln = zeros(num,1);
for i=1:num
    A = randi([0 1],[n n])*2 - 1;  %# -1,+1
    detA2ln(i) = log(det(A^2));
end

%# `gammaln(n)` is more accurate than `log(factorial(n-1))`
myPDF = ( detA2ln - gammaln(n) ) ./ sqrt(2*log(n));
normplot(myPDF)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,对于大型矩阵,A*A的行列式将太大而无法以双数表示并将返回Inf.但是,我们只需要行列式的日志,并且存在其他方法来查找此结果,从而使计算保持对数级.

在评论中,@ yoda建议使用特征值detA2(i) = real(sum(log(eig(A^2))));,我还在FEX上发现了一个具有类似实现的提交(使用LU或Cholesky分解)