全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
6032 29
2010-09-20
function y=QQ(L,r,k,UCL,LCL)
d=(UCL-LCL)/k
m1=0;
for i=-k/2+1:1:k/2
m1=m1+1;
k1=1;
m=k/2;
for j=-m+1:1:m
temp=((j*d)-(1-r)*(i-0.5)*d)/(r);
T1=normcdf(temp,0,1);
temp=((j-1)*d-(1-r)*(i-0.5)*d)/(r);
T2=normcdf(temp,0,1);
R(m1,k1)=T1-T2;
k1=k1+1;
end;
end;
PM=0*ones(1,2*m);
PM(k/2)=1;
SS=PM*inv(eye(2*m)-R)*ones(2*m,1);
y=SS;

我定义了function y=QQ(L,r,k,UCL,LCL)这个函数,但是运行时最终结果和L的值无关,这是用MATLAB解决马尔科夫链转移概率问题,由于对MATLAB了解较少,所以一直没搞清楚,希望有这方面的高手给指点一下,我这个程序问题出在哪了?万分感谢!!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-9-22 15:40:48
已经给了UCL,LCL,可以不用给L.

假设ARL=500,则由Genetic Algorithms
可得optimal parameters:(r=0.13,L=2.88).
以上数据,带入你的 QQ function
得 ARL = 499.1488

%%%%%%%%%%%%
r=0.13;
L=2.88;
UCL= L*sqrt(r/(2-r)); %  0.7593524
LCL=-L*sqrt(r/(2-r)); %- 0.7593524
k=50;
ARL=QQ(r,k,UCL,LCL)

%%%%%%%%%%%%%%
function ARL=QQ(r,k,UCL,LCL)
d=(UCL-LCL)/k;
m1=0;
for i=-k/2+1:1:k/2
  m1=m1+1;
  k1=1;
  m=k/2;
   for j=-m+1:1:m
     temp=((j*d)-(1-r)*(i-0.5)*d)/(r);
     T1=normcdf(temp,0,1);
     temp=((j-1)*d-(1-r)*(i-0.5)*d)/(r);
     T2=normcdf(temp,0,1);
     R(m1,k1)=T1-T2;
     k1=k1+1;
  end;
end;
PM=0*ones(1,2*m);
PM(k/2)=1;
ARL=PM*inv(eye(2*m)-R)*ones(2*m,1);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-23 16:12:07
谢谢您的指点,您后面写的是相关程序吗?我运行ARL=QQ(0.13,50,0.759352,-0.753524),怎么显示LCl这个变量不存在呢?因为对MATLAB了解比较少,可能问题有点幼稚,另外,我还想请问一下,如果由已知链长ARL求解控制限L,也是基于马尔科夫链求解吗?使用这个程序可以计算吗?我要解决的问题是用马尔科夫链求解统计过程控制中的控制图控制界限问题,只是看了一些相关方面的论文,只说了结果,现在有点糊涂,这个程序是用来计算ARl还是我可以假定一个ARL的值求解控制限,您可以再给指点一下嘛?谢谢啦!!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-23 20:15:02
Q1:
ARL=QQ(0.13,50,0.759352,-0.753524),怎么显示LCl?

QQ.m
请换成2楼我改的这个:

%%%%%%%%%%%%%%
function ARL=QQ(r,k,UCL,LCL)
d=(UCL-LCL)/k;
m1=0;
for i=-k/2+1:1:k/2
  m1=m1+1;
  k1=1;
  m=k/2;
   for j=-m+1:1:m
     temp=((j*d)-(1-r)*(i-0.5)*d)/(r);
     T1=normcdf(temp,0,1);
     temp=((j-1)*d-(1-r)*(i-0.5)*d)/(r);
     T2=normcdf(temp,0,1);
     R(m1,k1)=T1-T2;
     k1=k1+1;
  end;
end;
PM=0*ones(1,2*m);
PM(k/2)=1;
ARL=PM*inv(eye(2*m)-R)*ones(2*m,1);
%%%%%%%%%%%%%

则ARL=QQ(0.13,50,0.759352,-0.753524)
可得 ARL = 483.9766
QQ.zip
大小:(326 Bytes)

 马上下载

本附件包括:

  • QQ.m



Q2:
你应该很清楚你定义的function QQ
是应用markov chain来求解ARL
当然不能求 L

Q3:
ARL的计算方法大致有三种方法:

马氏链法,积分方程法,和随机模拟法.


你是采马氏链法


而 R package "spc"


steady-state ARL
是采integral equation.


R package "spc"
有很多function可用


也值得你参考看看

   
spc.pdf
大小:(240.6 KB)

 马上下载



R package "spc" provides
xewma.ad   steady-state ARLs of EWMA charts
xewma.arl (zero-state) ARLs of EWMA charts
xewma.crit critical values of EWMA charts
底下是在R运行结果:
###steady state
xewma.ad(l=0.13,c=2.88,mu1=0,mu0=0,zr=0,sided="two",limits="fix",r=40)
#498.8069

xewma.crit(l=0.13,L0=500,mu0=0,zr=0,hs=0,sided="two",limits="fix",r=40)
#2.876541  

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-24 16:50:09
呜呜,matlab好难啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-27 23:11:27
凑个热闹,你说的函数声明是:
function y=QQ(L,r,k,UCL,LCL)
而在程序运行时,竟然现实变量LCI没有定义,换成小写;
lcl在程序内部有部分被定义为lci。
解决的方法是在edit qq 打开程序文本,用查找和替换,将程序里的lci 替换为lcl。

语法问题。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群