使用 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
此处提供大小为 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