Matlab概率模型论文,matlab概率统计实验

matlab概率统计实验9.1 实验(I):Galton钉板试验

9.1.1 实验与观察: Galton钉板模型和二项分布

1. 动画模拟Calton钉板试验

【    rand('seed',1), u=rand(1,6)  】

【    rand('seed',2),u=rand(1,6)  】

观察程序zxy9_1.m

【   clear,clf,     m=100;n=5;y0=2;      %设置参数。

ballnum=zeros(1,n+1);

p=0.5;q=1-p;

for i=n+1:-1:1             %创建钉子的坐标x,y 。

x(i,1)=0.5*(n-i+1);y(i,1)=(n-i+1)+y0;

for j=2:i

x(i,j)=x(i,1)+(j-1)*1;y(i,j)=y(i,1);

end

end

mm=moviein(m);        % 动画开始,模拟小球下落路径。

for i=1:m

s=rand(1,n);            %产生n个随机数。

xi=x(1,1);yi=y(1,1);k=1;l=1;    % 小球遇到第一个钉子。

for j=1:n

plot(x(1:n,:),y(1:n,:),'o',x(n+1,:),y(n+1,:),'.-'), % 画钉子的位置 。

axis([-2 n+2 0 y0+n+1]),hold on

k=k+1;                               % 小球下落一格 。

if s(j)>p

l=l+0;                                %小球左移 。

else

l=l+1;                                %小球右移 。

end

xt=x(k,l);yt=y(k,l);              %小球下落点的坐标。

h=plot([xi,xt],[yi,yt]);axis([-2 n+2 0 y0+n+1])      %画小球运动轨迹。

xi=xt;yi=yt;

end

ballnum(l)=ballnum(l)+1;                    %计数。

ballnum1=3*ballnum./m;

bar([0:n],ballnum1),axis([-2 n+2 0 y0+n+1])  %画各格子的频率 。

mm(i)=getframe;                  %存储动画数据。

hold off

end

movie(mm,1)                    %播放动画1次。     】

2. 用二项分布描述Galton钉板模型

【      X = binornd(5,0.5,1,10)       】

3.  数学期望和平均收益

【  n=5;p=0.5; m=5000;

rand('seed',5); R = binornd(n,p,1,m);   %模拟投球。

f=[5, 1, 0.2, 0.2, 1, 5];                        %奖品的价值向量。

s=[];

for k=1:n+1                                         %计算第0~n格奖品价值。

u=[];

u=find(R==(k-1));                  %计算落入第k-1格的小球下标,并存于向量u中。

s=[f(k)*length(u),s];               %计算相应的奖品价值,并存于向量s中。

end

mean_return=sum(s)/m           %计算一次抽奖的平均回报 。   】

{     mean_return =  0.7506               }

【    f=[5, 1, 0.2, 0.2, 1, 5]; x=[0:1:n]; pu=binopdf(x,n,p);EF=sum(f.*pu)   】

9.1.2 应用、思考和练习

1. 二项分布的应用模型

◆电力供应问题 。

提示:

【       x=linspace(90,160,10);  r = binornd(200,0.6,1,960);  hist(r,x)  ;

[n,x]=hist(r,x);             】

◆ 废品问题。

下面的程序可作为参考 。

【   clear,clf ,n=50;r=linspace(0,1,n);s=linspace(0,10,n);

[R,S]=meshgrid(r,s); x=[0 1 2 3 4 5];p = binopdf(x,5,0.5);

for k=1:n

f=[S(k,l) S(k,l)*R(k,l) S(k,l)*R(k,l)^2  S(k,l)*R(k,l)^2 S(k,l)*R(k,l) S(k,l)];

for l=1:n

z(k,l)=sum(f.*p);

if z(k,l)>=1  z(k,l)=NaN;  end

end

end

contour(R,S,z)              】

3. 单服务台定长服务时间排队系统的计算机模拟

4.  随机变量的模拟:逆概率法

308ac43322207860964f4f85c5cfff1f.png

图9.4    逆概率法模拟随机数原理。

【   clf

mu=0;sigma=1;a=mu-4*sigma;b=mu+4*sigma;

t=linspace(a,b,30);

f1=normcdf(t,mu,sigma);

for i=1:3

hold on

u=rand(1);

f=norminv(u,mu,sigma);

plot(t,f1,[0 0],[0,b]),hold on,

plot(0,u,'rO'),plot([0,f],[u,u]);plot([f,f],[u,0]);

plot(f,0,'rO'),   axis([-4 4 0 1])

