元胞自动机

本文介绍了元胞自动机的基本概念,包括其离散的时间、空间和状态特性,以及在社会学中的群体行为模拟、图形学中的密码学研究和物理学中的复杂系统模拟。文章还展示了两个具体应用实例,如康威游戏和植物生长模型的元胞自动机实现。
摘要由CSDN通过智能技术生成

元胞自动机

定义:是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟复杂系统时空演化过程的能力。
应用:社会学: 元胞自动机经常用于研究个人行为的社会性, 流行 现象. 例如人口迁移, 公共场所内人员的疏散, 流行病传播。
图形学: 元胞自动机以其特有的结构的简单性, 内在的并行 性以及复杂计算的能力成为密码学中研究的热点方向之一。物理学:
在物理学中, 元胞自动机已成功的应用于流体, 磁 场, 电场, 热传导等的模拟

组成:元胞,元胞空间,元胞邻居,元胞边界,规则。

冯诺依曼邻居(4邻居) 摩尔型邻居(8邻居型)

元胞规则:根据元胞当前状态及邻居状态决定下一时刻该元胞状态。演化规则是元胞自动机的灵魂所在(最重要!!!)。

为什么设置元胞边界? 元胞自动机对每个元胞施加同样的规则,因此需要设置边界条件,使边界上的细胞与其他细胞具有相同的邻居数目

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述

cat 是把RGB三通道结合在一起(合并矩阵)最后成为一个真彩图像

drawnow 更新图窗

clc;clear;close; % 清除命令窗口,清除工作空间变量,关闭所有图形窗口
n=200; % 定义网格大小
z=zeros(n); % 创建一个全零矩阵
p=0.4; % 定义生存概率
se=rand(n)<0.4; % 创建一个随机矩阵,小于0.4的元素为1,大于0.4的元素为0,表示初始生命分布
sd=zeros(n+2); % 创建一个比原始网格大的矩阵,用于计算邻居

imagesc(cat(3,se,z,z)); % 显示初始生命分布

while 1>0 % 无限循环,直到用户停止
    sd(2:n+1,2:n+1)=se; % 将生命分布复制到大矩阵中
    sum=sd(1:n,2:n+1)+sd(1:n,1:n)+sd(1:n,3:n+2)+sd(3:n+2,2:n+1)+sd(3:n+2,1:n)+sd(3:n+2,3:n+2)+sd(2:n+1,1:n)+sd(2:n+1,3:n+2); % 计算每个单元格的邻居数量
    for i=1:n
        for j=1:n
            if sum(i,j)==3||sum(i,j)==2 % 如果一个单元格有2个或3个邻居,那么它在下一代中将是“生”的
                se(i,j)=1;
            else % 否则,它在下一代中将是“死”的
                se(i,j)=0;
            end
        end
    end
    imagesc(cat(3,se,z,z)); % 显示新的生命分布
    drawnow; % 更新图形窗口
end

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述

clc;clear;close;
n=300;
p_light=5e-6;
p_grow=1e-2;
UL=[n,1:n-1];
DR=[2:n,1];
veg=zeros(n);
imh=image(cat(3,veg,veg,veg));
for i = 1:3000
    sum=(veg(UL,:)==1)+(veg(DR,:)==1)+(veg(:,UL)==1)+(veg(:,DR)==1);
    veg=2*(veg==2)-((veg==2)&(sum>0|p_light>rand(n)))+2*((veg==0)&(p_grow>rand(n)))
    set(imh,'cdata',cat(3,(veg==1),(veg==2),zeros(n)));
    drawnow;
end

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值