病毒扩散模型(Java)
红色代码病毒的传播图
各种各样的蠕虫病毒在Internet上进行传播,大量的主机被感染,新的病毒又在不断出现。这种现象与人类社会所面临的传染病流行的情形类似。它们都可以用一个简单的数学模型来描述。

式中N是表示所有的可能被感染的群体数量,
是已经被感染上病毒的个体所占的比例,K是一个常数,表示在一个时间段内某个病毒携带者(或感染病毒的计算机)能够传染其他的个体数量。对于一个足够小的时间
,新增加的被感染个体数
等于已经感染的数量
和可被感染的
的乘积。这是一个微分公式。
?
我们往往关心的是被感染的主机比例
随着时间的增长变化的情况。对上面的公式积分后得到如下的结果:

这个式子中的T是一个积分常量,代表病毒的爆发期时刻。如下图的示例,传染能力(即在一段时间内一台感染病毒的个体可以再感染的主机的多少)的度量值K=2.6。病毒的爆发期时间T=5.52。在5.52小时之前,病毒的传播速度还比较慢,接近该时刻后,病毒感染了大量的主机,并且传播的速度也越来越快,最后几乎感染了所有的主机,再传播的速度也开始变慢了。前面红色代码病毒的传播图也表明了这个特点。这个公式有一个著名的名称:罗杰斯特方程(logistic equation)。

logistic equation
参考文献:
如何在你的空闲时间占领整个互联网:How to 0wn the Internet in Your Spare Time
一些病毒传播的动画:http://www.caida.org/publications/animations/#security
=====
本题的目的要求你实现logistic方程,对不同的输入参数,计算某些特定时刻的函数值。
输入:
参数K和T,以及用起始时刻ts,终止时刻te和增量dt表示的一个时间区间[ts,te)。包含ts,但不含te。
输出:
对应各个时刻点的感染个体的比例,用空格进行分隔,每10个数据后换行。最后一行如果不够10个数据也要换行。(补充:可能出现(te-ts)/dt不是整数的情形,要注意是否应该取最后那个点)
输出数据请采用格式化字符串" %4.3f",即每个数据之前放置一个空格,数据保留小数点后三位有效数字。
?
样例输入:
2.6□5.52?
0□8□0.1?
样例输出:
□0.000□0.000□0.000□0.000□0.000□0.000□0.000□0.000□0.000□0.000?
□0.000□0.000□0.000□0.000□0.000□0.000□0.000□0.000□0.000□0.000?
□0.000□0.000□0.000□0.000□0.000□0.000□0.001□0.001□0.001□0.001?
□0.001□0.002□0.002□0.003□0.004□0.005□0.007□0.009□0.011□0.015?
□0.019□0.024□0.031□0.040□0.052□0.066□0.084□0.106□0.133□0.166?
□0.206□0.251□0.303□0.361□0.423□0.487□0.552□0.615□0.674□0.729?
□0.777□0.819□0.854□0.884□0.908□0.927□0.943□0.956□0.965□0.973?
□0.979□0.984□0.987□0.990□0.993□0.994□0.996□0.997□0.997□0.998?
?
注意:(循环变量应使用整数类型)
?
?
?