基于改进SEIR模型的病毒传播动力学建模与疫情预测分析(以COVID-19新冠病毒为例,超详细,带matlab源码)

2023-11-15


前言

  SEIR模型是现在较为成熟流行病预测模型,所研究的传染病具有一定时间的潜伏期,与患者接触的正常人并不会马上患病,而是成为病原体的携带者。
  传统的SEIR模型包含五大部分,即易感染者、潜伏者、患病者、康复者。
  本文多次改进了传统的SEIR模型,引入了死亡者、医疗隔离者、自我隔离者,使得模型更加完备准确。
  最终,模型的预测结果在5月7日前后总感染者达到了80,000人左右,与实际数据仅相差不到2000人。


一、数学基础知识

马尔可夫链
微分方程


符号定义

符号 单位 意义
N 总人数
S 易感染者
E 潜伏者
I 感染者
R 康复者
D 死亡者
F 自我隔离者
Q 医疗隔离者
h 常数 传播系数
a 常数 接触人数
b 常数 感染率
k 常数 感染者死亡率
f 常数 自我隔离速率
q 常数 医疗隔离速率
r 常数 感染者康复率
r_1 常数 隔离者康复率
k_1 常数 隔离者死亡率
c 常数 潜伏者转阴率
i 常数 转病率

二、传统SEIR模型的建立与求解

1.经典的SEIR传播动力学模型建立

  在建立经典SEIR模型时,我们同时引入死亡者。
  要建立经典SEIR传播动力学模型,需要将人类群体分为五大部分(易感染者、潜伏者、患病者、康复者、死亡者),各个部分人群未来趋势走向具有相互转化的可能。
  其中,人群相互转化存在一定的比率关系,建立的关于各个部分人群未来趋势走向的SEIR传播动力学模型如下。
在这里插入图片描述


2.根据经典的SEIR模型列出微分方程并求解

  在新冠病毒传染病蔓延过程中,各部分人群未来趋势走向是按照一定的比率进行转化的。因此,根据上图经典的SEIR传播动力学模型构建微分方程。

d S / d t = − h I S / N \mathrm{dS/dt=-}hIS/N dS/dt=hIS/N d E / d t = h I S / N − i E \mathrm{dE/dt=}hIS/N-iE dE/dt=hIS/NiE d I / d t = i E − r I − k I \mathrm{dI/dt=iE}-rI-kI dI/dt=iErIkI d R / d t = r I dR/\mathrm{dt}=rI dR/dt=rI d D / d t = k I dD/dt=kI dD/dt=kI

  将其看做马可夫链,我们假设后一天的状态只与前一天状态有关,故推出以下迭代方程。

S n + 1 = S n − h I n S n / N S_{n+1}=S_n-hI_nS_n/N Sn+1=SnhInSn/N E n + 1 = E n + h I n S n / N − i E n E_{n+1}=E_n+hI_nS_n/N-iE_n En+1=En+hInSn/NiEn I n + 1 = I n + i E n − r I n − k I n I_{n+1}=I_n+iE_n-rI_n-kI_n In+1=In+iEnrInkIn R n + 1 = R n + r I n R_{n+1}=R_n+rI_n Rn+1=Rn+rIn D n + 1 = D n + k I n D_{n+1}=D_n+kI_n Dn+1=Dn+kIn

  以我国数据为例,我们取a=20,b=0.03,最终得出传播系数h=0.6(以SARS为标准),转病率i=0.125(潜伏期为2-14天,故取1/8),康复率r=0.1,感染者死亡率k=0.05,将参数带入迭代方程并使用MATLAB求解得出如下结果。
在这里插入图片描述

  由上图可见,日最大存在的感染者达到了250,000,000左右,与实际的数据严重不符,这是因为经典的SEIR模型只考虑了无限制传播的情况,所以在后面我们将对经典模型进行进一步改进。


