广义曼德勃罗特集的探索与交互式可视化

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 这篇文章介绍了如何使用Python和matplotlib库创建广义曼德勃罗特集的交互式可视化。作者探讨了曼德勃罗特集的基本概念,包括其自相似性和复杂边界,并扩展到广义集合,其中幂运算指数可以是任意复数。通过提供的Python代码示例,读者可以学习如何绘制并实现鼠标驱动的放大缩小功能,从而深入探索这个数学结构的细节。文章鼓励读者修改指数以观察不同形态,并提供了相关参考资料链接。


该文章是我在2014年发布在某sdn的,搬运过来。


广义曼德勃罗特集的探索与交互式可视化


引言

曼德勃罗特集(Mandelbrot Set)以其复杂的边界和无限的自相似性而闻名,它是分形几何中的一个经典实例,展现了数学与艺术的完美结合。本篇文章将引导你通过Python编程,结合matplotlib库,实现广义曼德勃罗特集的可视化,并添加放大缩小功能,使读者能够互动探索这个数学奇观的细节。


广义曼德勃罗特集的定义

传统的曼德勃罗特集由复数 c 的集合构成,对于每一个 c,若序列 𝑧𝑛+1=𝑧𝑛^2+𝑐 对于任意 n 都保持有界,则 c 属于曼德勃罗特集。然而,在广义曼德勃罗特集中,幂运算的指数可以是任意复数,例如 1+5𝑗,这为我们打开了探索更多奇异结构的大门。


image.png


Python 实现

首先,我们需要导入必要的Python库,包括numpy用于数值计算,matplotlib用于绘图,以及time库用于测量绘制时间。

Python

1import numpy as np
2import matplotlib.pyplot as plt
3from matplotlib import cm
4import time

接着,定义绘制广义曼德勃罗特集的函数,这里我们使用了两种方法来实现,一种是基于迭代次数的规范化处理,另一种则是基本的迭代绘制。

Python

1def draw_mandelbrot2(cx, cy, d, N=600):
2    x0, x1, y0, y1 = cx-d, cx+d, cy-d, cy+d 
3    y, x = np.ogrid[y0:y1:N*1j, x0:x1:N*1j]
4    c = x + y*1j
5    smooth_mand = np.frompyfunc(smooth_iter_point,1,1)(c).astype(np.float)
6    plt.imshow(smooth_mand, cmap=cm.Blues_r, extent=[x0,x1,y1,y0])
7    plt.axis('off')
8    plt.show()
9
10def smooth_iter_point(c):
11    z = c
12    d = 1+5j  # 幂运算的指数
13    for i in range(1, 20):
14        if abs(z) > 10: break 
15        z = z**d + c
16    absz = abs(z)
17    if absz > 2.0:
18        mu = i - log(log(abs(z),2),2)
19    else:
20        mu = i
21    return mu

为了增加交互性,我们利用matplotlib的事件处理机制,实现基于鼠标的放大和缩小功能。

Python

1def on_press(event):
2    global g_size
3    if not (event.xdata and event.ydata):
4        return
5    if event.button == 1:  # 左键:放大
6        g_size /= 2
7    elif event.button == 3:  # 右键:缩小
8        g_size *= 2
9    draw_mandelbrot2(event.xdata, event.ydata, g_size)

最后,初始化画布并连接鼠标事件处理器。

Python

1fig, ax = plt.subplots()
2g_size = 2.5
3fig.canvas.mpl_connect('button_press_event', on_press)
4draw_mandelbrot2(0,0,g_size)
5plt.show()

运行与探索

运行上述代码,你将看到一个充满细节的广义曼德勃罗特集图像。通过鼠标左键和右键,你可以自由地放大和缩小,探索这个数学世界的奥秘。

结语

