介绍
今日北京雷暴雨,从闪电中想到了今天想发一篇关于模拟闪电的matlab文章,
闪电跟人类神经元链接的样子非常相似,它们都属于分形几何的范畴。
分形几何
分形几何是一种复杂的几何结构,它在不同的尺度上具有自相似性。即,无论从宏观还是微观层面观察,结构的形态都会显示出相似的模式
闪电的形成:
闪电是一种自然界的电现象,通常在雷暴中发生。当云层之间或云层与地面之间的电场强度超过空气的绝缘强度时,会产生电击穿,形成闪电。闪电在空中传播时会以一种分支状扩展,形成复杂的路径,这种路径的分形特征是由于电场的不均匀分布和路径中的阻力变化造成的。
人类神经系统:
人类神经系统由中枢神经系统(脑和脊髓)和周围神经系统组成。神经元是神经系统的基本单位,每个神经元都有复杂的树状结构,包括树突(接收信号)和轴突(传递信号)。这种树状结构的形成是为了最大化信号接收和传递的效率,也是分形几何的一种体现
人类神经和闪电类似的原因
优化信号传输:
闪电和神经系统都需要在复杂的环境中传输信号。分形几何结构有助于优化信号的路径。例如,闪电需要在空气中找到最小阻力的路径,而神经系统需要高效地传递神经冲动。
自然选择和进化:
在自然界中,分形结构是一种非常有效的组织形式。无论是闪电的自然形成,还是神经系统的生物进化,分形结构都是通过自然选择和适应性进化得以保留和优化的结果。
物理和生物系统的相似性:
闪电和神经系统尽管一个是物理现象,一个是生物系统,但它们都受到类似的物理和数学规律的支配。分形几何在这些系统中广泛存在,表明这些规律在不同的系统中都能发挥作用
代码
很遗憾,闪电效果并不是很理想,因为matlab并不是一款物理模拟引擎,我们尽量智能做到神似而非形似,也欢迎大家进行改进
function RealisticLightningSimulation()
% 设置图形窗口
figure;
axis([-1 1 0 2]);
hold on;
set(gca, 'Color', 'k');
title('Realistic Lightning Simulation');
xlabel('X');
ylabel('Y');
set(gca, 'XColor', 'w', 'YColor', 'w');
set(gcf, 'Color', 'k');
% 初始化闪电的起点
x_start = 0;
y_start = 2;
% 递归生成闪电
drawLightning(x_start, y_start, -pi/2, 0.5, 0.3, 0.05);
hold off;
end
function drawLightning(x_start, y_start, angle, length, deviation, min_length)
% 计算终点坐标
x_end = x_start + length * cos(angle);
y_end = y_start + length * sin(angle);
% 绘制闪电段
plot([x_start, x_end], [y_start, y_end], 'w', 'LineWidth', 2);
drawnow;
pause(0.01);
% 如果长度大于最小长度,继续生成分支
if length > min_length
% 添加随机偏移
angle1 = angle + deviation * (rand - 0.5);
angle2 = angle - deviation * (rand - 0.5);
% 递归调用生成新的闪电段
drawLightning(x_end, y_end, angle1, length * (0.7 + 0.1 * rand), deviation, min_length);
drawLightning(x_end, y_end, angle2, length * (0.7 + 0.1 * rand), deviation, min_length);
end
end
说明
RealisticLightningSimulation函数:
设置图形窗口,定义绘图区域和背景颜色。
初始化闪电的起点和起始角度。
调用递归函数drawLightning来生成和绘制更加分散和自然的闪电效果。
drawLightning函数:
计算闪电段的终点坐标。
绘制闪电段,并在图形窗口中逐步展示。
如果闪电段的长度大于最小长度,则继续生成分支。
添加随机偏移和不规则长度,以模拟自然的分形树结构
效果
求关注本人个人公众号
以下是本人刚开通的公众号,以后的完整代码,可能会放到公众号里,大家多多关注,不要迷路呦