代码
%SEIR模型求解
clear;clc;
%参数设置
N = 1400000000;%人口数
I = 1;%传染者
R = 0;%康复者
D = 0;%死亡患者数量
E = 0;%潜伏者
S = N-I;%易感染者
a = 20;%感染者平均接触人数
b = 0.03;%感染率
h = a*b;%感染系数(以SARS为准)
i = 0.125;%潜伏者患病概率
r = 0.1;%康复概率
k = 0.05;%死亡概率
T = 1:500;
for idx =1:length(T)-1
    S(idx+1)=S(idx)-h*I(idx)*S(idx)/N;%易感人数迭代
    E(idx+1)=E(idx)+h*S(idx)*I(idx)/N-i*E(idx);%潜伏者人数迭代
    I(idx+1)=I(idx)+i*E(idx)-(r+k)*I(idx);%患病人数迭代
    R(idx+1)=R(idx)+r*I(idx);%康复人数迭代 
    D(idx+1)=D(idx)+k*I(idx);%死亡患者人数迭代
end
plot(T,S,T,E,T,I,T,R,T,D);
grid on;
xlabel('日期');
ylabel('人数');
legend('易感者','潜伏者','感染者','康复者','死亡者');
title('SEIR模型');

三、SEIR模型第一次修正

1.模型建立

  修正思路:由于此次新冠肺炎有未发病感染症状,故患者在潜伏阶段也会感染正常人,所以我们引入潜伏者感染系数h_1。
  同时,潜伏者还存在自愈转阴的情况,所以,同时引入潜伏者转阴率c。
  建模如下
在这里插入图片描述


2.模型求解

通过SEIR模型,我们可以得到如下微分方程:

d S / d t = − h I S / N − h 1 E S / N + c E \mathrm{dS/dt=}-hIS/N-h_1ES/N+cE dS/dt=hIS/Nh1ES/N+cE d E / d t = h I S / N + h 1 E S / N − i E − c E \mathrm{dE/dt=}hIS/N{+h}_1ES/N-iE-cE dE/dt=hIS/N+h1ES/NiEcE d I / d t = i E − r I − k I \mathrm{dI/dt=iE}-rI-kI dI/dt=iErIkI d R / d t = r I dR/dt=rI dR/dt=rI d D / d t = k I dD/dt=kI dD/dt=kI

根据上述微分方程推出以下迭代方程:

S n + 1 = S n − h I n S n / N − h 1 I n S n / N + c E n S_{n+1}=S_n-hI_nS_n/N-{h_1I}_nS_n/N+cE_n Sn+1=SnhInSn/Nh1InSn/N+cEn E n + 1 = E n + h I n S n / N − i E n − c E n E_{n+1}=E_n+hI_nS_n/N-iE_n-cE_n En+1=En+hInSn/NiEncEn I n + 1 = I n + i E n − r I n − k I n I_{n+1}=I_n+iE_n-rI_n-kI_n In+1=In+iEnrInkIn R n + 1 = R n + r I n R_{n+1}=R_n+rI_n Rn+1=Rn+rIn D n + 1 = D n + k I n D_{n+1}=D_n+kI_n Dn+1=Dn+kIn


  在原参数的基础上,取潜伏者感染系数h_1与感染者感染系数h相同,转阴率c=0.05。将参数代入第一次修正的SEIR模型,使用MATLAB求解,结果如下。

在这里插入图片描述
可以看到,引入潜伏者感染系数后,感染者大幅上升,爆发速度也更快,更加接近新冠病毒疫情的实际效果。


四、SEIR模型的第二次修正

1.模型建立

  修正思路:由于我国的快速响应,采取了定点医院隔离措施,积极收治感染者,故引入新的人群医疗隔离者Q,感染者被收治的速率为q,由于医院医疗条件较好,故医疗隔离者死亡率k_1与隔离者治愈率r_1应单独考虑。由于患者被严格隔离,所以其不具备传染性。
  第二次修正后SEIR模型如下:
在这里插入图片描述


2.模型求解

通过SEIR模型,我们得到如下微分方程:

