dubaolei的个人博客分享 http://blog.sciencenet.cn/u/dubaolei

博文

利用matlab编程实现jc法来求解可靠性

已有 5731 次阅读 2014-4-21 19:10 |系统分类:科研笔记| 可靠性, 当量正态法, jc法

这个应该算是课堂作业了,利用当量正态法来求解以下问题,求管道的可靠性指标,管材承载能力R服从对数正态分布,环向应力服从正态分布,地面载荷服从极值I型分布。

Contents

§ JC METHOD

§ [original]

§ [the itertation]

§ [R tranfer] transfer R togauss distribution

§ [N2 transfer] transfer N2to gauss distribution

§ [getcos]

§ [loop] get loop variables

JC METHOD

AUTHOR:DUBAOLEI@GMAIL.COMDATE:2014-04-02

functionexer()

%EXER Summary of this function goes here

%   Detailedexplanation goes here

[original]

%Done

clc;

Rmu=309.2;CVr=0.17;Rdelta=52.6;

N1mu=53;CVn1=0.07;N1delta=3.7;

N2mu=70;CVn2=0.29;N2delta=20.3;

%the iteration number

i=1

%first step

i =

 

    1

 

[the itertation]

while(i<6)

   ifi==1

       rstar=Rmu;

       rmu2=Rmu;

      n1star=N1mu;

       n1mu2=N1mu;

      n1delta2=N1delta;

      n2star=N2mu;

       n2mu2=N2mu;

      n2delta2=N2delta;

       Cvr=0.17

   end

   %R loop

  rmu2=getRmu2(rstar,rmu2,Cvr)

  rdelta2=getRdelta2(rstar,Cvr)

  Cvr=rdelta2/rmu2

   %N2 loop

  [Fn2,fn2,n2mu2,n2delta2]=getN2(n2mu2,n2delta2,n2star)

   %get the direction cos

   [cosr cosn1cosn2]=gettheta(rdelta2,n1delta2,n2delta2)

   %get the loop results

  beta=getloopbeta(rmu2,n1mu2,n2mu2,rdelta2,n1delta2,n2delta2)

  rstar=getloopRstar(rmu2,rdelta2,beta,cosr)

  n1star=getloopN1star(n1mu2,n1delta2,beta,cosn1)

   n2star=getloopN2star(n2mu2,n2delta2,beta,cosn2)

   %show the result

   disp('__________________________________________________________n')

   %increse the loop variables

   i=i+1

end

Cvr =

 

   0.1700

 

end

[R tranfer] transfer R to gauss distribution

%DONE

functionRm=getRmu2(Rst,Rm,Cvr)

%H1 this function get the average number

Rm=Rst*(1+log(Rm/(sqrt(1+Cvr^2)))-log(Rst));

end

functionRdel=getRdelta2(Rst,Cvr)

%H1 this function get the delta

Rdel=Rst*(sqrt(log(1+Cvr^2)));

end

rmu2 =

 

 304.7954

 

 

rdelta2 =

 

  52.1901

 

 

Cvr =

 

   0.1712

 

rmu2 =

 

 249.0042

 

 

rdelta2 =

 

  24.2745

 

 

Cvr =

 

   0.0975

 

rmu2 =

 

 239.8020

 

 

rdelta2 =

 

  18.2344

 

 

Cvr =

 

   0.0760

 

rmu2 =

 

 238.4973

 

 

rdelta2 =

 

  16.8698

 

 

Cvr =

 

   0.0707

 

rmu2 =

 

 237.8386

 

 

rdelta2 =

 

  16.4174

 

 

Cvr =

 

   0.0690

 

[N2 transfer] transfer N2 to gauss distribution

%DONE

function[Fn2,fn2,N2m,N2del]=getN2(N2m,N2del,N2st)

delta=0.78*N2del;

mu=N2m-0.577*delta;

Fn2=exp(-exp(-(N2st-mu)/delta));

fn2=1/delta*exp(-(N2st-mu)/delta)*Fn2;

z=norminv(Fn2,0,1);

z1=normpdf(z,0,1);

N2del=z1/fn2;

N2m=N2st-z*N2del;

end

Fn2 =

 

   0.5703

 

 

fn2 =

 

   0.0202

 

 

n2mu2 =

 

  66.5603

 

 

n2delta2 =

 

  19.4162

 

