||
用MATLAB编写MCMC算法产生一条平稳分布为指定分布的马尔可夫链:
function [mcs,efp]=mhs(f,p0,sigma,rt)
k1=1;k2=0;
gser=zeros(rt,1);gser(1)=p0;
while (k1 < rt);
p1=p0+sigma*randn;
q1=feval(f,p0);
q0=feval(f,p1);
r=q0/q1;
alpha=min(1,r);
urand=rand(1);
if urand < alpha;
gser(k1+1)=p1;p0=p1;k1=k1+1;
end
k2=k2+1;
end
mcs=gser;efp=rt/k2;
f可以用M文件定义,也可以用匿名函数定义。
Powered by Discuz! X2.5 © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 ) 论坛法律顾问:王兆丰
GMT+8, 2025-8-15 20:12 , Processed in 0.273876 second(s), 28 queries .