d S / d t = − h I S / N − h 1 E S / N + c E \mathrm{dS/dt=}-hIS/N-h_1ES/N+cE dS/dt=hIS/Nh1ES/N+cE d E / d t = h I S / N + h 1 E S / N − i E − c E \mathrm{dE/dt=}hIS/N{+h}_1ES/N-iE-cE dE/dt=hIS/N+h1ES/NiEcE d I / d t = i E − r I − k I − q I \mathrm{dI/dt=iE}-rI-kI-qI dI/dt=iErIkIqI d R / d t = r I + r 1 Q dR/dt=rI+r_1Q dR/dt=rI+r1Q d D / d t = k I + k 1 Q dD/dt=kI+k_1Q dD/dt=kI+k1Q d Q / d t =   q I − r 1 Q − k 1 Q dQ/dt=\ qI-r_1Q-k_1Q dQ/dt= qIr1Qk1Q

根据上述微分方程推出以下迭代方程:

S n + 1 = S n − h I n S n / N − h 1 I n S n / N + c E n S_{n+1}=S_n-hI_nS_n/N-{h_1I}_nS_n/N+cE_n Sn+1=SnhInSn/Nh1InSn/N+cEn E n + 1 = E n + h I n S n / N − i E n − c E n E_{n+1}=E_n+hI_nS_n/N-iE_n-cE_n En+1=En+hInSn/NiEncEn I n + 1 = I n + i E n − r I n − k I n − q I n I_{n+1}=I_n+iE_n-rI_n-kI_n-{\rm qI}_n In+1=In+iEnrInkInqIn R n + 1 = R n + r I n + r 1 Q n R_{n+1}=R_n+rI_n+r_1Q_n Rn+1=Rn+rIn+r1Qn D n + 1 = D n + k I n + k 1 Q n D_{n+1}=D_n+kI_n+k_1Q_n Dn+1=Dn+kIn+k1Qn Q n + 1 = q I n − r 1 Q n − k 1 Q n Q_{n+1}={\rm qI}_n-r_1Q_n-k_1Q_n Qn+1=qInr1Qnk1Qn


  由于我国响应快速,医疗措施较好,故取q=0.9,r_1=1.2r, k_1=0.05k。
  在原参数的基础上,将上述参数代入第二次修正的SEIR模型,并使用MATLAB求解,结果如下图所示。
在这里插入图片描述
  虽然日存在感染人数有所下降,可是几乎所有样本都被感染,最高日存在感染人数高达3.5亿(感染者与潜伏者的总数,即为总携带者),仍偏离实际。这是因为在动态的转化中,所有的易感染者都处于不受保护的状态,最终都会变成感染者或潜伏者。
  此时的模型虽然定量分析偏离实际,但是定性来说,很好的符合了我国新冠肺炎疫情的情况,感染人数首先以指数增加,此时是病毒的爬升期;在数十天后达到峰值,迎来拐点;随后缓慢下降直到清零,治愈人数与死亡人数也同时趋于稳定。


五、SEIR模型的第三次修正

1.模型建立

  由于我国处理措施得当,及时进行了管制措施,使得感染者与潜伏者日接触人数a大幅下降,所以模型在采取管制措施后应当下调传染系数h。
  此外,由于民众自我隔离,每天都有易感染者S成为不易感染的自我隔离者F,其速率为f。现假设易感染者成为自我隔离者后绝对安全,不会被感染。
  第三次修正后SEIR模型如下。
233


2.模型求解

由以上SEIR模型可得以下微分方程:

d E / d t = h I S / N + h 1 E S / N − i E − c E \mathrm{dE/dt=}hIS/N{+h}_1ES/N-iE-cE dE/dt=hIS/N+h1ES/NiEcE d I / d t = i E − r I − k I − q I \mathrm{dI/dt=iE}-rI-kI-qI dI/dt=iErIkIqI d R / d t = r I + r 1 Q dR/dt=rI+r_1Q dR/dt=rI+r1Q d D / d t = k I + k 1 Q dD/dt=kI+k_1Q dD/dt=kI+k1Q d Q / d t =   q I − r 1 Q − k 1 Q dQ/dt=\ qI-r_1Q-k_1Q dQ/dt= qIr1Qk1Q

当没有采取管制措施时:

