第五次作业病毒扩散模型NO.3

本文探讨了现代计算机蠕虫病毒的传播机制,通过使用罗杰斯特方程描述其在互联网上的传播过程。详细解释了病毒扩散的数学模型、关键参数及影响因素,并提供了病毒在特定时间区间内的感染比例计算方法。研究揭示了病毒传播的动态特征,包括传播速度的变化、爆发期以及最终感染范围,为理解病毒传播提供了定量分析工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现代计算机蠕虫病毒传播途径多样化,除了利用移动介质如U盘等传播外,还可以通过邮件、网页挂马、聊天工具、文件传输等多种方式传播,一些病毒甚至可以利用系统的某些漏洞自动进行传播。中毒的主机会自动搜索可以被感染的主机,并将蠕虫病毒扩散开来。一台没有安装系统补丁、无安全防护软件的计算机连接到internet上,即使用户不做任何操作,只要网络是通的,在5分钟之内几乎必定会感染上蠕虫病毒。下图是一个著名的病毒--红色代码在某天内传播感染计算机的情况。

CodeRed Spreads

红色代码病毒的传播图

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

diff

式中N是表示所有的可能被感染的群体数量,alpha是已经被感染上病毒的个体所占的比例,K是一个常数,表示在一个时间段内某个病毒携带者(或感染病毒的计算机)能够传染其他的个体数量。对于一个足够小的时间dt,新增加的被感染个体数Nda等于已经感染的数量Na和可被感染的K(1-a)的乘积。这是一个微分公式。

我们往往关心的是被感染的主机比例\alpha随着时间的增长变化的情况。对上面的公式积分后得到如下的结果:

model

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

spread

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.65.52

080.1

样例输出:

0.0000.0000.0000.0000.0000.0000.0000.0000.0000.000

0.0000.0000.0000.0000.0000.0000.0000.0000.0000.000

0.0000.0000.0000.0000.0000.0000.0010.0010.0010.001

0.0010.0020.0020.0030.0040.0050.0070.0090.0110.015

0.0190.0240.0310.0400.0520.0660.0840.1060.1330.166

0.2060.2510.3030.3610.4230.4870.5520.6150.6740.729

0.7770.8190.8540.8840.9080.9270.9430.9560.9650.973

0.9790.9840.9870.9900.9930.9940.9960.9970.9970.998

注意:(循环变量应使用整数类型)

import java.util.Scanner;  
/*
 * 病毒扩散程序  
 * 参数K和T,以及用起始时刻ts ,终止时刻te 和 增量dt表示的一个时间区间[ts ,te )。包含ts ,但不含te 
 */
public class Main {  
  
    public static void main(String[] args) {  
        Scanner scanner = new Scanner(System.in);  
        double K = scanner.nextDouble();  
        double T = scanner.nextDouble();  
        int ts = scanner.nextInt();  
        int te = scanner.nextInt();  
        double dt = scanner.nextDouble();  
        double a;  
        int len = 0;  
        for(int i=0;(ts+i*dt)<te;i++){  
            a = Math.exp(K*((ts+i*dt)-T))/(1+Math.exp(K*((ts+i*dt)-T)));  
            System.out.printf(" %4.3f",a);  
            len++;  
            if(len==10){  
                System.out.println();  
                len = 0;  
            }  
        }  
        if(len != 0){  
            System.out.println();  
        }  
    }  
}


 

本文基于传统的传染病模型,以微分方程的方法作为理论基础,结合采取的措施不同的情况,用MATLAB软件拟合出患者人数与时间的曲线关系,从中得出应采取的相应的应对措施。 在考虑地区总人数不变,人群被分为五类:确诊患者、疑似患者、治愈者、死亡和正常人,再将这几类分为可传染性和不可传染性两种。我们找出单位时间内正常人数的变化、单位时间内潜伏期病人数的变化、单位时间内确诊患者人数的变化、单位时间内退出的人数的变化、单位时间内疑似患者人数的变化等关系建立微分方程模型,得到病毒扩散与传播的控制模型。 在此基础上,我们将所要求的问题带入模型得到患者人数随时间变化的曲线图,根据这图形得出模型结果的变化。这样一来就可根据这结果的变化得出相应的应对措施。 此外对该传染病的潜伏期及治愈期进行了灵敏度分析,发现潜伏期的变化会对整个模型的结果产生较大影响,而治愈期的变化只会使传染病的持续时间缩短,但对累积的患病人数影响不大。 应尽量避免患者与正常人接触,减少正常人患病的可能性;加大隔离措施强度;减少拖延患者去住院的时间,让患者及时住院治疗。养成良好的卫生习惯,保证科学睡眠,适当锻炼,减少压力,保证营养,增强个人抵抗力,降低被病毒感染的危险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值