Dynamics of a stochastic rumor propagation model incorporating media coverage and driven by Levy noise ´ 论文仿真代码
时间: 2024-02-24 14:54:19 浏览: 23
以下是使用MATLAB实现的基于Levy噪声的随机谣言传播模型仿真代码:
``` matlab
% 模型参数
N = 1000; % 总人数
I0 = 10; % 初始感染人数
T = 200; % 模拟时长
beta = 0.3; % 传播率
gamma = 0.1; % 恢复率
mu = 0.01; % 媒体报道强度
alpha = 1.5; % Levy指数
D = 1; % 扩散系数
dt = 0.1; % 时间步长
% 初始化
S = N - I0;
I = I0;
t = 0:dt:T;
x = zeros(size(t));
y = zeros(size(t));
z = zeros(size(t));
x(1) = S;
y(1) = I;
z(1) = 0;
% 模拟
for i = 2:length(t)
% 计算Levy步长
r = trnd(1, 1);
theta = unifrnd(0, 2*pi, 1);
l = (abs(r)^(-1/alpha)) * exp(1j*theta);
dx = real(l) * sqrt(2*D*dt);
dy = imag(l) * sqrt(2*D*dt);
% 计算SIR模型变化
dS = (-beta*S*I/N - mu*S) * dt;
dI = (beta*S*I/N - gamma*I - mu*I) * dt + dx;
dR = gamma*I*dt + dy;
% 计算媒体报道变化
dM = -mu*z(i-1)*dt + sqrt(mu*z(i-1)*dt)*randn();
S = S + dS;
I = I + dI;
R = N - S - I;
z(i) = z(i-1) + dM;
% 保存结果
x(i) = S;
y(i) = I;
end
% 绘制结果
plot(t, x, 'b-', 'LineWidth', 2);
hold on;
plot(t, y, 'r-', 'LineWidth', 2);
plot(t, R, 'g-', 'LineWidth', 2);
xlabel('Time');
ylabel('Population');
legend('Susceptible', 'Infected', 'Recovered');
```
该模型考虑了媒体报道的影响,其强度由参数mu控制。我们同样使用Levy噪声来模拟谣言的随机传播过程。最终,我们通过绘制S、I、R三个变量随时间的变化曲线来观察疫情的传播趋势。另外,我们还可以绘制媒体报道随时间的变化曲线,来了解媒体报道对谣言传播的影响。