d S / d t = − h I S / N − h 1 E S / N + c E \mathrm{dS/dt=}-hIS/N-h_1ES/N+cE dS/dt=hIS/Nh1ES/N+cE

当采取管制措施时:

d S / d t = − h I S / N − h 1 E S / N + c E − f S \mathrm{dS/dt=}-hIS/N-h_1ES/N+cE-fS dS/dt=hIS/Nh1ES/N+cEfS

由于自我隔离者不会被感染,所以不用计算其人数。由以上微分方程可得以下迭代方程:

E n + 1 = E n + h I n S n / N − i E n − c E n E_{n+1}=E_n+hI_nS_n/N-iE_n-cE_n En+1=En+hInSn/NiEncEn I n + 1 = I n + i E n − r I n − k I n − q I n I_{n+1}=I_n+iE_n-rI_n-kI_n-{\rm qI}_n In+1=In+iEnrInkInqIn R n + 1 = R n + r I n + r 1 Q n R_{n+1}=R_n+rI_n+r_1Q_n Rn+1=Rn+rIn+r1Qn D n + 1 = D n + k I n + k 1 Q n D_{n+1}=D_n+kI_n+k_1Q_n Dn+1=Dn+kIn+k1Qn Q n + 1 = q I n − r 1 Q n − k 1 Q n Q_{n+1}={\rm qI}_n-r_1Q_n-k_1Q_n Qn+1=qInr1Qnk1Qn

当没有采取管制措施时:

S n + 1 = S n − h I n S n / N − h 1 I n S n / N + c E n S_{n+1}=S_n-hI_nS_n/N-{h_1I}_nS_n/N+cE_n Sn+1=SnhInSn/Nh1InSn/N+cEn

当采取管制措施时:

S n + 1 = S n − h I n S n / N − h 1 I n S n / N + c E n − f S n S_{n+1}=S_n-hI_nS_n/N-{h_1I}_nS_n/N+cE_n-fS_n Sn+1=SnhInSn/Nh1InSn/N+cEnfSn


  根据我国情况,我们取a=5,f=0.3,在第31天采取管制措施。在原参数基础上,将以上参数代入第三次修正的模型,并使用MATLAB求解,结果如下。
在这里插入图片描述
  可以看到,SEIR模型经过改进后,日存在患者人数最高达到32000(感染者与潜伏者的总数,即为总携带者),总患病人数达到约80000,与我国数据极为接近。


代码
%SEIR模型第三次修正,易感人群进行自我隔离
clear;clc;
%参数设置
N=1400000000;%人口数


%参数设置
N=1400000000;%人口数
I = 1;%传染者
R = 0;%康复者
D = 0;%死亡患者数量
E = 0;%潜伏者
S = N-I;%易感染者
Q = 0;%隔离者人数
Iq = I+Q;%现存总患病人数
F = 0;%自我隔离人数
sum_I = 1;%累计感染人数
a = 20;%感染者平均每日接触人数
b = 0.03;%平均感染率
h = a*b;%传染系数(以SARS为标准)
i = 0.125;%潜伏者患病概率
r = 0.1;%康复概率
k = 0.05;%死亡概率
r1 =r*1.15;%隔离者治愈率
q = 0.9;%隔离速率
d1 = k*0.05;%隔离者死亡率
f = 0.3;%自我隔离速率
day=31;%采取控制措施的天数
c = 0.05;%转阴率

T = 1:200;
for idx = 1:length(T)-1
    S(idx+1) = S(idx)-h*I(idx)*S(idx)/N-h*E(idx)*S(idx)/N+c*E(idx);%易感人数迭代
    E(idx+1) = E(idx)+h*I(idx)*S(idx)/N+h*E(idx)*S(idx)/N-i*E(idx)-c*E(idx);%潜伏者人数迭代
    I(idx+1) = I(idx)+i*E(idx)-(r+k)*I(idx)-q*I(idx);%患病人数迭代
    R(idx+1) = R(idx)+r*I(idx)+r1*Q(idx);%康复人数迭代
    D(idx+1) = D(idx)+k*I(idx)+d1*Q(idx);%死亡患者人数迭代
    Q(idx+1) = Q(idx)+q*I(idx)-r1*Q(idx)-d1*Q(idx);%隔离人数迭代
    Iq(idx+1) = I(idx)+Q(idx);%现存总患病人数迭代
    if idx == day
        a = 5;%采取控制措施后感染者平均接触人数
        h = a*b;%采取控制措施后感染系数
    end
    if idx>=day
        S(idx+1) = S(idx)-f*S(idx);%采取控制措施后潜伏者人数迭代
    end
    sum_I(idx+1) = sum_I(idx) + i*E(idx);%累计患病人数迭代(累计患病人数=前一天的患病人数+新增患病)
