X2分布t分布和f分布地性质及近似计算.docx
- 文档编号:24249364
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:19
- 大小:17.29KB
X2分布t分布和f分布地性质及近似计算.docx
《X2分布t分布和f分布地性质及近似计算.docx》由会员分享,可在线阅读,更多相关《X2分布t分布和f分布地性质及近似计算.docx(19页珍藏版)》请在冰豆网上搜索。
X2分布t分布和f分布地性质及近似计算
以下为三个分布的动画演示程序,直接运行:
functiondandn(action)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 《X~2分布、t分布和f分布的性质及近似计算》
%
% 制作人:
幸玮石岩顾秋容
%AllRightsReserved
% 2008.12
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%无输入参数时进行初始程序,否则调界面参数
ifnargin<1,
action='initialize';
else
%看是哪种分布
data=get(gco,'UserData');
pdflabel=data(4);
%图形显示参数,调试时用
switchpdflabel
case1
xstart=0;%x轴起始点
width=120;%x轴范围
xdis=30;%x轴刻度间距
lenth=0.24;%y轴范围
ydis=0.03;%y轴刻度间距
speed=0.6;%动画演进速率
case2
width=6;
xdis=3;
lenth=0.42;
ydis=0.05;
speed=0.5;
case3
width=2;
xdis=0.5;
lenth=4;
ydis=0.4;
speed=0.8;
end
end
%初始化模块
ifstrcmp(action,'initialize')
%数据初始化
%分布函数选择
pdflabel=0;
d=inputdlg({'输入分布函数类型:
'},'选择分布函数',1,{'x2'});
ifstrcmp(d,'x2')
pdflabel=1;
elseifstrcmp(d,'t')
pdflabel=2;
elseifstrcmp(d,'f')
pdflabel=3;
end
%不符合的输入报错
ifpdflabel==0
errordlg('分布函数只能选择x2,t与f')
return
end
%整体用户界面建立,图形显示窗口嵌入
figNumber=figure(...
'Name','ChangingoftheX~2destributionfunction',...
'NumberTitle','off',...
'Visible','off');
axes(...
'Units','normalized',...
'Visible','off',...
'Position',[0.060.0650.700.9]);
%显示初始现实画面
switchpdflabel
case1
%初始显示参数
xstart=0;%x轴起始点
width=120;%x轴范围
xdis=30;%x轴刻度间距
lenth=0.24;%y轴范围
ydis=0.03;%y轴刻度间距
%画背景图
plot([xstartxstart+width],[lenthlenth],'b');
holdon
plot([xstartxstart+width],[lenthlenth],'r');
plot([xstartxstart+width],[lenthlenth],'black');
legend('X~2分布','正态分布');
axis([xstartxstart+width0lenth]);
gridon
set(gca,'XTick',xstart:
xdis:
xstart+width);
set(gca,'YTick',0:
ydis:
lenth);
holdoff
%分布函数动画初始参数
m=0;
n=1;
case2
width=6;
xdis=3;
lenth=0.42;
ydis=0.05;
plot([-width-widthwidth],[0lenthlenth],'b');
holdon
plot([-width-widthwidth],[0lenthlenth],'r--');
plot([-width-widthwidth],[0lenthlenth],'black');
legend('T分布','正态分布');
gridon
axis([-widthwidth0lenth]);
set(gca,'XTick',-width:
xdis:
width);
set(gca,'YTick',0:
ydis:
lenth);
holdoff
m=0;
n=2;
otherwise
width=2;
xdis=0.5;
lenth=4;
ydis=0.4;
plot(width,0,'b');
holdon
plot(width,0,'r');
legend('f分布','正态分布');
axis([0width0lenth]);
gridon
set(gca,'XTick',0:
xdis:
width);
set(gca,'YTick',0:
ydis:
lenth);
holdoff
%f分布输入n
n=inputdlg({'输入n的值:
'},'获取n',1,{'5'});
n=str2double(n{1});
ifn<=4
errordlg('要使正态逼近式成立n必须大于4!
')
return
end
m=1;
end
%按钮显示位置
top=0.95;
left=0.80;
btnWid=0.15;
btnHt=0.08;
spacing=0.02;
%“Start”按钮
btnNumber=1;
labelStr='Start';
callbackStr='dandn(''start'')';
%显示按钮
btnPos=[lefttop-btnHtbtnWidbtnHt];
uicontrol(...
'Style','pushbutton',...
'Units','normalized',...
'Position',btnPos,...
'String',labelStr,...
'Callback',callbackStr,...
'UserData',[btnNumbermnpdflabel]);%调用时的句柄参数传递
%关闭按钮
yPos=top-(btnHt+spacing);
uicontrol(...
'Style','push',...
'Units','normalized',...
'Position',[leftyPos-btnHtbtnWidbtnHt],...
'String','Close',...
'Callback','close(gcf)');
set(figNumber,'Visible','on');%显示初始图像
%“Start”按钮执行程序
elseifstrcmp(action,'start')
%参数初始化
data=get(gco,'UserData');
method=data
(1);
m=data
(2);
n=data(3);
%“Stop”按钮设置,点击开始后替换“Start”按钮
btnNumber=2;
labelStr='Stop';
callbackStr='dandn(''stop'')';
top=0.95;
left=0.80;
btnWid=0.15;
btnHt=0.08;
btnPos=[lefttop-btnHtbtnWidbtnHt];
stophld=uicontrol(...
'Style','pushbutton',...
'Units','normalized',...
'Position',btnPos,...
'String',labelStr,...
'Callback',callbackStr,...
'UserData',[btnNumbermnpdflabel]);
%画图程序
switchpdflabel
case1
while(method==1)%当未点击“Stop”则继续执行
%画x2分布密度函数
a=n/2;b=2;
x=xstart:
0.1:
xstart+width;y=gampdf(x,a,b);
plot(x,y,'b','EraseMode','normal');
holdon
%画近似正太分布密度函数
y1=normpdf(x,n,(2*n)^0.5);
plot(x,y1,'r-');
%图形参数调节
axis([xstartxstart+width0lenth]);
set(gca,'XTick',xstart:
xdis:
xstart+width);
set(gca,'YTick',0:
ydis:
lenth);
gridon;
legend('X~2分布','正态分布');
%显示当前n
temp=num2str(floor(n));
str=strcat('n=',temp);
text(92,0.2,str);
%显示当前最大间距
dis=num2str(max(abs(y-y1)));
str=strcat('dis=',dis);
text(92,0.187,str);
%动画指令
drawnow;
holdoff;
n=n+speed;
%看stop是否按下
data=get(gco,'UserData');
method=data
(1);
%更新传递参数
set(stophld,'Userdata',[btnNumbermnpdflabel]);
end
case2
while(method==1)
%画t分布密度函数
x=-width:
0.1:
width;y=tpdf(x,n);
plot(x,y,'EraseMode','normal');
holdon
%画近似正太分布密度函数
y1=normpdf(x,0,(n/(n-2))^0.5);
plot(x,y1,'r--');
%图形参数调节
axis([-widthwidth0lenth]);
set(gca,'XTick',-width:
xdis:
width);
set(gca,'YTick',0:
ydis:
lenth);
gridon;
legend('T分布','正态分布');
%显示当前n
temp=num2str(floor(n));
z=strcat('n=',temp);
text(3.3,0.335,z);
%显示当前最大间距
dis=num2str(max(abs(y-y1)));
str=strcat('dis=',dis);
text(3.3,0.315,str);
%动画指令
drawnow;
holdoff;
n=n+speed;
%看stop是否按下
data=get(gco,'UserData');
method=data
(1);
%更新传递参数
set(stophld,'Userdata',[btnNumbermnpdflabel]);
end
otherwise
while(method==1)
%画f分布密度函数
x=0:
0.01:
width;y=fpdf(x,m,n);
plot(x,y,'EraseMode','normal');
holdon
%画近似正太分布密度函数
y1=normpdf(x,n/(n-2),(2*n^2*(m+n-2)/m/(n-2)^2/(n-4))^0.5);
plot(x,y1,'r');
%图形参数调节
axis([0width0lenth]);
set(gca,'XTick',0:
xdis:
width);
set(gca,'YTick',0:
ydis:
lenth);
gridon;
legend('f分布','正态分布');
%显示当前m
temp1=num2str(floor(m));
str=strcat('m=',temp1);
text(1.55,3.32,str);
%显示当前n
temp2=num2str(floor(n));
str=strcat('n=',temp2);
text(1.78,3.32,str);
%显示当前最大间距
dis=num2str(max(abs(y-y1)));
str=strcat('dis=',dis);
text(1.55,3,str);
%动画指令
drawnow;
holdoff;
m=m+speed;
%看stop是否按下
data=get(gco,'UserData');
method=data
(1);
%更新传递参数
set(stophld,'Userdata',[btnNumbermnpdflabel]);
end
end
%“Close”按钮执行程序
elseifstrcmp(action,'stop')
data=get(gco,'UserData');%读原有传递数据
top=0.95;
left=0.80;
btnWid=0.15;
btnHt=0.08;
%用“continue”按钮替代“Stop
btnNumber=1;
labelStr='Continue';
callbackStr='dandn(''continue'')';
data
(1)=btnNumber;%更新按钮标识
btnPos=[lefttop-btnHtbtnWidbtnHt];
uicontrol(...
'Style','pushbutton',...
'Units','normalized',...
'Position',btnPos,...
'String',labelStr,...
'Callback',callbackStr,...
'UserData',data);
%“continue”按钮执行程序
elseifstrcmp(action,'continue')
%读取传递数据
data=get(gco,'UserData');
method=data
(1);
m=data
(2);
n=data(3);
%用“Stop”按钮替代“continue”
btnNumber=2;
labelStr='Stop';
callbackStr='dandn(''stop'')';
top=0.95;
left=0.80;
btnWid=0.15;
btnHt=0.08;
btnPos=[lefttop-btnHtbtnWidbtnHt];
conthld=uicontrol(...
'Style','pushbutton',...
'Units','normalized',...
'Position',btnPos,...
'String',labelStr,...
'Callback',callbackStr,...
'UserData',[btnNumbermnpdflabel]);
%动画
switchpdflabel
case1
while(method==1)
%画系x2分布密度函数
a=n/2;b=2;%画x2分布密度函数
x=xstart:
0.1:
xstart+width;y=gampdf(x,a,b);
plot(x,y,'b','EraseMode','normal');
holdon
%画近似正太分布密度函数
y1=normpdf(x,n,(2*n)^0.5);
plot(x,y1,'r-');
%图形参数调节
axis([xstartxstart+width0lenth]);
set(gca,'XTick',xstart:
xdis:
xstart+width);
set(gca,'YTick',0:
ydis:
lenth);
gridon;
legend('X~2分布','正态分布');
%显示当前n
temp=num2str(floor(n));
str=strcat('n=',temp);
text(92,0.2,str);
%显示当前最大间距
dis=num2str(max(abs(y-y1)));
str=strcat('dis=',dis);
text(92,0.187,str);
%动画指令
drawnow;
holdoff
n=n+speed;
%看stop是否按下
data=get(gco,'UserData');
method=data
(1);
%更新传递参数
set(conthld,'UserData',[btnNumbermnpdflabel]);
end
case2
while(method==1)
x=-width:
0.1:
width;y=tpdf(x,n);
plot(x,y,'EraseMode','normal');
holdon
%画近似正太分布密度函数
y1=normpdf(x,0,(n/(n-2))^0.5);
plot(x,y1,'r--');
%图形参数调节
axis([-widthwidth0lenth]);
set(gca,'XTick',-width:
xdis:
width);
set(gca,'YTick',0:
ydis:
lenth);
gridon;
legend('T分布','正态分布');
%显示当前n
temp=num2str(floor(n));
z=strcat('n=',temp);
text(3.3,0.335,z);
%显示当前最大间距
dis=num2str(max(abs(y-y1)));
str=strcat('dis=',dis);
text(3.3,0.315,str);
%动画指令
drawnow;
holdoff
n=n+speed;
%看stop是否按下
data=get(gco,'UserData');
method=data
(1);
%更新传递参数
set(conthld,'UserData',[btnNumbermnpdflabel]);
end
otherwise
while(method==1)
x=0:
0.01:
width;y=fpdf(x,m,n);
plot(x,y,'EraseMode','normal');
holdon
%画近似正太分布密度函数
y1=normpdf(x,n/(n-2),(2*n^2*(m+n-2)/m/(n-2)^2/(n-4))^0.5);
plot(x,y1,'r');
%图形参数调节
axis([0width0lenth]);
set(gca,'XTick',0:
xdis:
width);
set(gca,'YTick',0:
ydis:
lenth);
gridon;
legend('f分布','正态分布');
%显示当前m
temp1=num2str(floor(m));
str=strcat('m=',temp1);
text(1.55,3.32,str);
%显示当前n
temp2=num2str(floor(n));
str=strcat('n=',temp2);
text(1.78,3.32,str);
%显示当前最大间距
dis=num2str(max(abs(y-y1)));
str=strcat('dis=',dis);
text(1.55,3,str);
%动画指令
drawnow;
holdoff
m=m+speed;
%看stop是否按下
data=get(gco,'UserData');
method=data
(1);
%更新传递参数
set(conthld,'UserData',[btnNumbermnpdflabel]);
end
end
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- X2 分布 性质 近似 计算