Fn2 =

 

   0.8801

 

 

fn2 =

 

   0.0074

 

 

n2mu2 =

 

  57.3282

 

 

n2delta2 =

 

  26.9336

 

Fn2 =

 

   0.9848

 

 

fn2 =

 

  7.1587e-04

 

 

n2mu2 =

 

  17.4598

 

 

n2delta2 =

 

  53.3693

 

Fn2 =

 

   0.9852

 

 

fn2 =

 

  3.5342e-04

 

 

n2mu2 =

 

 -62.2161

 

 

n2delta2 =

 

 106.0635

 

Fn2 =

 

   0.9701

 

 

fn2 =

 

  3.5625e-04

 

 

n2mu2 =

 

-179.5856

 

 

n2delta2 =

 

 190.5970

 

[getcos]

function[cosRtheta cosN1theta cosN2theta]=gettheta(Rdel,N1del,N2del)

%H1 this function get the direction cos

%first normalized

% syms R N1 N2;

% f=sym('R-N1-N2');

%subs(f,{'R','N1','N2'},{'(R-Rmu)/Rdelta','(N1-N1mu)/Rdelta','(N2-N2mu)/N2delta'});

pd1=1;

pd2=-1;

pd3=-1;

sum1=((pd1*Rdel)^2+(pd2*N1del)^2+(pd3*N2del)^2)^0.5;

%then get the cos

cosRtheta=(-pd1*Rdel)/sum1;

cosN1theta=(-pd2*N1del)/sum1;

cosN2theta=(-pd3*N2del)/sum1;

end

cosr =

 

  -0.9352

 

 

cosn1 =

 

   0.0663

 

 

cosn2 =

 

   0.3479

 

cosr =

 

  -0.6660

 

 

cosn1 =

 

   0.1015

 

 

cosn2 =

 

   0.7390

 

cosr =

 

  -0.3226

 

 

cosn1 =

 

   0.0655

 

 

cosn2 =

 

   0.9443

 

cosr =

 

  -0.1570

 

 

cosn1 =

 

   0.0344

 

 

cosn2 =

 

   0.9870

 

cosr =

 

  -0.0858

 

 

cosn1 =

 

   0.0193

 

 

cosn2 =

 

   0.9961

 

[loop] get loop variables

%DONE

functionbeta=getloopbeta(Rm,N1m,N2m,Rdel,N1del,N2del)

beta=(Rm-N1m-N2m)/(sqrt(Rdel^2+N1del^2+N2del^2));

end

 

function Rstar=getloopRstar(Rm,Rdel,Beta,costhetaR)

Rstar=Rm+Rdel*Beta*costhetaR;

end

 

functionN1star=getloopN1star(N1m,N1del,Beta,costhetaN1)

N1star=N1m+N1del*Beta*costhetaN1;

end

 

functionN2star=getloopN2star(N2m,N2del,Beta,costhetaN2)

N2star=N2m+N2del*Beta*costhetaN2;

end

beta =

 

   3.3192

 

 

rstar =

 

 142.7962

 

 

n1star =

 

  53.8142

 

 

n2star =

 

  88.9819

 

__________________________________________________________n

 

i =

 

    2

 

 

beta =

 

   3.8049

 

 

rstar =

 

 187.4883

 

 

n1star =

 

  54.4292

 

 

n2star =

 

 133.0591

 

__________________________________________________________n

 

i =

 

    3

 

 

beta =

 

   2.9962

 

 

rstar =

 

 222.1762

 

 

n1star =

 

  53.7257

 

 

n2star =

 

 168.4505

 

__________________________________________________________n

 

i =

 

    4

 

 

beta =

 

   2.3052

 

 

rstar =

 

 232.3925

 

 

n1star =

 

  53.2937

 

 

n2star =

 

 179.0989

 

__________________________________________________________n

 

i =

 

    5

 

 

beta =

 

   1.9046

 

 

rstar =

 

 235.1556

 

 

n1star =

 

  53.1363

 

 

n2star =

 

 182.0194

 

__________________________________________________________n

 

i =

 

    6

 


Published with MATLAB® R2013b

 




https://blog.sciencenet.cn/blog-866027-787171.html

上一篇:介绍一个数据处理软件
下一篇:利用蒙特卡洛法来求解可靠性
收藏 IP: 125.217.226.*| 热度|

1 袁贤讯

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-17 23:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部