end
plot(T,E,T,I,T,R,T,D,T,Iq,T,sum_I);
grid on;
xlabel('日期');
ylabel('人数');
legend('潜伏者','感染者','康复者','死亡者','总感染人数','累计感染人数');
title('SEIR模型第三次修正');

六、模型检验

  带入上面的参数,将结果与国内实际情况对比
在这里插入图片描述
  可以看出,模型成功预测了爆发时间(19年12月前后),拐点的到达时间,最终的总感染人数,总死亡人数,总治愈人数等。


  修改参数,与美国实际情况对比
  使N=330000000,转病率i=0.1,康复率r=0.09,死亡率k=0.02,医疗隔离速率q=0.2,自我隔离速率f=0.005,在第29天采取管制措施,其余参数与上面一致。
在这里插入图片描述
  以上数据均截止至5月7日


七、总结

  优点:该模型预测最终患病人数、最终死亡人数、拐点时间较为准确,可以准确判断疫情带来的影响。不但如此,模型可以根据数据估算出当前已经携带病毒的总人数(感染者与潜伏者的总数),由此可以进一步确定应对措施。
  缺点:该趋势预测模型由于考虑的参数比较多,所以会存在一定的计算误差。而且由于对疫情考虑过于理想,所以对日存在患者数的预测不是特别准确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于改进SEIR模型的病毒传播动力学建模与疫情预测分析(以COVID-19新冠病毒为例,超详细,带matlab源码) 的相关文章

  • 如何使用 MATLAB 的“等值面”函数创建三角球体

    如何创建一个三角球体 其中每个三角形的面面积相同 我想要这样的东西 http imageshack us a img198 5041 71183923 png http imageshack us a img198 5041 7118392
  • 通过 h5py 将 matlab v7.3 文件读入 python numpy 数组列表

    我知道以前已经有人问过这个问题 但在我看来 仍然没有答案可以解释正在发生的事情 并且不适用于我的情况 我有一个 matlab v7 3 文件 其结构如下 gt rank lt 1x454 cell gt gt each element is
  • 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

    有没有办法在 MATLAB 中打开 pcode 文件 p 如果 开放 是指edit 那么当然不是 pcode 中的 p 代表 受保护 其主要设计目标是在保护其源代码的同时部署功能组件 如果 开放 是指run 那么当然是的 引用手册 http
  • ODE 时间 Matlab 与 R

    如果在 matlab 中使用可变时间步长求解器 例如 ODE45 我会定义输出的时间跨度 即times 0 50 matlab 将返回 0 到 50 之间不同时间步长的结果 然而在 R 中 我似乎必须定义我希望 ODE 返回结果的时间点 即
  • 图像分析-光纤识别

    我是图像分析新手 您知道如何以仅获取纤维的方式对该图像进行二值化吗 我尝试过不同的阈值技术等 但没有成功 我不介意应该使用什么工具 但我更喜欢 NET or Matlab PS 我不知道该把答案放在哪里 所以我把它放在StackOverfl
  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • 在 MATLAB 中检索 spfun、cellfun、arrayfun 等中的元素索引

    有什么办法可以找回index调用函数的元素的cellfun arrayfun or spfun行为 即检索函数范围内元素的索引 为了简单起见 假设我有以下玩具示例 S spdiags 1 4 0 4 4 f spfun x 2 x S 它构
  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • MATLAB中如何画水平线和垂直线?

    我目前正在尝试在 MATLAB 中绘制简单的垂直线和水平线 例如 我想绘制线 y 245 我该怎么做呢 MATLAB 根据您提供的向量逐点进行绘图 因此 要创建一条水平线 您需要改变x同时保持y对于垂直线恒定 反之亦然 xh 0 10 yh
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • MATLAB 中最有效的矩阵求逆

    在 MATLAB 中计算某个方阵 A 的逆矩阵时 使用 Ai inv A should be the same as Ai A 1 MATLAB 通常会通知我这不是最有效的求逆方法 那么什么是更有效率的呢 如果我有一个方程系统 可能会使用
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • Simulink 仿真引擎如何工作?

    我想了解 Simulink 仿真引擎的工作原理 它是否使用离散事件模拟机制 那么如何处理连续时间 它是否依赖于基于静态循环的代码生成 或者 在第一个周期之前 它会计算出块的执行顺序 从不需要任何其他块输入的块开始 每个周期 它都会根据输入和
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • MATLAB 特征函数

    我很好奇哪里可以找到完整的描述FEATURE功能 它接受哪些论点 没有找到文档 我只听说过memstats and getpid 还要别的吗 gt gt which feature built in undocumented 注意 更完整的
  • 如何在 Matlab 中将数组打印到 .txt 文件?

    我才刚刚开始学习Matlab 所以这个问题可能非常基本 我有一个变量 a 2 3 3 422 6 121 9 4 55 我希望将值输出到 txt 文件 如下所示 2 3 3 422 6 121 9 4 55 我怎样才能做到这一点 fid f
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • 使用符号求解器仅求解某些变量

    我正在尝试在 MATLAB 中求解包含 3 个变量和 5 个常量的方程组 是否可以使用solve求解三个变量 同时保持常量为符号而不用数值替换它们 当您使用SOLVE http www mathworks com access helpde
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma

