使用蒙特卡罗方法扰动矩阵元素约10%左右的标称值

时间:2015-12-31 17:16:57

标签: matlab matrix montecarlo

此处提供尺寸为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]

如何围绕n%的标称值扰动矩阵A的元素,得到矩阵A的扰动模型?

2 个答案:

答案 0 :(得分:3)

您可以使用此方法创建矩阵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个模型。

答案 1 :(得分:3)

创建包含所有扰动值的矩阵将比逐个元素更快。此示例使用均匀分布,但可以轻松更改以进行正态分布。

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