IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 战胜疫情——简单的冠状病毒模型(Matlab代码实现) -> 正文阅读

[数据结构与算法]战胜疫情——简单的冠状病毒模型(Matlab代码实现)

目录

1 知识回顾

2 岂曰无衣,与子同裳

3 简单的冠状病毒模型(Matlab代码实现)


1 知识回顾

新冠病毒传播模拟(Matlab实现)

?

2 岂曰无衣,与子同裳

位卑未敢忘忧国:

?

3 简单的冠状病毒模型(Matlab代码实现)

?

% Cellular Automata
% Corona
clear all; 
n = 200; x = linspace(0,1,n); y = linspace(0,1,n);
p_InitialInfection = 0.05; lambda_0 = 0.25; Tend = 40; lambda_r = 0.15;
lambda_contact = 3; 
kmax = 1000;
Dt = Tend / (kmax + 1);
Times = linspace(0,Tend,kmax+1);
TDeath = 5; Tsusc = 10;
ProbabilityInfection = zeros(n,n);
pcontact = 1 - exp(-lambda_contact *Dt);
%[X,YY] = meshgrid(x,y);Y = YY';
%S = round(rand(n,n)); Sinit = S;
S = ones(n,n); 
I = zeros(n,n);
R = zeros(n,n);
D = zeros(n,n);
InfectionTime = zeros(n,n);
for i = 1:n
    for j = 1:n
        if (x(j)-0.5)^2 + (y(i)-0.5)^2 < 0.05
            chi = rand;
            if chi <= p_InitialInfection
                I(i,j) = 1; S(i,j) = 0;
                InfectionTime(i,j) = InfectionTime(i,j) + Dt;
            end;
        end;
    end;
end;
Sinit = S;
%S = ones(n,n);
TotalNumberS = zeros(kmax+1,1);
TotalNumberI = TotalNumberS;TotalNumberR = TotalNumberS;
TotalNumberD = TotalNumberS;
TotalNumberS(1) = sum(sum(S))/n^2;
TotalNumberI(1) = sum(sum(I))/n^2;
TotalNumberR(1) = sum(sum(R))/n^2;
TotalNumberD(1) = sum(sum(D))/n^2;
RandomContacts = false;

if RandomContacts
for k = 1:kmax
    SumNeigh = zeros(n,n);
    Iorig = I;
    Sorig = S;
    for i = 1:n
        for j = 1:n
            if i > 1
                SumNeigh(i,j) = SumNeigh(i,j) + heaviside(pcontact-rand)*Iorig(i-1,j);
            end;
            if i < n 
                SumNeigh(i,j) = SumNeigh(i,j) + heaviside(pcontact-rand)*Iorig(i+1,j);
            end;
            if j > 1
                SumNeigh(i,j) = SumNeigh(i,j) + heaviside(pcontact-rand)*Iorig(i,j-1);
            end;
            if j < n
                SumNeigh(i,j) = SumNeigh(i,j) + heaviside(pcontact-rand)*Iorig(i,j+1);
            end;
            if (Sorig(i,j) == 1)
                ProbabilityInfection(i,j) = 1 - exp(-lambda_0*SumNeigh(i,j)*Dt);
                chi = rand;
                if chi < ProbabilityInfection(i,j)
                    S(i,j) = 0;I(i,j) = 1;
                    Infection(i,j) = Infection(i,j) + Dt;
                end;
            end;
            if (Iorig(i,j) == 1)
                ProbabilityRecovery(i,j) = 1 - exp(-lambda_r*Dt);
                chi = rand;
                if chi < ProbabilityRecovery(i,j)
                    I(i,j) = 0; R(i,j) = 1;InfectionTime(i,j) = 0;
                else
                    InfectionTime(i,j) = InfectionTime(i,j) + Dt;
                    if InfectionTime(i,j) > TDeath
                        I(i,j) = 0; D(i,j) = 1;
                    end;
                end;
            end;
        end;
    end;
    TotalNumberS(k+1) = sum(sum(S))/n^2;
    TotalNumberI(k+1) = sum(sum(I))/n^2;
    TotalNumberR(k+1) = sum(sum(R))/n^2;
    TotalNumberD(k+1) = sum(sum(D))/n^2;
end;
else
    for k = 1:kmax
    SumNeigh = zeros(n,n);
    Iorig = I;
    Sorig = S;
    for i = 1:n
        for j = 1:n
            if i > 1
                SumNeigh(i,j) = SumNeigh(i,j) + Iorig(i-1,j);
            end;
            if i < n 
                SumNeigh(i,j) = SumNeigh(i,j) + Iorig(i+1,j);
            end;
            if j > 1
                SumNeigh(i,j) = SumNeigh(i,j) + Iorig(i,j-1);
            end;
            if j < n
                SumNeigh(i,j) = SumNeigh(i,j) + Iorig(i,j+1);
            end;
            if (Sorig(i,j) == 1)
                ProbabilityInfection(i,j) = 1 - exp(-lambda_0*SumNeigh(i,j)*Dt);
                chi = rand;
                if chi < ProbabilityInfection(i,j)
                    S(i,j) = 0;I(i,j) = 1;
                    InfectionTime(i,j) = InfectionTime(i,j) + Dt;
                end;
            end;
            if (Iorig(i,j) == 1)
                ProbabilityRecovery(i,j) = 1 - exp(-lambda_r*Dt);
                chi = rand;
                if chi < ProbabilityRecovery(i,j)
                    I(i,j) = 0; R(i,j) = 1;InfectionTime(i,j) = 0;
                else
                    InfectionTime(i,j) = InfectionTime(i,j) + Dt;
                    if InfectionTime(i,j) > TDeath
                        I(i,j) = 0; D(i,j) = 1;
                    end;
                end;
            end;
        end;
    end;
    TotalNumberS(k+1) = sum(sum(S))/n^2;
    TotalNumberI(k+1) = sum(sum(I))/n^2;
    TotalNumberR(k+1) = sum(sum(R))/n^2;
    TotalNumberD(k+1) = sum(sum(D))/n^2;
end;
end;
%figure(1); semilogy(TotalNumber);hold on;
figure(1); plot(Times,TotalNumberS,'k','linewidth',3);hold on;
plot(Times,TotalNumberI,'r','linewidth',3);
plot(Times,TotalNumberR,'g','linewidth',3);
plot(Times,TotalNumberD,'b','linewidth',3);
figure(2)
plot(Times,TotalNumberI,'r','linewidth',3);hold on;
return;

figure
hold on
for i = 1:n
    for j = 1:n
        if Sinit(i,j) == 1
            plot(x(i),y(j),'ko');
        else
            plot(x(i),y(j),'rx');
        end;
    end;
end;
hold off
return;
figure
hold on
for i = 1:n
    for j = 1:n
        if Sinit(i,j) == 1
            plot(x(i),y(j),'ko');
        else
            plot(x(i),y(j),'rx');
        end;
    end;
end;
hold off
figure
plot(TotalNumber);
return

figure
hold on
for i = 1:n
    for j = 1:n
        if SumNeigh(i,j) == 1
            plot(x(j),y(i),'ro');
        elseif SumNeigh(i,j) == 2
            plot(x(j),y(i),'ko');
        elseif SumNeigh(i,j) == 3
            plot(x(j),y(i),'rx');
        elseif SumNeigh(i,j) == 4
            plot(x(j),y(i),'kx');
        elseif SumNeigh(i,j) == 0
            plot(x(j),y(i),'bo');
        end;
    end;
end;
hold off



?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:55:25  更:2022-04-30 08:57:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:25:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码