随机推荐

  • unity+vuforia+二维码识别

    Easy Code Scanner 下载地址 Easy Code Scanner v2 3 本文转载自http blog csdn net puremilk684 article details 51479245 经本人验证 可以在安卓平台
  • .NET使用MQTT通信实例

    最近项目里面需要用到MQTT 刚开始听到这个词一脸茫然 不知道是什么 最后通过自己百度整理一点资料 希望最大家有帮助 在这里需要引用MQTTnet 可在解决方案在右键单击 选择 管理解决方案的 NuGet 程序包 在 浏览 选项卡下面搜索
  • AttributeError: module ‘tensorflow‘ has no attribute ‘Session‘

    代码错误 Traceback most recent call last File D PyCharm PythonProject DRL Networking master DRL Networking master IPDPS2020
  • Real-Time Rendering——9.11 Wave Optics BRDF Models波动光学BRDF模型

    The models we have discussed in the last few sections rely on geometrical optics which treats light as propagating in ra
  • 在Linux中安装nodejs(未编译版安装方法)

    技术背景 Linux安装 nodejs 总的来说 有两种方法 第一种是安装未编译版本 然后自行编译在安装 第二种是直接安装编译版本 推荐 但作为笔记 我两种都得写 那种适合自己 自行挑选 废话不多说 我们直接上步骤 第一步 执行 wget
  • vue.js—定义全局变量、函数

    废话不多说 直接上代码 以便以后学习查看 一 全局变量 原理 1 单独新建一个全局变量模块文件 模块中定义一些变量初始状态 用export default 暴露出去 2 在main js中引入 并通过Vue prototype挂载到vue实
  • Fragment生命周期

    http blog csdn net forever crying article details 8238863 官网帮助文档链接 http developer Android com guide components fragments
  • WindowsFormsHost控件

    WPF和WinForms是两个不同的UI框架 都是由Microsoft创建的 WPF是WinForms的一个更现代的替代品 WinForms是第一个 NET UI框架 为了在两者之间轻松过渡 Microsoft确保WinForms控件仍然可
  • 我的编程语言经历

    Alan Perlis 说过 一种不改变你编程的思维方式的语言 不值得去学 虽然写了这么多年程序 用了这么多的语言 但我自认还没悟道编程语言如何改变我的思维方式 几天前 我需要用python来为 ledisdb 写一个客户端 我突然发现 对
  • adc读出的数据和输入电压不匹配

    1 参考电压输入有误 1 stm8和stm32 模拟电源输入的电压有问题 或者精度设置出错 导致最终电压参考有误 最终adc值出错 2 华大的芯片还多了一种可能 就是adc的参考源选择错误 可选的参考源包括内部1 5v参考 2 5v参考 外
  • 创业小记:终于开发了个有点希望的产品了

    过了3个月了 做了8个产品 有一个产品 有点起色 在7月有290刀的收入 3个月时间了 打算简单复盘一下 一个字 抄 二个字 参考 三个字 微创新 我是个典型的技术同学 我不建议跟我一样背景的人从开发自己有需求的产品开始 这是主流论调 就是
  • Java JDBC (MySQL5.7)

    文章目录 第一章 JDBC简介 1 JDBC的好处 第二章 JDBC使用 1 使用步骤 2 普通方式实现代码 3 优化为工具类 4 使用数据库连接池Druid 第三章 参考资料 第一章 JDBC简介 Java DataBase Connec
  • mysql distinct和order by 一起用时,order by的字段必须在select中

    原因 1 首先 在MySQL中 distinct 的执行顺序高于 order by 2 第二 distinct 执行时会对查询的记录进行去重 产生一张虚拟的临时表 3 第三 order by 执行时对查询的虚拟临时表进行排序 产生新的虚拟临
  • Windows下MySQL免安装版的下载与配置

    因为自己学习开发的需求 需要在本地安装MySQL数据库用来做本地测试 对于个人开发者 可以下载MySQL Community Server版本 该版本是免费的 安装和配置方法如下 MySQL Server下载地址 https dev mys
  • 算法通关村-----快速排序的原理和实现

    快速排序介绍 快速排序是一种经典高效的排序方法 是分治策略在排序上的具体体现 将一个大的待排序列分割成若干个小的有序序列 最终将各个小的有序序列合并成一个大的有序序列 快速排序的实现原理 选择一个基准值 将小于基准值的元素放在基准值左侧 大
  • 程序员疯抢的 Java 面试宝典(PDF 版)限时开源,别把大厂想的那么难,关键是你准备得如何

    Java 面试 2022 届高校毕业生规模预计 1076 万人 同比增加 167 万人 对于 22 届的同学们来说 今年下半年大规模进行的秋招是获得全职 Offer 的最重要的途径 对于程序员来说 大家都知道校招难度相对于社招来说会有所降低
  • Windows IIS服务器建站/网站配置全图文流程(新手必备!) 一条龙

    阿里ECS云服务器购买配置全教程 本文提供全图文流程 中文翻译 Chinar 坚持将简单的生活方式 带给世人 拥有更好的阅读体验 高分辨率用户请根据需求调整网页缩放比例 Chinar 心分享 心创新 助力快速完成服务器的购买 配置 以及网站
  • vite 和 webpack 优缺点对比

    Vite 和 Webpack 都是前端构建工具 它们有一些相似之处 也有一些不同之处 下面是 Vite 和 Webpack 的优缺点对比 Vite 的优点 快速的开发者体验 Vite 可以实现快速的冷启动和热更新 使开发者可以迅速地获取反馈
  • [QT编程系列-21]:基本框架 - QT常见数据结构:QString、QList、QVector、QMap、QHash、QSet、QPair详解

    目录 1 QString 2 QList 3 QVector 4 QMap 5 QHash 6 QSet 7 QPair 1 QString QString是Qt中用于存储和操作字符串的类 它提供了丰富的字符串处理方法和功能 以下是QStr
  • 基于改进SEIR模型的病毒传播动力学建模与疫情预测分析(以COVID-19新冠病毒为例,超详细,带matlab源码)

    文章目录 前言 一 数学基础知识 符号定义 二 传统SEIR模型的建立与求解 1 经典的SEIR传播动力学模型建立 2 根据经典的SEIR模型列出微分方程并求解 三 SEIR模型第一次修正 1 模型建立 2 模型求解 四 SEIR模型的第二