北京理工大学 吴帆 周振寰 吴少聪
摘 要:
问题一:模型一循序渐进,将求“一天浏览该日志的人数变化”的问题转化为求解:人数f(t)—时间t函数。然后将f(t)-t的求解细分为四个主要函数的求解:
1) 日志在好友列表中 排位—时间 函数的求解; 2) 好友查看该日志的 概率—排位 函数的求解;
3) 单个好友看该日志的 总概率—时间 函数的求解;
4) 对上述函数求和,对所有好友查看该日志的 总概率——时间 函数的求解; 最终,得到人数f(t)—时间t函数;
问题二:基于模型一得到的结果,问题二通过对留言与日志本身的等价性分析,利用好友在任意时刻浏览并留言的概率函数,求出在留言系统下“浏览日志人数”关于时间的新的变上限积分关系,微分简化目标函数。得出结果。
问题三:基于问题三和问题二的相似性,分析不同点,将单一分享系统分为“被分享用户”系统和“分享用户”系统。其中,“被分享用户”系统下的模型求解,和问题二是几乎一致的。最后,我们通过类比分析“分享系统”下人数变化函数,求出优化模型。
问题四:不同被点次数对应不同参与概率,用不同的量表示,问题的所求是和这些量每次的变化有关系的,我们用递推关系公式来求解被点名人数的变化情况。并通过对每个人被点名概率相同与否的分析,以及对一个人被点多次的问题的解决,实现对模型的优化。
关键字:变上限积分、等价类比、递推运用、程序求解
问题一:浏览日志人数随时间变化模型:
1.问题重述:
以某大学内社交网站用户群体为研究对象,该群体的用户每天在8:00-23:00间随机的上一次社交网站,查看新鲜事列表中的新鲜事,并在网站上执行一些基本操作,该群体中的麦兜同学的好友列表里有264名好友,已知每名好友的好友数量和一天内产生的新鲜事数条数,他在9:00发表了一篇日志,求这一天浏览该日志的人数变化情况。
第 1 页 共 26 页
2、问题分析:
根据我们的理解:问题中“浏览该日志”是指查看日志,即该操作包含在所产生的新鲜事中。而题干中的“浏览最近发生的30件事”中的浏览是指:只看标题而不查看;一天内产生的新鲜事数条数,就是这个人在新鲜事列表浏览查看新鲜事的数量。下面我们对模型的建立与求解都是建立在这一理解基础上的。
将8:00—23:00以小时为单位分为15段,分别记为:时段1、时段2------、时间段15,根据问题条件以及实际情况,可用以下流程图来反映问题的求解方向:
9:00发表日志 264位好友的新鲜事列表出现该事,并排在最前 随着时间段T的变化,该日志的排位N发生变化,N与t满足函数关系N=g(t) 排位N的变化,好友观看该日志的概率就会发生变化,即:N与满足函数关系:264位好友的好友也产生新鲜事,每产生一个,该日志的排位下降1位,当下降30位后,好友新鲜事列表中无该日志 G(N), 时段2到t内264位好友各自看该日志的总概率,则 =t时段时浏览该日志的总人数 N1264得到浏览日志人数变化情况
所以实际问题转化为了:求解某时段t浏览过该日志的人数,即:人数f(t)—时间T函数。此函数为下面要求的目标函数。
第 2 页 共 26 页
3、符号说明: t:时间(段);
Tmax:该日志排位为30时的时段,也称临界时段;
vn:单位时间(小时)内,第n个好友新鲜事列表中新增的新鲜事数; Nn:该日志在第n个好友新鲜事列表中的排位; u(i):排位为i时,好友查看该新鲜事的概率; p(n,x): 第n位好友在x时间查看该日志的概率; (n,t): 时区(1,t]内第n位好友查看该日志的总概率;
f(t):时区(1,t]内麦兜所有好友查看该日志的总概率之和,也称: 时区(1,t]内浏览过该日志的人数;
m:麦兜的某个好友a的好友数; kn: 麦兜的第n位好友发新鲜事条数;
4、基本假设:
1. 基于问题一的特定条件,假设好友的操作全部用于查看新鲜事上; 2. 好友上线与查看完新鲜事处于同一时段;
3. 某一时间段是一个左开右闭区域,例如:第一时段为:(8:00-9:00]; 4. 由于好友上线情况不受其他因素影响,假设好友的上线按时间段平均分布,即时间段T好友上线人数=264/15;
5. 新鲜事的热门程度与排位(或时效)有关且仅与排位(或时效)有关,即新鲜事被查看的概率是排位(或时效)的单值函数;
5、问题的求解:
根据问题的分析,由于随着时间段t的变化,该日志在好友新鲜事列表中的排位Nn不同,排位不同则该日志的被查看概率(i)不同,被查看概率不同对查看人数变化f(t)有影响。解决这个问题,我们按以下步骤进行:
step 1:
该日志在第n个好友新鲜事列表中的排位Nn与时间段x之间函数关系的求解: 对第n个好友,时间段2刚开始,该日志排位为1,根据:排位变化值=变化速度*时间,得:(Nn-1)=vn*(x-2),即:
Nn=vi*(x-2)+1-----------【1】
对第n个好友(不妨记为a),一小时内新增新鲜事数vn等于a的好友数m乘以a的每位好友平均每天发新鲜事条数再除以15,题目中没有给出好友a的好友发新鲜事的情况,我们用麦兜264位好友发新鲜事的情况近似代替,得到:
vn=m*((kn)/264)/15-----【2】
k1264 将式【2】代入式【1】,得到该日志在第n位好友新鲜事列表中的排位Nn与时间
第 3 页 共 26 页
段x之间函数:
Nn =0.056*m*(x-2)+1--------【3】
式【3】中m为定值,n[ 1,264 ] ,Nn [ 1,30 ]; 当x到达某值时, Nn =30, 我们将Nn =30代入式【3】求出时段x的临界值为:Tmax=(30-1)/(0.056*m)+2=(517.86/m)+2, 所以T( 2, (517.86/m)+2 ];
step 2:
好友查看该日志的概率(i)与该日志在新鲜事列表排位Nn之间函数关系的求解: 新鲜事排位越靠前,此事越新,好友查看该日志的概率越大,此原理与新闻的价值
-n
随时间变化原理类似,所以,我们将新闻价值M—时间t函数(函数形式为:价值M=k*t ,其中k为比例常数,n为常数)等效地应用于概率(i)—排位Nn函数的求解过程中。
假设,概率(i) 与排位Nn函数关系为:
(K1、K2 待定) (i)= K1* Nn ^(-K2)---------【4】
由于在实际中概率(i)是时间点的函数,所以,我们将(i)连续化,对式【4】等号两边同时乘以d Nn得:
(i)*d Nn = K1* Nn ^(-K2)*d Nn -----【5】; 对式【5】在n=1:30上积分得:
(i)*d Nn = K1*Nn^(-K2)*dNn----【6】
113030根据实际意义,式【6】的等号左边积分为1,则式【6】等号的右边=[(K1/(-K2+1))* Nn ^(-K2+1)]
301 = (K1/(-K2+1))*( 30^(-K2+1)-1 ) =1----【7】
式【7】为K1与K2的关系式。由式【4】可知,K1的实际意义为:当日志排位n=1时,好友查看该日志的概率。所以若知道n=1时好友查看该日志的概率(1),再根据K1=(1) 以及式【7】,目标函数便可确定。
为了确定K1,K2的值,我们在交友网站“校内”发起了一次以“看新鲜事你更愿意从第几个(共30个)看起”为题投票活动,共有382个人参加,经过统计,得到结果列表如下:
第 4 页 共 26 页
新鲜1 2 3 4 5 6 7 8 9 10 事排位 概率 0.1110.0770.0650.0560.0480.0430.0420.0387 0.0370.0347 2 2 8 2 2 4 6 8 新鲜11 12 13 14 15 16 17 18 19 20 事排位 概率 0.00.00.00.00.00.00.00.020.00.02357 346 301 254 282 209 251 58 297 48 新鲜21 22 23 24 25 26 27 28 29 30 事排位 概率 0.00.00.00.00.00.00.00.020.00.02274 236 215 209 236 196 218 08 228 39 根据上表可确定:K1=(1) =0.1117,将K1的值代入式【7】解得:K2=0.5011=1/1.99621/2,将K1、K2值代入式【4】,得概率n—排位n函数确定为:
(i) = K1*Nn ^(-K2) = 0.1117*Nn^(-1/2)-------【8】
为了用实际数据检验式【8】的正确性,我们用MATLAB将上表所确定的图像与式【8】确定的图像作于同一坐标轴上(具体代码见附录A):
由上图可以发现,式【8】图像与实际情况图像有较好的吻合度,所以式【8】完全可以用来反映好友查看该日志的概率n与该日志在新鲜事列表排位n之间函数关系。 step 3:
整合step 1与step 2所得出的结论,以得到第n个好友a在x时间段(点)查看该日志的概率,即:概率—时间函数: 排位—时间函数(由式【3】得到):
Nn =0.056*m*(x-2)+1 (x( 2, (517.86/m)+2 ],m为定值,
n[ 1,264 ] ,Nn [ 1,30 ]);
概率—排位函数(由式【8】得到):
第 5 页 共 26 页
(i) = 0.1117*Nn^(-1/2);
整合以上两式可得第n个好友a查看该日志的概率—时间函数为: p(n,x) = 0.1117*( 0.056*m*(x-2)+1 )^(-1/2) --------【9】 (x( 2, (517.86/m)+2 ],m为定值,n[ 1,264 ]) 考虑到x的取值范围,将全域中概率—时间函数表示如下:
2 , 15 0 x[1,2] 517.86/m p(n,x)=
x( 2, (517.86/m)+2 ]0.1117*( 0.056*m*(x-1)+1 )^(-1/2) ---------------------------------------------------【10】
step 4:
时区(1,t]内第n位好友查看该日志的总概率(n,t)随时间t变化函数关系的求解: 总概率(n,t) = 时区(1,t]中各时段概率之和,实际问题中,概率是时间的连续函数,所以,(n,t)等于时间1到时间T概率对时间的积分。同时,根据式【10】,当
2 ,x[1,2] 517.86/m 15 时,p(n,x)=0,所以积分区域只考虑
x( 2 , (517.86/m)+2 ] 的情况。其他情况,总概率保持不变。
根据以上分析,(n,t)等于如下区域中的变上限函数(不同好友发新鲜事条数kn相当于积分的权重):
(n,t)= kn*0.1117*( 0.056*m*(x-1)1 )^(-1/2)dx------【11】
1t( 2, (517.86/m)+2 ],m为常数) (x 由式【11】解得:
(n,t) = kn*(0.2234/a)*[(a*(t-1)+1)1/2-1]-----------【12】
( 2, (517.86/m)+2 ] ) ( a=0.056*m=vi; tstep 5:
时区(1,T]内麦兜的全部264位好友查看该日志的总概率(n,t)之和f(t)随时间t变化函数关系的求解:
式【12】表示时区( 1,t ]内某一好友查看该日志的总概率(n,t),它的意义是:在这段时区内第n个好友分配1*(n,t)部分来查看该日志。所以,f(t)的意义就是:时区( 1,t ]内查看该日志的人数。
第 6 页 共 26 页
对任取某一时间:t ,则,在t时刻总概率之和: f(t)=
264i1(n,t)i1264=
i1264kn*(0.2234/a)*[(a*(t-2)1)-1]
=kn*[-(0.2234/a)+( 0.2234/a0.5)* t-2264i111 ] ( 相对于t,很小 )
aa0.5
kn*[-(0.2234/a)+( 0.2234/a )* t-2]-------------【1-13】
+2 ],m为n有关的常数 ) ( a=0.056*m;t ( 2, (517.86/m)式【13】即为所需求的目标函数。
step 6:
目标函数p(t)—t简化形式的确定:
分析式【1-13】中对t的约束发现:t的取值范围随着n的不同而不同。所以,当t取某一的定值时,式【1-13】中n的取值达不到264个,此时:
P(T)= kn*[-(0.2234/a)+( 0.2234/a0.5 )* t-2] +
i1N kn*[-(0.2234/a)+( 0.2234/a0.5 )* TM-2]------【1-14】
iN264+1 的值。 TM的意义为:式中n相对应的 (517.86/m)
因为:此时,在某些好友的新鲜事列表中该日志的排位已经大于30了,该好友看到
+1 值时,对此好友,式该日志的总概率不会增加,导致当T大于相应的 (517.86/m)【1-13】不再适用。
+1)=2.04;通过对所给数据的处理,我们计算出当n从1到264时,Min((517.86/m)+1)=12.02。根据此计算结果,我们用以下方法解决上述问题:根据式Max((517.86/m)【1-14】分别计算出T=2到12时所对应的f(t), 然后用数据拟合的方法得出f(t)—t的函数关系。在数据拟合环节中,我们估计f(t)—t之间满足f(t)=a1*ta2+a3 的关系,因为:根据式【1-13】发现f(t)与 t-2正相关,而对于上述关于“t的取值范围随着n的不同而不同”的问题,我们认为,这只是相当于给不同的t在式【1-13】中对应f(t)值做一个加权运算,不会影响到函数的形式。
第 7 页 共 26 页
t=212时,相应的f(t),t值列表如下: t 2 3 4 5 6 f(t) 7 8 9 10 11 12 10.43 16.02 16.57 17.07 17.40 17.58 17.72 17.82 18.89 18.96 19.11 当t=1,或者当t>12后。由于该日志在所有好友的新鲜事列表中排位都大于30,所以,f(t)不会再变了。
用MATLAB数据拟合确定f(t)—t函数关系(具体代码见附录B):
将f(t)=a1*ta2+a3,写成t关于f的函数为:
12a3a32 t = 2f -22f(2a2) ------------------------------------【1-15】
a1a1a1用MATLAB拟合得到拟合参数为:
coef = 0.2904 -7.4476 48.0429
1a120.2904a11.86a3即:227.4476 解得:a20.29
a312.82a12a32a248.0429a1 得:
f(t)= 1.86* t0.2912.82 t[ 2, 12 ], 当t>12时,f(t)的值不变。 所以:在t[ 1,15 ]范围内,观看该日志人数f(t)随t变化函数的的表达式为:
t[ 1, 2 ) 0 f(t)=1.86* t0.2912.82 t [ 2, 12 ] ------【1-16】
19.12 t ( 12, 15] t表示时间点,其中t=1代表8:00、t=2代表9:00,以此类推。 式【1-16】即为问题一的最终结果。
6、模型结果以及优缺点的分析: 结果分析:
分析式【1-16】可以发现:
在8:00—9:00时间段没人看该日志,因为此时日志上未发表; 在9:00—19:00时间段内看日志人数逐渐增多,并且增长率越来越 优点:
采用循序渐进的方法解决实际问题;
在step 2中采用类比假设加上事实验证的探讨问题的方法得出了概率—排
第 8 页 共 26 页
位函数,很有说服力;
在step 4中将间断的时间区连续化,通过积分求得总概率—时间函数; 在step 6中运用数据拟合的方法,从t的13个取值以及其对应f(t) 中得出人数—时间函数,科学合理;
由于结论是由数据统计+合理类比+科学计算得到的,所以在模型推广到大量数据范围时,式【1-16】的优越性体现更明显。 存在的问题:
由于题中所给数据的有限,事实依据不是很充分。改进的方向是:除了题目所给数据外,作为建模人,我们应该多做调查,以丰富数据,来检验和修正模型。
问题二:留言系统下浏览日志人数随时间变化模型:
1.问题重述:
如果可以对日志进行留言或评论,被留言用户的好友新鲜事列表会有相应的记录,看到该日志并留言的概率是0.3,好友看到该新鲜事后会去浏览该日志,求这一天浏览过该日志的人数变化情况。
从问题中我们可以知道:
1:当麦兜同学的好友列表里有264名好友中的某个好友浏览了该日志并且进行了留言或评论。
2:题目中的“被留言用户”就是麦兜同学,“被留言用户的好友”就是麦兜同学的好友列表里有264名好友。
3:这条留言所带来的影响就是使麦兜同学的264名好友的新鲜事列表多出了麦兜的这个好友对这条日志留言的新鲜事。
4:看到该日志并留言的概率是0.3,显然留言必须以查看该日志为基础。也就是说只有对该日志进行了查看操作后才有可能进行留言。
2.模型分析:
我们对问题二的求解是基于问题一所建立求解的数学模型。所以我们对比了问题二模型和问题一模型,分析得出以下结果。
等价分析:
当麦兜同学的某个好友a浏览查看了该日志并且进行了留言或评论,就使麦兜同学的264名好友的新鲜事列表都多出了好友a对这条日志留言的新鲜事。
好友看到该新鲜事后会去浏览该日志,那就意味着好友a的留言就相当于麦兜在这个时刻上发表了同样的日志。
差异分析:
概率上,好友查看该日志并留言的概率是0.3.
时间上,留言时间是分布与9:00到23:00的随机函数,而日志发布时间固定为9:00。
数量上,在以上等价分析的基础上,我们可以认为,一篇留言相当一篇日志。由于查看该日志的人很多,发表留言的人也有一定的数量,留言的数量会大于日志。
求解分析:
将留言看作是这个人本身发表的日志,并利用问题一中求解的结果,直接对问题一中的数学模型进行改进,得到在留言系统影响下,浏览该日志的人数变化函数就是问题
第 9 页 共 26 页
1中求解的函数和单一留言系统导致的浏览该日志人数变化函数之和。
假设在留言系统的影响下浏览该日志的人数变化函数已经确定,利用问题1中的基本模型假设,找出这个函数与问题一中的结果函数之间的微分关系,通过对变上限积分的求导将问题简单化,列出关于待定函数的微分方程,从而实现对模型的改进。
3.符号说明:
函数p(n,x):编号为n的好友在x时刻的浏览该日志的概率分布函数。
函数f(t):问题一中求解的单一日志导致的浏览该日志的人数变化函数。由于和问题一中时间初始的选取不同,引用时,将原解的t换成t+1.
函数g(t):单一留言系统导致的浏览该日志的人数变化函数。
函数gn(t):n号好友在单一留言系统导致的浏览该日志的人数变化函数。 函数F(t):留言系统的影响下浏览该日志的人数变化函数。
p:时间影响下,有效的虚拟日志数量占所有虚拟日志的百分比。
4.模型建立:
根据问题一中,利用变上限积分法求解出一天内浏览该日志的人数变化函数f(t),由于问题的等价性,在问题二的求解中只需引用函数形式,并不要考虑函数的具体结构。
1.主函数模型确立:
根据定义 g(t)= g n(t) (2-1)
n1264根据模型分析,在留言系统的影响下浏览该日志的人数变化函数满足:
F(t)= f(t)+ g(t) (2-2)
由于日志的发表是在t>=1以后,因此函数F(△t+1)是指在留言系统的影响下浏览该日志的人数关于 当前时间到发表日志时间差 的函数。
值得注意的是,如果麦兜的某个好友a在t=x时刻的对日志留了言,根据等价性分析,这个留言就相当于麦兜的日志,因为这个留言而导致其他好友浏览该日志的人数就是在留言系统的影响下浏览该日志的人数,即为F(△t+1)。
对问题一模型的优化:
优化模型的目的是求解出单一留言系统导致的浏览该日志人数变化函数 g(t)。 2.
首先将时间定格在t时刻,一切分析结果都是在t时刻之前进行的。
第 10 页 共 26 页
引用问题一中的求解,可知函数p(n,x)*dx是编号为n的好友在x时刻的浏览该日志的概率。其中x代表的是在t时刻之前的任意时刻可能值,这个函数反映的是任意时刻x浏览日志的概率关于时间的概率分布,其在0到+∞的积分是一个定值。
由于查看该日志的人又只有30%的概率会进行留言,因此编号为n的好友在t=x时刻查看该日志并留言的概率是(如上图)
0.3*p(n,x)*dx (2-3)
3.
这里假设这个相当于麦兜日志的留言当做虚拟日志,要提出质疑的是,由于虚拟日志在时间上是分布不均的,因此只有其他好友在发布日志的好友之后上线,才有可能浏览到这个日志,虚拟日志中只有一部分为有效日志。
忽略时刻上限t分析总体问题,由于所有的人上线的时间也是随机分布与8:00-23:00,随机分布的范围为15h。虚拟日志(留言)发表的时间为9:00-23:00,显然好友的上线时间要在虚拟日志发布之后虚拟日志才能被接受,所以并不是所有的虚拟日志都是有效的。
利用概率论中通过随机分布范围进行比较,可以计算有效的虚拟日志数量占所有虚拟日志的百分比。
B时间段占总时间段的比例为14:15,所以上线时间在B时间段的概率为p1=14/15,但上线人数在B时间段时,由于上线时间和虚拟日志发布时间随机分布的范围是一样的,所以此时上线时间在虚拟日志发布时间之后的概率p2=1/2,
所以计算有效的虚拟日志数量占所有虚拟日志的百分比为
p=p1*p2=7/15
4.
重复刚才的论述,这个留言就相当于麦兜的日志,因为这个留言而导致其他好友浏览该日志的人数就是在这个留言系统的影响下浏览该日志的人数,即为F(△t+1)。
考虑到这些虚拟日志在时间上的有效性,“因为这个留言而导致其他好友浏览该日志的实际人数”应为p* F(△t+1)。
也就是说如果编号为n的好友在x时刻查看该日志并留言,就对应有“因为这个留言而导致其他好友浏览该日志的人数”,因此可以理解一下,如果把这个数量乘以编号为n的好友在t=x时刻留言的概率就可以得到:
编号为n的好友在t=x时刻对应的单一留言系统导致的浏览该日志的人数是
0.3*p(n,x)*dx*p*F(△t+1) (2-4)
这是人数关于时间的概率分布,其中△t为当前时间到发表日志时间差,发表日志的时间就是留言的时间x,当前时间就是t,所以有:
△t=t-x
由于编号为n的好友进行浏览新鲜事的时刻x分布于0到t,并且存在于任意时刻的可能都相等,式(2-4)已经建立了人数关于时间概率分布的数学模型,要强调的是这里“人数”是指“x时刻单一留言系统导致的浏览该日志的人数”
那么在0到t整个过程中对于n号好友在“单一留言系统导致的浏览该日志的人数”
第 11 页 共 26 页
gn(t)就是式(2-4)在0-t上的积分,也就是说g(t)满足:
n
gn(t)=7/50*p(n,x) * F(t-x1)*dx (2-5)
t0带入式2-1 g(t)= g n(t)得:
n1264g(t)=n12647/50*p(n,x) * F(t-x1)*dx (2-6)
t0264由式(2-2)得到F(t)= f(t)+ g(t) ,代入式(2-6)就得到关于F(t)的函数方程:
F(t)= f(t)+ n17/50*p(n,x) * F(t-x1)*dx (2-7)
t0从函数整体上看,由于自变量t是处于积分域的上限,所以
7/50*p(n,x) * F(t-x1)*dx 是关于t的变上限积分。
t05.模型求解:
式2-7为: F(t)= f(t)+ n12647/50*p(n,x) * F(t-x1)*dx
t0目的是求出F(t)关于t的函数,其中函数f(t)和函数p(n,x)在问题一中已经得到了求解。
p(n,x)=kn*0.1117*( 0.056*m*(x1)1 )^(-1/2)
t[ 0, 1 ) 0 f(t)=1.86* t0.7112.82 t [ 1, 11 ]
19.12 t( 11, 15]对等式(2-7)两边求导,根据牛顿-莱布尼茨公式,变上限积分函数
7/50*p(n,x) * F(t-x-1)*dx的导数就化为一个简单的式子,式2-7化简为:
0tF(t)=f(t)+7/50*p(n,t)*F(tt1)
’
’
n1264F(t)=f(t)+7/50*F(1)*p(n,t) (2-8)
’
’
n1264式2-8就是关于目标函数的F(t)简单的微分方程。
代入问题一中对p(n,x)的求解结果和F(t)函数的初值,求解出目标函数F(t)。其具体形式为:
F(t)=f(t)+17.85/t1dt
第 12 页 共 26 页
t[ 0, 1 ) 0 F(t)= 1.86* t0.7135.16*t112.82 t [ 1, 11 ]
t( 11, 15]19.1235.16*t1 这就是留言系统下,一天浏览该日志的人数变化函数的数学模型。
6.模型检验:
根据函数F(t)的具体形式。我们用专业制图软件得出函数F(t)的函数图像如下
分析图形和函数,函数F(t),在t大于1以后关于t单调递增,并且F(t)关于时间的一阶导数即增加速率是在减少的,说明日志发布后浏览日志的人数逐渐上升,当t=15时,浏览该日志总人数为151人。但这篇日志随着时间的推移单位时间内浏览人数是下降的,这也侧面说明了日志随时间增加“热度”逐渐下降。
显然这些模型所反映的规律和实际有着很好的吻合。也证明的模型的可行性,合理性。
问题三:分享系统下浏览日志人数随时间变化模型:
1.问题重述:
如果可以对日志进行分享,分享和被分享用户的好友新鲜事列表会有相应的记录,看到该日志并分享的概率是0.7,好友看到该新鲜事后会去浏览该日志,求这一天浏览该日志的人数变化情况。
其实,问题3和问题2有很大的相似性,但值得注意的是:在分享系统下,不仅“被分享用户”----麦兜同学,“分享用户”----麦兜同学的某个发布分享日志的好友,他们的好友的新鲜事列表都会有相应的记录。
即在分享系统下一天浏览该日志的人数变化函数是在问题2中的求结果的基础上,加上麦兜同学的好友的好友因浏览到该新鲜事而浏览该日志的可能。而这就是本问题的分析要点。
2.模型分析: 异同点分析:
问题3和问题2的求解有很大的相似性,分享的日志也具有和原本日志的等价性。 区别在于在分享系统下,不仅麦兜同学(被分享用户),麦兜同学的某个发布分享
第 13 页 共 26 页
日志的好友(分享用户),他们的好友的新鲜事列表都会有相应的记录。而问题2留言系统下的留言只会出现在麦兜同学(被分享用户)的新鲜事列表。
概率上浏览该日志的人中在留言系统下有30%的人留言,而在分享系统下有70%的人分享了日志,但这只是数值上的不同,对问题的本质是不会造成影响的。
求解分析:
将单一分享系统分为以麦兜为研究对象的“被分享系统”和以某个麦兜的好友a为研究对象的“分享系统”。
“被分享系统”下一天浏览该日志的人数变化函数是在问题2中的求结果的基础上,类比分析“分享系统”下一天浏览该日志的人数变化函数,优化模型,而这就是本问题的分析要点。
3.参数确立:
函数p(n,x):编号为n的好友在x时刻的浏览该日志的概率分布函数。 函数f(t):问题一中求解的单一日志导致的浏览该日志的人数变化函数。 函数g(t):单一分享系统导致的浏览该日志的人数变化函数。
函数gn(t):n号好友在“被分享系统”导致的浏览该日志的人数变化函数。 函数gm(t):n号好友a的某个好友在“分享系统”导致的浏览该日志的人数变化函数。
函数F(t):分享系统的影响下浏览该日志的人数变化函数。
p:时间影响下,有效的虚拟日志数量占所有虚拟日志的百分比。
4.模型建立:
基于问题二建立的数学模型,因此重复的求解过程就不做详细说明。 1.
主函数模型确立:
g(t)= g n(t)+g m(t) (3-1) F(t)= f(t)+ g(t) (3-2)(理由同问题
n1264mn1二)
对问题一模型的优化: 2.
编号为n的好友在x时刻的浏览该日志的概率函数p(n,x),编号为n的好友在t=x时刻查看该日志并分享的概率是 0.7*p(n,x)*dx (3-3)
3.
这里假设这个相当于麦兜日志的留言当做虚拟日志,而有效的虚拟日志数量占所有虚拟日志的百分比和问题二中一样,为p=p1*p2=7/15
4.
分享系统中,编号为n的好友在t=x时刻对应的单一分享系统导致的浏览该日志的人数分为“被分享用户”系统和“分享用户”系统作用下的人数。
而“被分享用户”系统下,分享用户(浏览查看了该日志并且进行了分享的好友a),使被分享用户(麦兜同学)的(264名)好友的新鲜事列表都多出了好友a对这条日志分享的新鲜事。这和问题二的模型是完全一致的,
因此编号为n的好友在t=x时刻对应的“被分享用户”系统下导致的浏览该日志的
第 14 页 共 26 页
人数是 0.7*p(n,x)*dx*p*F(△t+1) (3-4)
5. 对于“分享用户”系统下,分享用户(浏览查看了该日志并且进行了分享的好友a),使分享用户自己本身(好友a)的m(m与好友号n对应)名好友的新鲜事列表都多出了好友a对这条日志分享的新鲜事。
所以此时好友a就相当于原来的麦兜同学,好友a的m名好友就相当于原来麦兜同学的264名好友。对于“这个系统下导致的浏览该日志的人数”的求解过程类似问题一,关键在于,概率函数p(n,x)的求解。
如果概率函数p(n,x)是对于麦兜同学的话,那么对于他的某个好友a,我们假设另一个和这个概率函数具有相同性质的函数q(n,x),n表示好友a的好友代号。值得注意的是,好友a的好友的各个性质参数(好友数m,发新鲜事条数k)都是未知的,但是在个体数量较多的情况下,我们可以利用已知数据对这些参数求平均,并用这些统计上的平均值当成是好友a的好友的各个性质参数的值。
问题一概率函数p(n,x)的具体形式,如下:
p(n,x)=kn*0.1117*( 0.056*m*(x1)1 )^(-1/2)
将其中的m用m替换,kn用k替换,概率函数q(n,x)就可以写成:
q(n,x)=k*0.1117*( 0.056*m*(x-1)1 )^(-1/2)
由于已经将n对应的每一个人性质参数平均化的,所以q(n,x)就变成一个与n无关的函数,为了简便分析q(n,x)写成q(x)。
所以编号为n的好友在t=x时刻对应的“分享用户”系统下导致的浏览该日志的人数是 0.7*q(x)*dx*p*F(△t+1) (3-5)
6.
编号为n的好友在t=x时刻对应的“被分享用户”系统下导致的浏览该日志的人数是 0.7*p(n,x)*dx*p*F(△t+1) (3-4)
编号为n的好友在t=x时刻对应的“ 分享用户”系统下导致的浏览该日志的人数是 0.7*q(x)*dx*p*F(△t+1) (3-5)
其中△t为当前时间到发表日志时间差 △t=t-x
在0到t整个过程中对于n号好友在““被分享系统”导致的浏览该日志的人数”
第 15 页 共 26 页
gn(t)就是式(3-6)在0-t上的积分,也就是说g(t)满足:
n
gn(t)=049/150*p(n,x) * F(t-x1)*dx (3-6)
t在0到t整个过程中对于n号好友在““分享系统”导致的浏览该日志的人数” gm(t)就是式(3-6)在0-t上的积分,也就是说gm(t)满足:
gm(t)=049/150*q(x)* F(t-x1)*dx (3-7)
t带入式3-1 g(t)= g n(t)+g m(t)得:
n1264mn1 g(t)=n126449/150*p(n,x) * F(t-x1)*dx+ 49/150*q(x)* F(t-x1)*dx
tmt0n10----------------(3-8)
由式(3-2)得到F(t)= f(t)+ g(t) ,代入式(3-8)就得到关于F(t)的函数方程:
F(t)= f(t)+ n126449/150*p(n,x) * F(t-x1)*dx+
t049/150*q(x)* F(t-x1)*dx (3-9)
tmn105.模型求解:
和问题二的数学模型的求解大致相同 式
m3-9为: F(t)= f(t)+
n126449/150*p(n,x) * F(t-x1)*dx+
t049/150*q(x)* F(t-x1)*dx
tn10目的是求出F(t)关于t的函数,其中函数f(t),函数p(n,x)和函数q(x)在上文中已经得到了求解。
p(n,x)=kn*0.1117*( 0.056*m*(x1)1 )^(-1/2) q(x)=k*0.1117*( 0.056*m*(x-1)1 )^(-1/2)
t[ 0, 1 ) 0 f(t)=1.86* t0.7112.82 t [ 1, 11 ]
19.12 t( 11, 15]对等式(3-9)两边求导,根据牛顿-莱布尼茨公式,式3-9化简为:
第 16 页 共 26 页
F(t)=f(t)+ ’
’
n126449/150*p(n,t) * F(t-t1)+m*49/150*q(t)* F(t-t1)
264F(t)=f(t)+49/150*F(1)*’
’
n1p(n,t) + 49/150*m*F(1)*q(t) (3-10)
式3-10就是关于目标函数的F(t)简单的微分方程。
代入问题一中对p(n,x)的求解结果和F(t)函数的初值,求解出目标函数F(t)。其具体形式为:
F(t)=f(t)+41.02/t1dt+27.27*t-1dt
t[ 0, 1 ) 0 F(t)= 1.86* t0.71109.31*t112.82 t [ 1, 11 ]
t( 11, 15]19.12109.31*t1
这就是分享系统下,一天浏览该日志的人数变化函数的数学模型。
6.模型检验:
根据函数F(t)的具体形式得出函数F(t)的函数图像如下
分析图形和函数,函数F(t)不仅满足数值增大(最大为426)和导数的减少,反映出和问题二中能反映的日志“热度”减少的实际问题,通过对三个问题的出的函数的纵向对比,我们发现:
该日志从问题一到问题二到问题三的浏览人数上,每升一级总体的浏览人数都有比较大的提高,(19人到151人到426人)也就是说,从一般系统到留言系统到分享系统,人与人之间信息的交流速率没跨越一级有很明显的提高。
这也说明,网络交流平台的一些方便交流的设计(如新鲜事系统,留言系统和分享系统)对人们信息交流的速率有这很大的影响。
显然模型所反映的规律吻合实际。也证明的模型的可行性和合理性。
第 17 页 共 26 页
问题四:关于“点名日志”中人数的变化模型
1.问题重述:
问题要求解每次被点名人数的变化,被点名是指你的好友传给你一个问答日志,那么你被点名次数就加一,按照参与概率计算出你是否会参与回答日志,如果你回答了,你将修改这些问题(剔除3题加入3题),以新的问答日志传给另外好友,要传四个名额。如此进行。参与概率是指你有可能回答传给你的日志的可能性大小,当然是被点次数越少,概率值越大。如图: 被点名次数 参与概率 0 95% 1 40% 2 15% 3 0% 图1 问题所求的是被点名人数的变化,也就是我们设的每回相对应点名前被点名人数与点名后人数的差值(正值)。最后将这些人数变化相加就是所求。
2.模型分析:
我们所设立的是四个数组,分别代表每次变化(把日志传给别人)后不同的被点名次数的人数,而根据题意每次被点名人数总数是与上一次被点名并且参加游戏的人数乘以4。那么对于被点名次数化的人数,也就是进行一次全面的游戏前后差值,为了方便我们在后面也对其进行假设。
题目表明日志有20个问题,当你回答完(参与游戏)去除3各不喜欢的问题,添加3个相同的问题。说明这个全新的日志(对回答过的人来说),可以回传,这也使得被点名超过一次的人再参与成为可能,当然多次点名后再参与游戏的概率变成了0%。符合实际情况。
表中很关键的一个数值是当点名次数为3时,相对应的参与概率为0%也就是说,当被点名次数超过3次时,无论被点多少次你都不会回答问题,也就不会再传问题给别人。因此在假设时就可以设>=3的人是一个值,而不必假设无数个数值代表被点很多次的人。
另外,很重要的一点是第四个问题是与前面三个问题没有多大关系的,只是用了同一个事实,因为4题中并没有出现题中假设的基本操作,也就和所谓的新鲜事列表没有瓜葛,也就谈不上利用前面三题的结论。另外,在后面解题中如果用前三题的条件会发现第四题没有意义,所以说第四题是全新的。
3. 符号说明:
我们为了讲述方便,设被点名次数为0所对应的人数为第0组,点名数大于等于3的人数称为第3组。如此以此类推假设其他组。
我们假设第n-1次点名结束时,相对应人数如下,并且进行第n次点名时每个相对应的移除人数(从原来的所对应的组中移除的)
设总人数为N,则N=An-1+ Bn-1+ Cn-1+ Dn-1=
第 18 页 共 26 页
n +
n +
n +
n
被点名次数 N-1次后对应人数 第N次移除人数 第N次变化人数 N次后对应人数 0 An-1 n 1 Bn-1 n 2 Cn-1 n >=3 Dn-1 n 图2
4. 模型建立和求解: 1主体思路
(1)我们设想,当第n次点名时,假设要点pn个人,我们暂且假设所有的人都互相为朋友,并且每次进行点名时至多被点一次,这些问题之后进行修正。当所有人(N人)都互为朋友时,被点名的pn人是从所有人中随机选取,并且每个人被选取的概率是相同的。由前面模型分析可知,每次被点名人数总数(Pn)是与上一次被点名(Pn-1)并且参加游戏的人相关的。因此,
我们建立的模型就是用递推方法求pn和pn+1关系,进而计算出Pn。
(2)我们先注意第0组人的变化,被点名次数只会增加,也就是说被点名0次的人不断减少,而第n次要点Pn人,通过平均计算求得从被点概率为An-1/N-1(记住:对于每一个发表的日志,要传给4个人是不能包括自己的所以要扣除1)。那么由此可求得被点人数就是
,这些人当作被点一次而变成被点名次数为1的人(每人至多
被点一次)。而点名次数超过3的人并没有变换小组仍在第3组。相对应的分别求出其他的人数变化,结果如下表:
被点名0 1 2 3 次数 移除人0 数 图4 相对应的这些被点名的人会按题目所给的概率去做题并传给4个好友,那么第n次移除的人有可能成为下一次发表日志的人(通过题中所给的概率)。我们就可以求的下次,也就是第n+1次被点名的人数,这是我们所要求的公式:
而
由之前求得是关于Pn的函数我们就找出了关于被点人数的递推公式,加
第 19 页 共 26 页
上初始条件(第一次点名是点4个人,也就是P1=4)我们就可以求得任何次数下被点
的人数。
(3)可以看出,要求
需要
四个变量,然而
代表发表日志后每组的人数,An数组的前后变化是与Pn有关的即:
我们计算得到
那么
···
我们求得
也就是说An是仅与Pn(1~N)有关的,同理可求Bn,Cn也仅与Pn(1~N)有关那么数列{Pn}就有一个递推公式了,也就是说只要有初始条件,每项都可求。
做的时候要注意Bn和Cn前几项是0,不能这样算,而是Bn/Bk。当我们把
带入之后会发现Pn+1是和上次分别在各组的人数及Pn有关的函数,由于变量较多我们使用编程的方法计算出结果,我们用如下表格来记录各个量的变化,直观的看出Pn是可求的:
An Bn Cn Dn Pn Pn+1 第一 次点名 第二 次点名 第三 那次点名 ···· 图5
2问题的修正:
(1)由于上面考虑每个人只会被移动一次或不移动(至多移动一次),下面考虑同一次被点超过两次的人,假设原来是在第0组的人被移到第2组的人数在第n次有f个
第 20 页 共 26 页
人。则分开单独考虑这f个人,因为我们只考虑次数,如表,移到被点次数为1的f个人想再移动,这f个人次必然是在Yn个人次之中,因为只有Yn会移动到被点2次人之中。所以Yn要扣除这f个人。这有点难以理解,
被点名次数 变化人数 对应人数 0 有f个人直接从0组到2组
1 2 >=3 n n n n 图6 我们将最终计算结果和之前图2进行比较,发现变化人数是相等的。也就是说同一次被点名多或少次是与最终结果没有关系的。
(2)下面再考虑另一个问题,我们之前假设所有的人都是朋友,也就是能够在所有人中随机选取,因此每个人被选到的概率是相等的。但题目和事实告诉我们这是不可能的。因此我们要利用上面推出的结论,必须证明每个人被点名的概率相等,即使并不是每个人都是朋友。若引用之前的好友关系,即麦兜是第一个传的人,他传给264个朋友中地4个。这四个好友若回答了,将分别从各自的好友列表(我们称其为好友的好友)中选4个人(有可能是麦兜),然而之后就无法再进行游戏了,因为好友的好友,他们的好友列表并没告诉我们。也就无法选取4个人,所以这个条件值不能用的。也说明第四题与前三题不一样。
我们假设N个人分别是N个元素,从中选取N个子集,每个子集含有一个人的好友列表中的好友。那么这个自己所含有的元素是任意的。我们给这N个人相应编号1~N,列出每个人所对应的好友列表,这是任意的:
编号1好友列表:{2,5···N-4} 编号2好友列表:{···} ···
我们不必列出所有的,因为那没意义。假设第一次点名人是编号为m的人,她/他好友列表有
可能(每个人可以是或不是他的好友)假设他有k个好友,那么下回他
,很明显,
将在这k个好友中选4个,我们关心得是这k个好友被点名的概率是不是
想要在这k个好友中找必须先选取到代号为m的人。当然最初的选取是任意的为1\\N,第二次选择时候好友子集概率
>
我们利用
得到
第 21 页 共 26 页
=≈
因此我们可以猜测每次所选取的概率都是1\\N-1。在选取k个人中一个后,他的好友列表也是
所以下次从他的好友列表选取一个人的概率同样的计算方法,结果仍
然是1\\N-1。又选取概率与被点次数毫无关系,所以被点名概率永远是1\\N-1。
上述算法存在一定误差,即好友个数要从4开始取起,并且k的值也是4开始,所以总的好友子集是
(扣除第一次选的那个人,因为再他的好友列表是
不包括他的)而非
。具体误差分析会在后面表述,事实上,当n较大时是不会有
影响。事实上结果是很接近1/N-1的。我们也解决了是否每个人都被选取的概率是1\\N-1。
也就是说上述模型是成立的。
3总结
(1)总的来说,解题就是是求出Pn表达式。用递推公式求得
公式最终只是Pn(1~N)间的相互关系,之后计算Pn为了方便列了表格,表示出与上式有关的量。问题就迎刃而解了。
下面是计算结果:
print the number take part in the game: N=1000 Print the showing times :m=10 Calculating···Please wait for a second
a[1]=1000 x[2]=4/*第一次4个人是从第0组成员选取*/ b[1]=0 y[2]=0 c[1]=0 z[2]=0 d[1]=0 s[1]=4
a[2]=996 x[3]=14
b[2]=4 y[3]=0/*由于四舍五入,4*95%→4,所以第二次有4个人发表日志发给16个人,有14个人回答了问题*/
c[2]=0 z[3]=0 d[2]=0 s[2]=14
a[3]=982 x[4]=54 b[3]=18 y[4]=1 c[3]=0 z[4]=0 d[3]=0 s[3]=55
第 22 页 共 26 页
a[4]=928 x[5]=191 b[4]=71 y[5]=15 c[4]=1 z[5]=0 d[4]=0 s[4]=206
a[5]=737 x[6]=552/*数值变化相当快*/ b[5]=247 y[6]=185 c[5]=15 z[6]=12 d[5]=0 s[5]=749
a[6]=185 x[7]=185 b[6]=614 y[7]=799 c[6]=189 z[7]=988 d[6]=12 s[6]=2403
a[7]=0 x[8]=0 b[7]=0 y[8]=0 c[7]=0 z[8]=0
d[7]=1000 s[7]=2573
a[8]=0 x[9]=0/*可以看到当进行7次后,人数1000的群体所有人都被点名超过3次*/
b[8]=0 y[9]=0 c[8]=0 z[9]=0 d[8]=1000 s[8]=0
a[9]=0 x[10]=0 b[9]=0 y[10]=0 c[9]=0 z[10]=0 d[9]=1000 s[9]=0
a[10]=0 x[11]=0 b[10]=0 y[11]=0 c[10]=0 z[11]=0 d[10]=1000 s[10]=0
请按任意键继续. . .
(2)数值变化如此之快的原因:
其一是被点名次数为0的人被点后参与概率95%,几乎是全部参加了,其二是刚开始大家都没被点,相当于滚雪球的“资源”非常多。因此变化很快;
其三是参与游戏的人马上要发给4个人,这个函数初期比较接近指数函数4n这有点类似滚雪球;
有人对这个游戏的真实性感到怀疑,1000人仅七次每个人就被点3次以上。事实
第 23 页 共 26 页
上我们规定的一次在现实中是要花很长时间的,要求每个被点到的人都要回应,后面一次相当于所有人都参与。想想要让所有人都对这游戏反应一次(无论是否回答)要多长时间就不会感到奇怪了。
5. 模型检验:
事实上,这种从N个人里面任意选取Pn个人的模型有一点存在问题,就是第一个作为发表日志的人的选取。P1=4所以是没把这个人的选取考虑在内的,而是默认有这个人,而选取这个人的概率是1/N,这存在一点偏差。而每次选的人,每个人的概率不是1/N,而是1/(N-1).(因为必须有个人发日志,但他不能发给自己)。但最初发表日志的这个人有不能排除在系统之外,因为第二次开始,他也有可能被点名。不过从总体来说一个人的作用太小了,这个是可以忽略的。
在考虑至多移动一次的问题时,存在一个特例,也就是按照
是
那被选取概率就是
这个计算是精确地,但计算过于繁琐,当n较大时,与
差距是比较大的。因此可以忽略,也就成了
6、模型的推广:
模型一:此模型可用于解决一些关于:求某事物(或事件)随时间变化规律,例如:求某篇新闻报道在社会上的影响随时间变化关系。
模型二和三:其实变上限积分法可以求解各类网络信息交流问题,通过列出概率函数,引出变上限积分,不仅可以针对多种实际问题,通过莱布尼茨公式还可以对其简化。
诸如已知人流密度随时间或者地域的概率函数,就可以通过变上限积分法很容易求出下限固定且上线指定的时间段或者空间面积关于人流密度的函数,即使是已知函数比较复杂。
模型四:这种用递推方法应用非常广泛,平常生活中问题一般都比较繁琐,而且难以用已知的等差等比数列直接套用求解否则误差很大,而递推公式只需求得前后项的相互关系,或者如本题是Pn和P1~Pn-1关系,再加上初始条件,整个数列就全知道了,对数列一系列操作(求和,求公差,求平均)也都有了可能。
参考文献:
第 24 页 共 26 页
[1] 《 数学模型 》,姜启源,高等教育出版社,2003年版;
附录:
A:
x=1:30;
y1=[ 0.1117, 0.0772, 0.0652, 0.0568, 0.0482, 0.0432, 0.0424, 0.0387,
0.0376, 0.0348,0.0357,0.0346,0.0301,0.0254, 0.0282,0.0209,0.0251,0.0258 ,0.0297,2.0247,
0.0274,0.0236,0.0215,0.0209,0.0236 ,0.0196,0.0218,0.0208,0.0228, 0.0239];
y2= 0.1117*x.^(-1/2);
plot( x,y1,'b>:',x,y2,'r^:' ) plot( x,y1,'b*:',x,y2,'ro:' ) grid
gtext( ' y2= 0.1117*x.^(-1/2) ' ); title( ' 式【8】与实际情况对比图 ' ); B:
P=[10.43 16.02 16.57 17.07 17.40 17.58 17.72 17.82 18.89 18.96 19.11];
T=[2 3 4 5 6 7 8 9 10 11 12]; coef=polyfit( P,T,2 ) C: main()
{ float a[100],b[100],c[100],d[100];
float x[100],y[100],z[100],s[100],tep1=0,tep2=0,tep3=0; int i,j,k,p,q,m,n; scanf(\"%d %d\
a[1]=n-1;b[1]=1;c[1]=0;d[1]=0; s[1]=4*0.95;
for(i=2;i<=m;i++) {
x[i]=s[i-1]*a[i-1]/n-1; a[i]=a[i-1]-x[i];
if(a[i]<=0) {
y[i]+=x[i]-a[i-1]; tep1=x[i]-a[i-1]; x[i]=a[i-1]; a[i]=0; }
y[i]=(tep1+s[i-1])*b[i-1]/n-1; b[i]=b[i-1]+x[i]-y[i];
第 25 页 共 26 页
if(b[i]<=0) {
z[i]+=y[i]-b[i-1]-x[i]; y[i]=b[i-1]+x[i]; tep2=y[i]-b[i-1]; b[i]=0; }
z[i]=(tep1+tep2+s[i-1])*c[i-1]/n-1; c[i]=c[i-1]+y[i]-z[i];
if(c[i]<=0) {
z[i]=c[i-1]+y[i]; tep3=z[i]-c[i-1]; c[i]=0; } d[i]=d[i-1]+z[i];
s[i]=4*(x[i]*0.95+y[i]*0.4+z[i]*0.15); printf(\"a[%d]=%.0f \printf(\"x[%d]=%.0f\\n\
printf(\"b[%d]=%.0f \printf(\"y[%d]=%.0f\\n\printf(\"c[%d]=%.0f \;printf(\"z[%d]=%.0f\\n\
printf(\"d[%d]=%.0f \printf(\"s[%d]=%.0f\\n\\n\}
system(\"pause\");}
第 26 页 共 26 页
因篇幅问题不能全部显示,请点此查看更多更全内容