1、使用UQLab将其他类型的随机变量转换成标准Gaussian分布;
2、使用科学计数法输出样本,方便后续ANSYS的调用分析;
3、基于MC的可靠度分析。
原随机变量分布类型:
% 调用UQLab进行采样
clc
clear
uqlab
%% Specify these distributions as a UQLab INPUT object:
PriorOpts.Marginals(1).Name = 'E'; % Young's modulus
PriorOpts.Marginals(1).Type = 'LogNormal';
PriorOpts.Marginals(1).Moments = [2.1e11 2.1e10]; % (Pa)
PriorOpts.Marginals(2).Name = 'A';
PriorOpts.Marginals(2).Type = 'LogNormal';
PriorOpts.Marginals(2).Moments = [2.0e-3 2.0e-4]; % (m2)
Moments = [5.0e4 5.0e4*0.15];
Parameters = uq_weibull_MtoP( Moments );
PriorOpts.Marginals(3).Name = 'P1';
PriorOpts.Marginals(3).Type = 'Weibull';
PriorOpts.Marginals(3).Parameters = (Parameters); % (N)
PriorOpts.Marginals(4).Name = 'P2';
PriorOpts.Marginals(4).Type = 'Weibull';
PriorOpts.Marginals(4).Parameters = (Parameters);
PriorOpts.Marginals(5).Name = 'P3';
PriorOpts.Marginals(5).Type = 'Weibull';
PriorOpts.Marginals(5).Parameters =(Parameters);
PriorOpts.Marginals(6).Name = 'P4';
PriorOpts.Marginals(6).Type = 'Weibull';
PriorOpts.Marginals(6).Parameters = (Parameters);
PriorOpts.Marginals(7).Name = 'P5';
PriorOpts.Marginals(7).Type = 'Weibull';
PriorOpts.Marginals(7).Parameters = (Parameters);
PriorOpts.Marginals(8).Name = 'P6';
PriorOpts.Marginals(8).Type = 'Weibull';
PriorOpts.Marginals(8).Parameters = (Parameters);
PriorOpts.Copula.Type = 'Independent';
myPriorDist = uq_createInput(PriorOpts);
X_MC = uq_getSample(100,'MC');
X_LHS = uq_getSample(80, 'LHS');
X_Sobol = uq_getSample(500000,'Sobol');
X_Halton = uq_getSample(80,'Halton');
% 将样本以科学计数法的方式输出成txt文件
fid = fopen('truss8.txt', 'wt'); % -t模式按照文本而非二进制模式读写
fprintf(fid,[repmat(' %.4e ', 1, size(X_Sobol,2)), '\n'], X_Sobol'); % 转置并适时(写完一列后)添加换行
fclose(fid);
%% 将样本转化成标准高斯分布类型
UMarginals(1).Type = 'Gaussian';
UMarginals(1).Parameters = [0,1];
UMarginals(2).Type = 'Gaussian';
UMarginals(2).Parameters = [0,1];
UMarginals(3).Type = 'Gaussian';
UMarginals(3).Parameters = [0,1];
UMarginals(4).Type = 'Gaussian';
UMarginals(4).Parameters = [0,1];
UMarginals(5).Type = 'Gaussian';
UMarginals(5).Parameters = [0,1];
UMarginals(6).Type = 'Gaussian';
UMarginals(6).Parameters = [0,1];
UMarginals(7).Type = 'Gaussian';
UMarginals(7).Parameters = [0,1];
UMarginals(8).Type = 'Gaussian';
UMarginals(8).Parameters = [0,1];
UCopula.Type = 'Independent';
U = uq_GeneralIsopTransform(X_MC,myPriorDist.Marginals, myPriorDist.Copula, UMarginals, UCopula);
% 将样本以科学计数法的方式输出成txt文件
fid = fopen('truss_IsopTransform.txt', 'wt'); % -t模式按照文本而非二进制模式读写
fprintf(fid,[repmat(' %.4e ', 1, size(U,2)), '\n'], U'); % 转置并适时(写完一列后)添加换行
fclose(fid);
% 计算9个变量桁架结构的失效概率和可靠度指标
clear
clc
load weiyi_B.txt
Q = abs(weiyi_B);
m = size(Q, 1);
R = ones(m, 1)*0.1; % 最大位移
Z = R - Q; % 功能函数
count = 0; % 功能函数值小于零的个数
for i = 1:m
if Z(i) < 0
count = count + 1;
end
end
pf = count/m; % 失效概率
beta = norminv(1-pf); % 可靠度指标
SS = [pf, beta];