基于 MATLAB 计算结构可靠度指标β的结果分析

响应面法matlab代码:

muX = [2;4]; 

sigmaX=[0.4;0.8]; 

rhoX =[1,0;0,1];

sLn = sqrt(log(1+(sigmaX./muX).^2));

 mLn = log(muX)-sLn.^2/2;x = muX;

 normX = eps;

n = length(muX); 

f = 2;d = diag(f*sigmaX);

gM = 1+(x(1)-1)*x(2);

while abs(norm(x)-normX)/normX > 1e-6

normX = norm(x);

a1 = x'; a2 = a1.*a1;

a3 = repmat(a1,n,1);

a3 = a3-d; 

a4 =a3.*a3;

a5 =a3+2*d;

a6 = a5.*a5;

a = [ones(2*n+1,1),[a1,a2;a3,a4;a5,a6]];

163318gv = 1+(a(:,2)-1).*a(:,3);

lambda = a\gv;

x = muX; 

normX1 = eps;

while abs(norm(x)-normX1)/normX1 > 1e-6

normX1 = norm(x);

g = lambda'*[1;x;x.*x];

gX = lambda(2:n+1)+2*lambda(n+2:2*n+1).*x;

cdfX = logncdf(x,mLn,sLn);

 pdfX = lognpdf(x,mLn,sLn);

nc = norminv(cdfX);

sigmaX1 = normpdf(nc)./pdfX;muX1 = x-nc.*sigmaX1;

gs =gX.*sigmaX1;

alphaX = -rhoX*gs/sqrt(gs'*rhoX*gs);

bbeta = (g+gX'*(muX1-x))/sqrt(gs'*rhoX*gs);

x = muX1+bbeta*sigmaX1.*alphaX;

end

g = 1+(x(1)-1)*x(2);

x = muX+gM/(gM-g)*(x-muX)

end

JC 法命令流:

muX = [2;4]; 

sigmaX = [0.4;0.8]; 

rhoX = [1,0;0,1];

sLn = sqrt(log(1+(sigmaX./muX).^2));

 mLn = log(muX)-sLn.^2/2;

muX1 = muX;

 sigmaX1 = sigmaX;

x = muX;

normX = eps;

while abs(norm(x)-normX)/normX > 1e-6

normX = norm(x);

g = 1+prod(x)-x(2);

gX = [x(2);x(1)-1];

cdfX = logncdf(x,mLn,sLn); 

pdfX = lognpdf(x,mLn,sLn);

nc = norminv(cdfX);

sigmaX1 = normpdf(nc)./pdfX;

muX1 = x-nc.*sigmaX1;

gs = gX.*sigmaX1;

alphaX = -rhoX*gs/sqrt(gs'*rhoX*gs);

bbeta = (g+gX'*(muX1-x))/sqrt(gs'*rhoX*gs);

x = muX1+bbeta*sigmaX1.*alphaX;

end

对 比 两 种 不 同 方 法:

响 应 面 法 计 算 结 果 为:β=4.6900,x*=(7.9722×10-1,4.9315)T,

JC 法计算结果:β=4.6900,由此可知响应面法计算结果精度能够满足要求。

  • 6
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值