wugang326 发表于 2007-4-17 14:40

一个蒙特卡洛程序,希望高人指点。

下面是我做的一个mcs程序,mcs直接抽样,运行应该没有问题。抽样到10000次,基本没有失效值,我觉得对数正态分布的抽样有点问题,如果抽样点不是接近0,那么exp函数就会得到无穷大的值,这样感觉失效的机会很小。
function mcs
syms i x s bb k
k=10000;
u=;%矩阵U第一列代表抗力R,第二列代表恒载G,第三列代表活载L
p=;%矩阵p的三列分别为R,G,L的标准差
i=1;
for i=1:k
    s=0;
    m=pi/(p(1,3)*sqrt(6));%m为极值I型当量正态化过程中的一个常数
    n=u(1,1)-0.5772/m;%n为极值I型当量正态化过程中的另一个常数
    a(i)=exp(normrnd(u(1,1),p(1,1)));%对数正态分布随机抽样
    b(i)=normrnd(u(1,2),p(1,2));%正态分布随机抽样
    x=rand(1);
    c(i)=u(1,3)-(log(-log(x)))/m;%极值I型分布随机抽样
    if a(i)-b(i)-c(i)<0
      s=s+1;
    end
      i=i+1;
end
bb=norminv(1-s/k)%可靠度指标
如何解决?能改进么,还是要改用重要度抽样?哪位有蒙特卡罗重要度抽样的matlab程序啊?,急啊!
我的邮箱:wugang326@163.com。QQ:66811820

[ 本帖最后由 wugang326 于 2007-4-17 14:43 编辑 ]
页: [1]
查看完整版本: 一个蒙特卡洛程序,希望高人指点。