In[]:=
CompoundExpression[
]
​​deploy
Mon 27 Nov 2023 11:24:51
- “Frobenius norm of a product of Gaussian matrices” math.SE post​
- random-matrix-moments colab​
- top level: Free Probability section under Notes: Optimization
​
In[]:=
​

Second moment

In[]:=
d=1000;​​getNorm[n_]:=​​x:=RandomVariate[NormalDistribution[0,
-1/2
d
],{d,d}];​​Cn=Nest[x.#&,x,n-1];​​
2
Norm[Cn.Cn,"Frobenius"]
​​;​​TableForm[Table[{n,getNorm[n],getNorm[n],getNorm[n],getNorm[n]},{n,1,5}],TableHeadings->{{},{"n","sample1","sample2","sample3","sample4"}}]
Out[]//TableForm=
n
sample1
sample2
sample3
sample4
1
1994.13
2004.98
2013.08
2001.93
2
3017.27
3005.96
2996.5
2995.37
3
4042.05
4010.99
3968.99
4053.55
4
5036.93
5029.61
5067.01
5092.75
5
5873.58
6115.03
6127.35
6032.45

Mixed Moments

Comparing XX’XX’ vs XXX’X’

In[]:=
n=40;​​numTrials=10;​​maxMoment=5;​​sq[mat_]:=mat.mat;​​​​randMat:=RandomVariate[NormalDistribution[],{n,n}]
n
;​​sq[mat_]:=mat.mat;​​method1:=With[{X=randMat},X.X.X.X];​​method2:=With[{X=randMat},X.X.X.X];​​​​method1f:=With[{X=randMat,Y=randMat},X.X.Y.X];​​method2f:=With[{X=randMat,Y=randMat},X.X.Y.X];​​​​(*momentofamatrix*)​​moment[mat_,s_]:=Tr[MatrixPower[mat,s]]/n;​​(*Estimatessmoment*)​​momentEstimate[s_,method_]:=If[s==0,0,Mean@Table[moment[method,s],{numTrials}]];​​momentsXY=Table[momentEstimate[s,sq@randMat],{s,1,maxMoment+1}];​​momentsXYXY=Table[momentEstimate[s,method1],{s,0,maxMoment}];​​momentsXXYY=Table[momentEstimate[s,method2],{s,0,maxMoment}];​​​​momentsXYXYf=Table[momentEstimate[s,method1f],{s,0,maxMoment}];​​momentsXXYYf=Table[momentEstimate[s,method2f],{s,0,maxMoment}];​​​​TableForm[{momentsXY,momentsXYXY,momentsXXYY,momentsXYXYf,momentsXXYYf},TableHeadings->{{"s=1","s=2","s=3"},{"XY","XYXY","XXYY","fXYXY","fXXYY"}}]
Out[]//TableForm=
XY
XYXY
XXYY
fXYXY
fXXYY
s=1
1.03831
0
0
0
0
s=2
1.89654
2.31175
0.90341
-0.0592956
0.0135517
s=3
6.78403
14.168
3.48215
-0.185881
-0.0379916
13.0656
163.782
14.8713
-0.882164
0.0905633
40.7758
910.889
42.7098
-0.589415
0.0387337
153.486
19358.
248.225
1.2882
0.817834
In[]:=
momentsXXYYf
Out[]=
{0,0.0135517,-0.0379916,0.0905633,0.0387337,0.817834}