基于MATLAB的fast傅里叶振幅局部敏感性分析方法(无目标函数)

作品简介

## 一、FAST(Fourier Amplitude Sensitivity Test)

FAST(Fourier Amplitude Sensitivity Test)傅里叶振幅灵敏度测试是一种用于敏感性分析的方法,它可以评估模型输入参数对输出结果的影响。FAST方法通过将输入参数的变化转换为傅里叶级数,并分析不同频率下的响应来确定参数对输出的敏感程度。

本文供了FAST的应用示例。FAST使用模型输出的傅里叶分解来近似基于方差的一阶灵敏度指数。

分为以下步骤: 

## Step 1: 建立模型,定义输入范围

%参数数量:
M  = 7 ; 
% 参数范围:
xmin=[137	0	0	160	4.4	708	650];%各个参数下限
xmax=[374	193	260	240	19 1049.90	902];%各个参数上限
% 参数分布:
for i=1:M; DistrPar{i} = [ xmin(i) xmax(i) ] ; end
% 参数名称:
X_labels = {'X1','X2','X3','X4','X5','X6','X7'} ; 
% 定义函数:
%函数采用@bpfun ;

## Step 2: FAST近似一阶灵敏度指数

% FAST采样
[X,s] = FAST_fun(DistrFun,DistrPar,M);

% 运行模型并计算采样参数集的模型输出:

Y = myfun(X) ;

% 评估指标:

Si_fast = FAST_indices(Y,M) ;

`%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

上面使用的“FAST_fun”函数会自动将样本量设置为给定输入数量M的最小值

N_fast = length(Y) ;
 %% 绘图
 figure()
  bar(Si_fast);
 xlabel('输入变量')
 ylabel('评价指标')
 legend('S')
 title('FAST敏感性分析(无目标函数)')


## Step 3:收敛性分析

评估使用更多的样本,FAST估计值是否会改变:

即由原来的的样本数npop变成NNfast

 npop:npop+500:npop+1000

 %% 绘图

 figure()
  bar([Si_fast_conv']);
 xlabel('输入变量')
 ylabel('评价指标')
 legend('S1-1th','S2-1th','S3-1th')
 title('FAST敏感性分析(无目标函数)')


创作时间:2024-12-15 22:02:55