通过本篇技术博客,我们不仅实现了广义曼德勃罗特集的可视化,还引入了交互式放大缩小功能,为数学探索提供了生动的工具。这不仅是一次编程实践,也是对数学之美的直观体验。鼓励读者尝试修改指数值,探索不同幂次下的曼德勃罗特集形态,享受数学与编程带来的乐趣。

参考资料

相关文章
|
Linux Docker 容器
|
8月前
|
人工智能 运维 定位技术
【微笑讲堂】AI时代的Geo优化:掌握这些技能,让你的内容被智能引擎“偏爱”
大家好,我是微笑老师!本期讲解“Geo都需要掌握哪些技能”。随着AI搜索兴起,GEO(生成式引擎优化)正取代传统SEO,核心在于让内容被AI“读懂、信任、引用”。需掌握四大技能:结构化数据工程、多模态语义对齐、动态知识图谱运维、权威信源建设。从“被找到”到“被引用”,GEO与SEO融合进化,助力内容在AI时代脱颖而出。未来已来,你准备好了吗?
1219 8
|
11月前
|
设计模式 Kubernetes Go
​​什么是Golang项目的“主包精简,逻辑外置”?​
“主包精简,逻辑外置”是Go语言项目的一种设计原则,强调将程序入口保持简单,核心逻辑拆分至其他包,以提升代码可维护性、可测试性及扩展性,适用于CLI工具、Web服务等场景。
256 7
|
10月前
|
人工智能 程序员 开发工具
女朋友说“好累”,我连夜做了一个 APP
简介:本文分享了作者如何通过一句话,利用“通义灵码”快速开发出一个实用的打卡提醒工具,全程几乎无需手动操作,展示了智能开发工具在简化编程、实现创意落地方面的强大能力。
332 0
|
druid NoSQL Redis
后台组件-配置
配置组件集成了平台所需的各类公用配置
|
数据采集 消息中间件 人工智能
AI Agent:构建以数据为中心的智能体
在过去一年里大模型领域主要有两大领域的热点,一个是 LLM,几乎每月速度革新,大家关心的是效果和成本。另一个是 AI Agent,大家尝试解决各个领域应用问题,大家关心的是场景和竞争力。下面我们重点分享一下 AI Agent 的趋势和实践。
2209 13
|
存储 人工智能 JavaScript
构建企业AI的信任与信心基石:从认知到实践的全面升级
本文探讨企业在人工智能(AI)广泛应用背景下面临的信任与信心挑战,提出通过数据安全、技术透明度及技能认证构建信任体系。重点介绍生成式人工智能认证(GAI),其能助力企业培养AI人才,提升团队专业能力。文章还建议企业加强内部培训、外部合作与实战应用评估,全方位推动AI战略落地,为企业发展提供支持。
|
传感器 NoSQL 物联网
嵌入式开发系统学习——干货分享(一)
嵌入式开发系统学习——干货分享(一)
623 0
|
缓存 供应链 安全
淘宝API接口调用:案例分析与最佳实践(续)
淘宝API接口是连接商家与淘宝平台强大功能的重要桥梁。通过案例分析和最佳实践的分享,我们希望商家能够更深入地理解如何有效地使用这些API来优化电商业务。随着技术的不断进步,淘宝API的功能将会越来越丰富,而商家面临的挑战也会越来越大。因此,商家需要不断地学习新技术、探索新方法,并且不断完善自己的API使用策略,以便更好地适应市场的变化,赢得竞争的优势。
|
机器学习/深度学习 人工智能 搜索推荐
构建未来:AI驱动的自适应教育平台
【4月更文挑战第30天】 随着人工智能技术的迅猛发展,其在教育领域的应用正逐步从理论探索走向实践落地。本文将详细阐述一个基于AI技术的自适应学习平台的设计理念、核心功能以及潜在影响。该平台利用机器学习算法分析学生的学习行为和成绩,动态调整教学内容和策略,以实现个性化教学。研究结果表明,AI辅助的自适应学习能够显著提高学习效率,同时为教师提供强有力的教学辅助工具。

热门文章

最新文章