复动力系统 | 混沌 | Lozi 映射吸引子的可视化与交互式探索

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
简介: 该文介绍了一篇关于Lozi映射吸引子可视化和交互式探索的文章。Lozi映射是混沌理论中的一个模型,展示非线性动力系统的复杂性。通过Python和matplotlib,作者实现了Lozi映射的可视化,并添加交互功能,允许用户缩放以详细观察混沌吸引子。文中还给出了Lozi映射的数学定义,并提供了Python代码示例,演示如何绘制和动态调整吸引子的显示。

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


Lozi 映射吸引子的可视化与交互式探索

引言

混沌理论是现代科学的一个迷人分支,它揭示了简单规则下系统行为的复杂性和不可预测性。Lozi映射作为混沌理论中的一个重要模型,展示了非线性动力学系统的奇异吸引子特性。本文将通过Python编程,结合matplotlib库,实现Lozi映射吸引子的可视化,并加入用户交互功能,使得读者能够通过放大和缩小操作,更直观地探索混沌吸引子的细节。

Lozi 映射简介

Lozi映射是由法国数学家Rene Lozi于1978年提出的,作为Logistic映射和Hénon映射的简化版本,它同样展示出了混沌行为。该映射由两个非线性差分方程定义,形式如下:

[ \begin{align*} x_{n+1} & = 1 - ax_n + y_n \ y_{n+1} & = bx_n \end{align*} ]

其中,𝑎a𝑏b 是控制参数,影响着系统的行为。为了观察混沌吸引子,通常选择参数 𝑎=1.7a=1.7𝑏=0.5b=0.5


image.png


Python 实现

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




# -*- coding: utf-8 -*-
 
#需要安装matplotlib、numpy等库才能运行
import numpy as np
import pylab as pl
import time
from matplotlib import cm
 
def iter_point2(x,y):
    #初始化公式的参数,需要改的话,可以改参数
    a = 1
    b = 1.75
    iter = 0 #初始化迭代次数
    for i in xrange(1, 10):
        iter = i
        dist = (x*x + y*y)  #计算摸长,看是否超过最大限度
        dist *= dist
        #print "dist:" + str(dist)
        if  dist > 200:  #如果超出了最大长度,就跳出循环,返回这个迭代次数
            break
        #临时保存一下x和y
        tempx = x
        tempy = y
        #这里是公式 X = a-b|x| + y ; Y = 0.3x;
        x = a - b*abs(tempx) + tempy
        y = 0.3*tempx
    return iter
    
#绘制图形时,以cx,xy为中心,距离为d
def draw_lozi(cx, cy, d):
    size = 400
    x0, x1, y0, y1 = cx-d, cx+d, cy-d, cy+d 
    y, x = np.ogrid[y1:y0:size*1j, x0:x1:size*1j] #使用范围生成数组,后面用这个进行迭代
    c = x + y*1j
    x.shape = -1 #转化成线性数组
    y.shape = -1
 
    start = time.clock()
    lozi = np.ones(c.shape)
    #遍历每一个点,计算迭代次数,赋值给数组lozi
    for j in range(0,size):
        for i in range(0,size):
            lozi[j][i] = iter_point2(x[i],y[j])
            pass
 
    print "time=",time.clock() - start
    #使用数组lozi,绘图, 使用蓝色调色板,显示到图上的坐标范围是x0,x1,y0,y1
    pl.imshow(lozi, cmap=cm.Blues_r, extent=[x0,x1,y0,y1])
    #不显示横纵坐标
    pl.gca().set_axis_off()
    #刷新画布
    pl.show()
    
#鼠标点击触发执行的函数
def on_press(event):
    global g_size
    print event
    print dir(event)
    newx = event.xdata
    newy = event.ydata
    print newx
    print newy
    
    #不合理的鼠标点击,直接返回,不绘制
    if newx == None or newy == None  or event.dblclick == True:
        return None
    #不合理的鼠标点击,直接返回,不绘制
    if event.button == 1:  #button ==1 代表鼠标左键按下, 是放大图像
        g_size /= 2
    elif event.button == 3: #button == 3 代表鼠标右键按下, 是缩小图像
        g_size *= 2
    else:
        return None
    print g_size
    
    draw_lozi(newx,newy,g_size)
