哪位有蒙特卡罗重要度抽样的matlab程序啊??
最好是M文件,多谢!wugang326@163.com 太简单了,自己看一下,几行就能搞定! 这个重要度抽样我想就是你要考察的随机变量是什么分布或者近似分布,那么你生成该类的随机数,就能是 结果收敛的快些和精确些。
在期刊网上面看看Monte-carlo做数值积分的例子,也许能有启发 最常用的重要抽样就是改变抽样重心,即在MPP处(设计验算点)进行抽样。 重要度抽样的抽样函数,应该怎么选择,我觉得没有什么规律可循啊,你要改变抽样中心,这样会不会影响蒙特卡洛模拟的真实性呢?
希望大家能讨论一下,我总是觉得直接抽样才是最合理,最不影响蒙特卡洛真实性的方法啊! %蒙特卡罗直接抽样
function mcs_1
syms i x s mm k
mm=1000;
nn=mm^2;
s=0;
i=1;
u=;%矩阵U第一列代表抗力R,第二列代表恒载G,第三列代表活载L
p=;%矩阵p的三列分别为R,G,L的标准差
m=pi/(p(1,3)*sqrt(6));%m为极值I型当量正态化过程中的一个常数
n=u(1,1)-0.5772/m;%n为极值I型当量正态化过程中的另一个常数
uu=log(u(1,1)/sqrt(1+(p(1,1)/u(1,1))^2));
pp=sqrt(log(1+(p(1,1)/u(1,1))^2));
a=lognrnd(u(1,1),p(1,1),mm,mm);%对数正态分布随机抽样
b=normrnd(u(1,2),p(1,2),mm,mm);%正态分布随机抽样
c=norminv(rand(mm))*pp+uu*ones(mm);%极值I型分布随机抽样
for i=1:nn
if a(i)-b(i)-c(i)<0
s=s+1;
end
i=i+1;
end
bb=norminv(1-s/nn)%可靠度指标
disp(s)
我用的直接抽样,为什么一个失效点也找不到,应该是有解的,请大家看看那里应该修改啊? 在蒙特卡洛抽样的过程中,每个变量都满足自己的分布,所以肯定保证不了抽样点在失效面附近,也许会差的很远,如果一共n个变量,我只用蒙特卡洛法抽样出n-1个变量,剩下一个变量的抽样值满足极限状态函数等于0,也就是说我只保证n-1个变量的真正分布,剩下一个变量只是为了保证抽样点在失效面附近,这样的抽样合理么? 如果你需要找MPP点,还是用一次二阶矩法,直接得到你说的失效点,用Monte Carlo重要抽样精确计算失效概率,不知道你明白我的意思没? 重要抽样的方法有好多,可以好好看看! 不知道你的程序弄出来没有啊?我也在做蒙特卡罗法的MATLAB程序啊!大家交流一下啊!我的QQ79877021
回复 #10 wangyl216 的帖子
刚听说这个东西可以用来做随机微分方程的求解,关注这个问题 谁有用蒙特-卡罗求解微分方程的m程序,可否共享一下期待ing 你也要啊?有联系方式吗?要不你加我QQ啊!你用蒙特卡罗法做那个方面啊?
回复 #13 wangyl216 的帖子
可以哈我主要是听说可以用来做随机微分系统的仿真 ,所以想借用一下,对这方面的知识了解很少。
你的qq多少哈 我用这个比较简单啊!我就是对梁的可靠度进行分析啊!我也不知道你用于什么方面啊!我的QQ号是79877021
页:
[1]
2