end     】

9.2  实验(Ⅱ) :热轧机的调整

9.2.1实验与观察: 控制粗轧的浪费

1. 用正态分布描述热轧机模型

2.  调整额定长度使浪费最小

.观察程序

zxy9_2.m

【    clf,clear,  m=20;l=3;mu=3.5;sigma=0.3; mu1=3.5;sigma1=0.9;

a=0; b=max([mu+4*sigma,mu1+4*sigma1]);     %设定坐标的范围。

subplot(2,2,1),

for k=1:m

rand('seed',1), x=normrnd(mu,sigma);

plot([0,x],[k,k],'linewidth',5),hold on, axis([0 mu+4*0.6 -2 m+5])

end

plot([l,l],[-2,m+5],'r-');hold on,axis([a b -2 m+5])

subplot(2,2,3),

t=linspace(a,b,50);f=normpdf(t,mu,sigma);

y0=max(f)+0.1;plot(t,f),hold on,axis([a b 0 y0]),

plot([l,l],[0,y0],'r-',[mu,mu],[0,y0],'r:');hold on

t=linspace(a,b,30);f=normpdf(t,mu,sigma);plot(t,f)

subplot(2,2,2)

for k=1:m

rand('seed',1),x=normrnd(mu1,sigma1);

plot([0,x],[k,k],'linewidth',5),hold on,axis([a b -2 m+5])

end

plot([l,l],[-2,m+5],'r-');hold on

subplot(2,2,4),

t=linspace(a,b,50);f=normpdf(t,mu1,sigma1);y0=max(f)+0.1;

plot(t,f),hold on,axis([a b 0 y0])

plot([l,l],[0,y0],'r-',[mu1,mu1],[0,y0],'r:');hold on               】

下面是观察与实验程序zxy9_3.m,对照上一节给出的算法,这一程序也是不难理解的。

zxy9_3.m

【   clf,clear

l=2;sigma=0.2;

n=10000;m=50;a=2.2;b=3;

mu=linspace(a,b,m);

for k=1:m

x=normrnd(mu(k),sigma,1,n);  %模拟轧钢。

k_chenpin=find(x>=l);             %求可轧制的成品材的下标。

