数学建模生日问题_数学建模选课问题

2020-02-27 其他范文 下载本文

数学建模生日问题由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数学建模选课问题”。

数学建模实验报告

试验名称:生日问题 问题背景描述:

在100个人的团体中,如果不考虑年龄的差异,研究是否有两个以上的人生日相同。假设每人的生日在一年365天中的任意一天是等可能的,那么随机找n个人(不超过365人)。求这n个人生日各不相同的概率是多少?从而求这n个人中至少有两个人生日相同这一随机事件发生的概率是多少? 实验目的:

用计算机求解概率计算问题;当幂方次数较大时用多项式拟合方法确定求概率的近似计算公式;了解随机现象的计算机模拟技术。实验原理与数学模型:

这是一个古典概率问题,n个人中每一人的生日都可能在365天中任何一天,样本空间中样本点总数为365n,考虑n个人的生日两两不同,第一个人的生日可能在365天中任一天,第二个人的生日不能与第一个人生日相同,第二个人生日可能在364天中任何一天,类推可得,n个人生日两两不同的这一事件的总共有365*364*……*(365-n+1).故这n个人的生日各不相同的概率(可能性)以下面公式计算: P365*364*......*(365n1)365n(1)

因而,n个人中至少有两人生日相同这一随机事件发生的概率为: P(n)=1-365*364*......*(365n1)365n(2)

但是在利用公式进行计算时,所用的乘法次数和除法次数较多,可以考虑用多项式做近似计算。这需要解决多项式拟合问题。主要内容(要点):

1、求出n个人中至少有两个人生日相同的概率P(n)的近似公式;

2、根据P(n)的近似公式,用计算机分别计算出当团体人数取n=1,2,……,100时的概率值:P(1),P(2),……,P(100)。在Matlab环境下用指令plot(p)绘制图形,描述概率值随团体人数变化的规律;

3、特殊概率值的计算。在有40个学生的班上,至少有2个同学生日相同的概率是多少?60个人的团体中,至少有两个人生日在同一天的概率又是多少?在80个人的团体中,情况又如何?

4、用5次多项式拟合方法寻找一个近似计算概率的公式;

5、考虑团体总人数对概率值的影响; 计算机仿真(数值模拟)。

实验过程记录(含:基本步骤、主要程序清单及异常情况记录等):

1、利用(2),用计算机分别计算出当团体人数取n=1,2,……,100时的概率值:P(1),P(2),……,P(100),并绘制图形。Matlab程序具体如下: for k=1:100 p(k)=1-prod(365-k+1:365)/365^k;end plot(p)并以shengriyi.m为文件名保存,然后在Matlab工作环境下输入如下指令: >> shengriyi 结果所得图形如下:

2、特殊概率值的计算。由于前面已经计算了概率值P(k)(k=1,2,……,100),所以只需键入P(40),P(60),P(80)即可。如输入如下指令: >> p(40)ans = 0.8912 一个40个同学的学生班上,至少有两个同学生日相同的概率是P(40)=0.8912; 同理可求出60个人的团体中,至少有两个人生日相同的概率是P(60)= 0.9941; 在80个人的团体中,至少有两人生日相同的概率是P(80)=0.0.9999。

3、参考上图,用五次多项式拟合方法寻找近似计算概率的公式。

在Matlab环境下键入下列指令(该指令为求五次多项式拟合的多项式系数): >> n=1:100;

>> c5=polyfit(n,p,5)c5 =-0.0000 0.0000-0.0001 0.0023-0.0046-0.0020 该多项式即为:

c1xc2xc3xc4xc5xc60x0x0.0001x0.0023x0.0046x0.002054325432在Matlab环境下继续键入下列指令:

>> p5=polyval(c5,n);////////用多项式近似计算100个概率值

>> plot(n,p,n,p5,'.')////////画出拟合多项式的图象与概率曲线作比较

结果所得的图象如下所示:

用五次多项式作近似计算P(30)、P(50)和P(70),指令和结果如下: >> p5(40)ans = 0.8895 >> p5(60)ans = 0.9985 >> p5(80)ans = 0.99434、在某团体中,要保证“至少有两人生日相同”的概率大于99%,可以利用第一个步骤以算出的100个概率值,键入如下指令:>> find(p>0.99),可得结果为: ans = Columns 1 through 27 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 Columns 28 through 44 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 从结果可看出,该团体总人数若超过57人,则这个团体中至少有两人生日相同的概率将大于99%。

5、算机仿真(数值模拟)。随机产生30个正整数,介于1到365之间(用这30个数代表一个学生班的30个同学的生日),然后统计数据,观察是否有两人以上的人生日相同。当30人中有两人生日相同时,计算机输出为“1”,否则输出为“0”。如此重复观察100次,可得频率f100。下面是做计算机模拟的Matlab源程序: n=0;for m=1:100 y=0;x=1+fix(365*rand(1,30));for i=1:29 for j=i+1:30 if(x(i)==x(j)),y=1;break,end end end n=n+y;end f=n/m shengrier.m为文件名保存在Matlab工作空间中,并在Matlab环境下键入j,回车,可输出结果:f100=0.6500 实验结果报告与实验总结: 通过本试验的学习,对一般较简单的Matlab语句有了更深得了解,对一些循环语句也有了一定的认识,但对于语句与语句之间在循环判断条件下如何进行连接,以及如何写出正确的语句还存在着一定的困难。然而从这个实验中也有了不少的收获,在Matlab环境下计算概率值,但当幂方很大的时候,就较难用乘幂直接求出,其已超出计算机的最大数,最终只能作近似计算,而用拟合多项式作近似误差很小,是一种很好的方法;用计算机模拟100次,可以计算出30人中至少有两人生日相同的频率值。注意到频率的波动性,再次运行程序所得频率值的结果可能会有所差异,当模拟结果的频率值接近与前面的概率值时,给所求的概率作了直观的说明。

《数学建模生日问题.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数学建模生日问题
点击下载文档
相关专题 数学建模选课问题 建模 生日 数学 数学建模选课问题 建模 生日 数学
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文