扩散模型代码
时间: 2023-08-06 21:21:40 浏览: 45
以下是一个简单的扩散模型的 Python 代码示例:
``` python
import numpy as np
import matplotlib.pyplot as plt
# 设置参数
N = 1000 # 网格大小
p = 0.2 # 初始感染概率
r = 0.8 # 传播概率
steps = 100 # 模拟步数
# 初始化网格
grid = np.zeros((N, N))
grid[N//2, N//2] = 1 # 初始感染者
# 迭代模拟
for i in range(steps):
# 扩散模型
for x in range(N):
for y in range(N):
if grid[x, y] == 1: # 当前位置有感染者
for dx in range(-1, 2):
for dy in range(-1, 2):
# 判断邻居位置是否越界以及是否已经感染
if 0 <= x+dx < N and 0 <= y+dy < N and grid[x+dx, y+dy] == 0:
if np.random.random() < r: # 以一定概率传播感染
grid[x+dx, y+dy] = 1
# 随机感染
for x in range(N):
for y in range(N):
if grid[x, y] == 0: # 当前位置没有感染者
if np.random.random() < p: # 以一定概率感染
grid[x, y] = 1
# 可视化结果
plt.imshow(grid, cmap='seismic')
plt.axis('off')
plt.show()
```
该代码使用二维网格来表示空间,每个位置上的值表示该位置是否感染。在每一步迭代中,先使用扩散模型来传播感染,然后使用随机感染来模拟新的感染者的出现。最终将模拟结果可视化成图像。