k_feipin=find(x

w_chenpin=x(k_chenpin)-l;     %计算浪费量。

w_feipin=x(k_feipin);             %计算浪费量。

if length(k_chenpin)==0

waste(k)=NaN;

else

waste(k)=(sum(w_chenpin)+sum(w_feipin))/length(k_chenpin);

end

end

[wmin,i]=min(waste);       %求最小浪费量及其下标。

[mu(i) wmin]

plot(mu,waste,'.-',mu(i),wmin,'ro'),set(gca,'fontsize',15)

text(mu(i),wmin,['\bullet\leftarrow The Min Value is ',num2str(wmin),' at \it{mu}= ',num2str(mu(i))]);  】

9.2.2应用、思考与练习

1. 随机优化:确定热轧机的额定长度

2. 二维正态分布: 如何制定胖和瘦的标准?

题的思路,这种思路在实践中经常被采用,真正要确定正常体重标准可能要复杂得多。

◆。

【    clear,clf

n=1000;x=normrnd(170,4.5,1,n);

y=0.36*x+normrnd(0,7,1,n);

a=min(x);b=max(x);c=min(y);d=max(y);xx=linspace(a,b,20);

yy=0.36*xx;plot(x,y,'ko'),hold on,

plot(xx,yy,'k-','linewidth',5),grid,

axis([a b c d]),axis('equal'),

xlabel('身高X');ylabel('体重Y');  】

◆ (2)观察

程序zxy9_4.m (画图9.8)

【   clear,clf,n=1000;m=15;x=normrnd(170,4.5,1,n);

y=0.36*x+normrnd(0,7,1,n);a=min(x);b=max(x);c=min(y);d=max(y);

h1=(b-a)/m;h2=(d-c)/m;

xx=linspace(a-h1,b+h1,m);yy=linspace(c-h2,d+h2,m);

[X,Y]=meshgrid(xx,yy);

for k=1:m             %计算频数。

for l=1:m

j=find(x>=(X(k,l)-h1)&x<=(X(k,l)+h1));

h=find(y(j)>=(Y(k,l)-h2)&y(j)<=(Y(k,l)+h2));

z(k,l)=length(h)/n;

end

end

mu=[170 0.36*170];              %计算二维正态分布密度。

C=[4.5^2 0.36*4.5^2; 0.36*4.5^2, (0.36*4.5)^2+7^2];

detC=det(C);

for k=1:m

for l=1:m

u=[X(k,l),Y(k,l)]'-mu';s=2*pi*sqrt(detC);

z1(k,l)=s^-1*exp((-0.5)*u'*C^-1*u);

end

end

subplot(2,2,1),surf(X,Y,z),axis([a b c d 0 0.15]),

set(gca,'fontsize',15);

subplot(2,2,2),contour(X,Y,z),axis([a b c d ]),axis('equal'),

subplot(2,2,3),surf(X,Y,z1),axis([a b c d 0 0.005]),

subplot(2,2,4),contour(X,Y,z1),axis([a b c d ]),axis('equal')】

3.用线性回归方法确定正常体重标准

观察:

◆(1)参考程序 zxy9_4.m中的模拟部分,。

【   alpha=0.01; polytool(x',y',1,alpha)    】

◆(3) 用 多元线性回归指令regress做体重预测。

◆对模拟的100对身高体重数据,运行下面的程序,了解指令regress 的用法。

【  [b,bint,r,rint,stats] = regress(y',[ones(100,1) x']);

b,bint,stats

rcoplot(r,rint),set(gca,'fontsize',15)  】

9.3实验(Ⅲ)参数估计和假设检验

9.3.1实验与观察: 极大似然估计

1.极大似然估计原理: 如何决定废品率?

观察

◆(1)

【       clear,p=0.04; n=10;     %设定产品的档次,抽样次数。

for k=1:n               %抽样n次。

r(k)=rand(1,1);   %产生随机数。

if r(k)<=p

x(k)=1;           %抽样得到废品。

elseif r(k)>p

x(k)=0;            %抽样得到正品 。

end

end

I=[1:n];[I;x]  】

◆ (2)

2.实验观察的参考程序

实验观察的主要程序为zxy9_5.m,其源代码如下,该程序是不难读懂的。

zxy9_5.m

【   clear,clf,n=50;

p=0.04;

rand('seed',1),r=rand(1,n);

k=+find(r<=p);

x=zeros(1,n);

x(k)=ones(1,length(k));

p_estimate=sum(x)/n,

t=[0.01 0.02 0.03 0.04 0.05 0.06];

%t=linspace(0.01,0.5,40)

Lt=t.^sum(x).*(1-t).^(n-sum(x));

%lnLt=sum(x)*log(t)+(n-sum(x))*log(1-t);

set(gca,'fontsize',16),

plot(t,Lt,''),

[Lmax,I]=max(Lt);

tmax=t(I);

text(t(I),Lmax,['\fontsize{16}\leftarrow\it Lmax=' ,num2str(Lmax)])

text(t(I),0.95*Lmax,['\fontsize{16}\it{ at  p}= ',num2str(tmax)])

xlabel('p','fontsize',16);ylabel('L(p)','fontsize',16);  】

9.3.2 应用、思考与练习

1. 用Matlab符号演算求解极大似然估计

◆ 练习:用Matlab符号演算指令求解9.3.1节中废品问题的似然方程获得极大似然估计。

【     syms p                %未知参数为p,所以作为符号变量处理,用syms指令说明。

clear,clf,n=50;               %产生50个样本。

p=0.04;                          %设定真实参数。

x=zeros(1,n);                  %令x全为0   。

rand('seed',1),r=rand(1,n);

k=+find(r<=p);               %找出废品的下标。

x(k)=ones(1,length(k));   %在废品下标处改x为1;x为50个样本观察值。

%观察似然函数和似然方程的一般表达式。

L=sym('p^sx*(1-p)^(n-sx)')     %正确写出似然函数,L是符号p的函数。

likely_equ=diff(L,'p')               %对p进行符号求导,得到似然方程。

%观察含具体数值的似然函数和似然方程

sx=sum(x), p='p';           %代入sx的具体数值。

Lp=subs(L)                    %将具体的数值代入似然函数中 。

likely_equ=diff(Lp,'p')    %求似然方程 。          】

【   %求似然方程的符号解,得到极大似然估计

s=solve('p^sx*sx/p*(1-p)^(n-sx)-p^sx*(1-p)^(n-sx)*(n-sx)/(1-p)=0','p')

sx,n            %看看具体的数值。

sp=subs(s)  %对已获得的样本,观察极大似然估计的具体数值。              】

2. 水库入库径流的分布估计

7月上旬径流数据

356         258         222         208         163         342         501         501         782         225         630        2305

931         485        503         501          422         101        280       1807         922         390         466          211

922        444         233         370          788          802        219         524         470       1097       1160         702

566        222         630

7月中旬径流数据

98        262         117        1687         291        1318         292         716         254          519         270         273

275         274         374        147          345          70          940         440        2839         141         699         324

900         311         870        596          187      2231          111         949          303         888         328         459

370       1360       1320

7月下旬径流数据

69       133         392         596        4518        1051         336         867          541        1733          149       266

324     1365         891         918        1751         219          513         438        1033        1217        1290       247        2360     1023         453       1622         1272      1383        1217      1530         1724          703          299      638

548    1200       1220

zxy9_6.m

【     clear,clf,

Q=[ 98      262         117        1687         291        1318         292         716         254        519         270         273         275         274         374        147          345          70          940         440        2839         141         699         324         900         311         870         596         187        2231         111         949         303         888         328         459         370        1360      1320];

m=50;

as=linspace(0.6561, 2.2477,m);

bs=linspace(215.4687, 637.4421,m);

[A B]=meshgrid(as,bs);

for i=1:m

for j=1:m

ax=A(i,j);bx=B(i,j);

y(i,j) = sum(log(gampdf(Q,ax,bx)));

end

end

[y0,s]=max(y);     [y00,s0]=max(y0);

a_est=A(s0,s(s0));b_est=B(s0,s(s0));     meshc(A,B,y),hold on

plot3(a_est,b_est,y00,'.','markersize',25);

text(a_est,b_est,y00+0.06*abs(y00),['(a_e_s_t,b_e_s_t,L_m_a_x)=']);

text(a_est,b_est,y00+0.03*abs(y00),['(',num2str(a_est),',',num2str(b_est),',',num2str(y00),')'])

figure(2)

[h,n0]=hist(Q,5);     h0=max(h);     a=min(Q)-100;b=max(Q);

x=linspace(a,b,30);     hist(Q,5);     hold on

y = gampdf(x,a_est,b_est);

plot(x,h0*y/max(y),'r-','linewidth',5);       】

3. 数学建模竞赛: 零件的参数设计

zxy9_7.m

【    clear,clf, n=1000; A=0.01/3;B=0.05/3;C=0.1/3;

%x=[0.075,0.375,0.125,0.1198,1.252,12.5,0.77];%A=[B B B C C B B];

x=[0.1 0.3 0.1 0.1 1.5 16 0.75];   %设置标定值。

A=[B C C C C C B];                    %设置容差。

X1=normrnd(x(1),A(1)*x(1),n,1);  %模拟零件参数。

X2=normrnd(x(2),A(2)*x(2),n,1);X3=normrnd(x(3),A(3)*x(3),n,1);

X4=normrnd(x(4),A(4)*x(4),n,1);X5=normrnd(x(5),A(5)*x(5),n,1);

X6=normrnd(x(6),A(6)*x(6),n,1);X7=normrnd(x(7),A(7)*x(7),n,1);

Y=z9_5fun(X1,X2,X3,X4,X5,X6,X7);    %模拟y的样本。

k=find(imag(Y)==0);Y1=Y(k);          %如果产生了复数,剔除复数。

histfit(Y1)                                        %直方图和正态密度拟合。

dh=0.001;                                         %求数值导数。

for i=1:7

for j=1:7

xx(:,j)=x(j)*ones(2,1);

end

xx(:,i)=linspace(x(i),x(i)+dh,2)';

F(:,i)=z9_5fun(xx(:,1),xx(:,2),xx(:,3),xx(:,4),xx(:,5),xx(:,6),xx(:,7));

g(:,i)=diff(F(:,i),1)/dh;                 %求数值导数。

end

mu=F(1,1),EY=mean(Y1),         %均值对比。

R=(A.*x).^2;

sigma=sqrt(sum((g.^2).*R)),DY=std(Y1), %均方差值对比.

[h,p,ci]=ttest(Y1,mu,0.01,0)                    %均值的t-检验 。   】

zxy9_6fun.m(计算函数的子程序)

【      function y=zxy9_5fun(x1,x2,x3,x4,x5,x6,x7)

y1=174.42*(x1./x5).*(x3./(x2-x1)).^0.85;

y2=(1-0.36*(x4./x2).^(-0.56)).^(1.5) ;

y3=(1-2.62*y2.*(x4./x2).^1.16)./(x6.*x7);

y=y1.*sqrt(y3);

200多个MATLAB经典教程和MATLAB论文请查看:matlab教程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值