使用 Monte Carlo 方法在其标称值附近扰动矩阵元素约 10%

Using Monte Carlo method to perturb Matrix elements about 10% around their nominal values

此处提供大小为 9*9 的矩阵 A。

A = [-6.932e-2,17.41,-36.75,0,0,0,-6.0660,-31.54,0;
    -1.435e-4,2.719e-2,-1.411e-3,3.467e-1,0,-9.380e-1,7.139e-2,-1.691e-2,0;
    -4.537e-4,1.870e-3,-2.025e-1,0,1,0,-4.688e-2,7.563e-3,0;
    -1.304e-4,-7.179,-4.916e-1,-6.172e-1,-3.689e-2,7.631e-1,0,0,0;
    2.297e-5,0,-8.667e-1,4.393e-2,-1.947e-1,-2.026e-2,0,0,0;
    1.964e-5,4.263e-2,-1.329e-2,1.233e-3,1.579e-2,-1.600e-1,0,0,0;
    0,0,0,1,1.941e-1,2.771e-1,0,6.258e-2,0;
    0,0,0,0,8.192e-1,-5.736e-1,-5.612e-2,0,0;
    0,0,0,0,6.055e-1,8.648e-1,0,2.006e-2,0]

我们如何围绕矩阵 A 的标称值 n% 扰动矩阵 A 的元素并获得矩阵 A 的扰动模型?

您可以使用此方法创建矩阵 A 的 n 个模型。

对矩阵的每个元素执行以下操作。例如,通过选择矩阵 A(1,1)=-6.932e-2.

n = 20; % The number of elements evaluations
sd = 0.01;  % The percent of perturbation around nominal value
A_11 = (randn(n,1)*sd*A(1,1))+A(1,1);

.... .

... 你会得到 A_11 作为:

   -0.0692
   -0.0692
   -0.0695
   -0.0695
   -0.0687
   -0.0693
   -0.0692
   -0.0698
   -0.0701
   -0.0701
   -0.0687
   -0.0694
   -0.0685
   -0.0685
   -0.0693
   -0.0704
   -0.0688
   -0.0696
   -0.0692
   -0.0701

您应该对矩阵的其他元素执行此操作。

通过选择n = 20,您可以获得矩阵A(1,1)的20个元素,如果您对其他元素这样做,您可以获得矩阵A的n个模型。

创建一个包含所有扰动值的矩阵比 element-wise 更快。此示例使用均匀分布,但可以轻松更改为正态分布。

N = 20;
d = 0.1;

A_perturb =  repmat(A,[1 1 N]) + repmat(A,[1 1 N]) .* ...
    ((rand(size(A,1),size(A,2),N) - 0.5) .* 2 .* d);

获取 A(1,1) 的所有值:

>> reshape(A_perturb(1,1,:),[],1)

ans =

-0.0702
-0.0762
-0.0627
-0.0628
-0.0632
-0.0739
-0.0722
-0.0705
-0.0637
-0.0746
-0.0759
-0.0702
-0.0715
-0.0685
-0.0645
-0.0631
-0.0711
-0.0660
-0.0672
-0.0706

第九次迭代得到A:

>> A_perturb(:,:,9)

ans =

-0.0637   16.8216  -37.8357         0         0         0   -5.8413  -30.0970         0
-0.0001    0.0275   -0.0015    0.3390         0   -0.9977    0.0713   -0.0153         0
-0.0005    0.0017   -0.1889         0    1.0960         0   -0.0427    0.0081         0
-0.0001   -6.7782   -0.5080   -0.6484   -0.0387    0.7986         0         0         0
0.0000         0   -0.8465    0.0413   -0.2107   -0.0210         0         0         0
0.0000    0.0408   -0.0138    0.0013    0.0161   -0.1751         0         0         0
0         0         0    1.0582    0.1925    0.2722         0    0.0630         0
0         0         0         0    0.7448   -0.5221   -0.0575         0         0
0         0         0         0    0.6176    0.8328         0    0.0212         0