fig, ax = pl.subplots(1)
 
g_size = 4.5
 
#注册鼠标事件
fig.canvas.mpl_connect('button_press_event', on_press)
 
#初始绘制一个图
draw_lozi(0,0,g_size)



相关文章
|
7月前
|
机器学习/深度学习 并行计算 算法
龚大视频学习笔记:上帝视角看GPU(2)-逻辑上的模块划分
龚大视频学习笔记:上帝视角看GPU(2)-逻辑上的模块划分
126 0
|
6月前
|
数据可视化 算法 大数据
深入解析高斯过程:数学理论、重要概念和直观可视化全解
这篇文章探讨了高斯过程作为解决小数据问题的工具,介绍了多元高斯分布的基础和其边缘及条件分布的性质。文章通过线性回归与维度诅咒的问题引出高斯过程,展示如何使用高斯过程克服参数爆炸的问题。作者通过数学公式和可视化解释了高斯过程的理论,并使用Python的GPy库展示了在一维和多维数据上的高斯过程回归应用。高斯过程在数据稀疏时提供了一种有效的方法,但计算成本限制了其在大数据集上的应用。
337 1
|
6月前
技术经验分享:1.1显函数的图形
技术经验分享:1.1显函数的图形
21 0
|
7月前
|
数据采集 数据可视化
R语言用相关网络图可视化分析汽车配置和饮酒习惯
R语言用相关网络图可视化分析汽车配置和饮酒习惯
|
7月前
|
存储 缓存 算法
龚大视频学习笔记:上帝视角看GPU(1)-图形流水线基础
龚大视频学习笔记:上帝视角看GPU(1)-图形流水线基础
224 0
龚大视频学习笔记:上帝视角看GPU(1)-图形流水线基础
|
数据可视化 数据挖掘 Linux
转录组下游分析丨利用limma包进行差异表达分析,结果可视化绘制火山图和热图
转录组下游分析丨利用limma包进行差异表达分析,结果可视化绘制火山图和热图
|
数据可视化 C++
【变化检测】多时相遥感影像变化检测 Qt界面可视化 / 实现卷帘功能(附有完整代码)
【变化检测】多时相遥感影像变化检测 Qt界面可视化 / 实现卷帘功能(附有完整代码)
|
数据采集 异构计算
案例分享:Qt便携式致病菌快速检测仪(账号管理、实验过程、二维图表、历史数据、通讯管理、实验报告、中英文等等)
案例分享:Qt便携式致病菌快速检测仪(账号管理、实验过程、二维图表、历史数据、通讯管理、实验报告、中英文等等)
案例分享:Qt便携式致病菌快速检测仪(账号管理、实验过程、二维图表、历史数据、通讯管理、实验报告、中英文等等)
全区域治理-功能提取(简易版初稿)
全区域治理-功能提取(简易版初稿)
115 0
全区域治理-功能提取(简易版初稿)
|
算法 数据挖掘 Python
用python统计数据分析PAT甲乙级算法的考试和训练策略,附加横向设计图
python是做统计数据的好工具,在学习程序设计时,我们发现算法是一个难点,我们从’简单模拟’, ‘查找元素’, ‘图形输出’, ‘进制转换’, ‘字符串处理’,‘排序’,‘散列’,‘贪心’,‘二分’,‘two pointers’,‘其他’,‘数学’,‘链表’,几个角度分析算法的考试和训练策略,下一篇文章,分析数据结构的算法的考试和训练策略,如果你正在准备PAT甲乙级算法的考试和训练,会大有帮助,祝早日金榜题名。
用python统计数据分析PAT甲乙级算法的考试和训练策略,附加横向设计图