x(i)=x(i-1); %对数据排序 x(i-1)=a; end end endx % 数据按从小到大重新排序后的新数据 for i=1:n; p(i)=(i-0.5)/n;
u(i)=norminv(p(i)); %计算正态总体分位数 end
r1=0;r2=0;r3=0; for i=1:n
x1=mean(x);u1=mean(u); r1=r1+(x(i)-x1)*(u(i)-u1);
r2=r2+(x(i)-x1)^2;r3=r3+(u(i)-u1)^2;
end
plot(x,u,'*') % 缺图形,做出QQ图形 r=r1/(sqrt(r2)*sqrt(r3))
【结果分析与讨论】
在Matlab命令窗口中输入:
>> x=[56 23 59 74 49 43 39 51 37 61 43 51 61 43 51 61 99 23 56 49 49 75 20]; >> zhengtaijianyan(x) 得到的结果为: r = 0.96 ans =
0.96
相应的Q-Q图如下图所示:
从相关系数和Q-Q图可以看出(uix(i))的线性很强,也即认为样本来自正态分布总体。 评价:Q-Q图检验相对于其它检验结果更为直观,但一般要求样本容量n较大,样本很小时,就是来自正态总体的样本,Q-Q图的直线性也很不稳定。
实验二 连分式逼近法求标准正态分布分布函数
【实验目的】
熟悉运用计算机软件,编写计算程序,掌握用连分式逼近法求标准正态分布分布函数方法。
【实验内容】
1.运用一种软件语言,并用该语言编写算法。 2.用连分式逼近法求标准正态分布分布函数。
【实验原理与步骤】
① 根据正态分布函数连分式的近似展开式将正态分布函数展开;
② 根据连分式逼近算法对展开式进行逼近近似; 【实验结果】
实验程序:
function u1=zhengtaifenbu(x,n) fy=1/(sqrt(2*pi))*exp(-(x.^2/2)); if (0<=x<=3)
u1=(-1)^n*n*x.^2/(2*n+1); % 相当于Un % q1=2*k+1; % 相当于Qn
for k=n:-1:2;
u1=(-1)^(k-1)*(k-1)*x.^2/(2*(k-1)+1+u1); % 相当于U(k-1) % q1=(2*(k-1)+1)+(-1)^k*k*x^2/q1; % 相当于Q(k-1) end
u1=fy*x./(1+u1); u1=1/2+u1; % q1=1-x^2/q1; % q1=1/2+fy.*x./q1 else
u1=n/x; % q1=x; for k=n:-1:2; u1=(k-1)/(x+u1); % q1=x+k/q1; end
u1=(-1)*fy/(x+u1); u1=1+u1; % q1=x+1/q1; % q1=1+(-1)*fy/q1 end normcdf(x)
【结果分析与讨论】
在Matlab命令窗口中输入:
>> x=[-0.24 -0.58 -0.85 0 0.67 0.69 0.70]; >> zhengtaifenbu(x,3) 输出结果为: ans =
0.4052 0.2810 0.1977 0.5000 0.7486 0.7549 0.7580
输出的结果与正态分布表对照,在有效小数范围内是相等,可见该种方法可行有效。
实验三 二分法求Beta分布的分位数
【实验目的】
熟悉运用计算机软件,编写计算程序,掌握二分法求Beta分布的分位数方法。 【实验内容】
1.运用一种软件语言,并用该语言编写算法。
2.二分法求Beta分布的分位数。 【实验原理与步骤】
实验程序为:
function l=erfen(a1,b1,tol) h=a1; q=b1; fh=fun(h); fq=fun(q);
if (fh*fq>=0)
error('a or b is an error'); return end;
while(q-h>tol) x0=(h+q)./2; fx0=fun(x0); if(fx0==0) l=x0; return; end if(fh.*fx0<0) q=x0; fq=fun(x0); end; if(fq*fx0<0) h=x0; fh=fun(x0); end end l=(q+h)./2;
其中调用的fun函数为: function y=fun(x) y=betacdf(x,0.5,0.5)-1/3;
【结果分析与讨论】
在Matlab命令窗口中输入:
y=erfen(0,1,0.0001)
输出结果为:
q = 0.2500
实验五 均匀随机数检验
【实验目的】
熟悉运用计算机软件,编写计算程序,掌握随机数的产生和检验方法。 【实验内容】
1.运用一种软件语言,并用该语言编写算法。 2. 随机数的产生和检验。 【实验方法与步骤】
① 设原假设H0:r1,r2,,rn是均匀总体的简单样本。
② 设[0,1)区间可分为n个小区间,{rj}落入第i个小区间[(i1)/m,i/m]的频数为
mni,选取统计量Vm/n(nin/m)2,若V1/2(m1),则接受原假设,
i12否则拒绝。
【实验结果】
实验程序:
function R=rand(x0,n) %产生(0,1)上的随机数 m=2^31;a=7^5; b=f(x(m/a)); c=mod(m,a); x(1)=a*mod(x0,m); for i=2:n
k0=f(a*x(i-1)/m); k1=f(x(i-1)/b); if k0==k1
x(i)=a*mod(x(i-1),b)-k1*c+m; end R=x/m; end
function y=kafang(R,m,n) %对(0,1)上产生的随机数进行卡方检验 v=0; for k=1:m a(k)=0; end for i=1:n for j=1:m
if((j-1)/m)<=R(i)&(R(i)for b=1:mv=v+(a(b)-n/m)^2; end v=m*v/n; y=v;
【结果分析与讨论】
在Matlab命令窗口中输入:
>> round(1,1000) >> kafang(R,1200,1000) 输出结果为: y=198
讨论:由于198<232.9118,则落入了接受域,认为r1,r2,,rn来自均匀简单样本。
实验六 随机投针试验计算pi的近似值
【实验目的】
熟悉运用计算机软件,编写计算程序,掌握值的计算方法。 【实验内容】
1.运用一种软件语言,并用该语言编写算法。 2.用随机投针试验计算pi的近似值。 【实验方法与步骤】
① 产生随机数对{xi,yi},其中x~U(0,a/2),~U(0,); ② xil/2sin平行相交;
ˆ2lN/aM,pP{xlsin/2}2l/a。 ③ 【实验结果】
实验程序:
function y=touzhen(a,l,n) m=0; for i=1:n
x(i)=unifrnd(0,a/2); z(i)=unifrnd(0,pi); end for i=1:n
if(x(i)<=(l*sin(z(i)/2))) m=m+1; end end
y=2*l*n/(a*m);
【结果分析与讨论】
在命令窗口中输入: >> touzhen(4,10,100000) 输出结果为: ans=
3.158
评价:虽然该算法原理简单,可要得到到较为精确的值需要大量的计算,并且收敛速度太慢。
实验七 单服务台排队系统或库存系统模拟
【实验目的】
熟悉运用计算机软件,编写计算程序,掌握单服务台排队系统或库存系统模拟方法。 【实验内容】
1.运用一种软件语言,并用该语言编写算法。
2. 单服务台排队系统或库存系统模拟方法。
【实验方法与步骤】
根据:顾客到达分布→顾客等待→接受服务→顾客离开过程,对系统进行模拟。 【实验结果】
试验程序为:
function y=dan(n,e1,e2) for i=1:n
t(i)=exprnd(e1); t(i)=exprand(e2); end b=0;es=0; for i=1:n b=b+t(i); if(b>480) n=i-1); break end end for i=1:n x(i)=0; for i=1:i
x(i)=x(i)+t(j); end end
c(1)=x(1)+s(1); d(1)=0; for i=2:n
if(c(i-1)<=x(i)) d(i)=0; c(i)=x(i)+s(i); end if x(i-1)>x(i) d(i)=c(i-1)-x(i); c(i)=d(i)+x(i)+s(i); end end ed=mean(d); for i=1:n m(i)=0; end for i=2:n
if 0end for i=3:n for j=1:nif c(i-2)