1. 程式人生 > >lozi混沌對映吸引子,使用python的matplotlib繪製,可以放大和縮小

lozi混沌對映吸引子,使用python的matplotlib繪製,可以放大和縮小

廢話不多,需要安裝python,和matplotlib、numpy等庫,安裝不全的,自行安裝一下

在windows下測試通過

# -*- 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)




相關推薦

lozi混沌對映引子使用python的matplotlib繪製可以放大縮小

廢話不多,需要安裝python,和matplotlib、numpy等庫,安裝不全的,自行安裝一下 在windows下測試通過 # -*- coding: utf-8 -*- #需要安裝matplotlib、numpy等庫才能執行 import numpy as np

混沌引子

Henon對映的混沌吸引子 import matplotlib.pyplot as plt listx=[] listy=[] def Henon(x,y,n): for i in range(n): x1 = 1 - 1.4 * x ** 2 + y

小白python學習——matplotlib篇——繪製簡單點直線、顏色字型大小改變

1.直線: import matplotlib.pyplot as plt input_values=[1,2,3,4,5] squares = [1,4,9,16,25] #設定圖表標題,並給座標軸加上標籤 plt.plot(input_values,squares,linewidth=5)

【OpenCV+Python】輪廓檢測及繪製可用以生成對應於不規則形狀ROI區域的mask

Overview 在OpenCV中文論壇上很多人問到這樣的問題,如何對影象的不規則區域設定ROI,即設定敏感區域,以用來做相關的影象處理。 根據若干博文的整理及自己的點點經驗,在此進行簡單的歸納: 第一部分主要敘述C++中對於不規則區域設定ROImask的方法,第二部分主要敘述Pyt

大資料之scala(二) --- 對映元組簡單類內部類物件ObjectIdea中安裝scala外掛trait特質[介面]包的匯入

一、對映<Map> ----------------------------------------------------- 1.建立一個不可變的對映Map<k,v> ==> Map(k -> v) scala> val map

MFC按指定的資料繪製極座標高中的三角函式放大招呢~

void CDrawPoleCoordinateDlg::OnBnClickedButton1() { /**************************可調整的數值******************************/ float angle = 30;//每個扇形的角度

MyBatis關聯對映關係一對一一對多多對多

“縱許悠揚度朱戶,終愁人影隔窗紗” 前言 客觀世界中的物件很少有孤立存在的,例如班級,往往與班級的學生存在關聯關係,如果得到某個班級的例項,那麼應該可以直接獲取班級對應的全部學生。反過來,如果已經得到個學生的例項,那麼也應該可以訪問該學生對應的班級。這種例項之間的互相訪問就是關聯關係

python 動態陣列 list 記憶體對映leetcode 707真連結串列能打敗假連結串列嗎?

 為什麼寫這個,我在leetcode刷題(leetcode 707 設計連結串列 Design Linked List),有個設計連結串列的題,還特意加了尾指標,也試過雙鏈表,結果時間上還是跑不過別人的直接用list去append和insert的方案,所以隨便測一下動態陣列list的實現機

【原創】pygame學習筆記(1)----基本的線矩形圓形弧形繪製

PYgame的內容 (1)這個module很有意思 (2)書本至少來源於《Python遊戲程式設計入門》 (3)官方權威說明:https://www.pygame.org/docs/   下面的嘗試把各種圖形在一個程式裡繪製 注意點: (1)特別注意,比如引

【181121】VC++ 圖形繪製可設定線寬、顏色、樣式等原始碼

原始碼下載簡介 VC++ 圖形繪製,可設定線寬、顏色、樣式,通過本例將瞭解如何使用自定義畫筆定義線體的顏色,線寬,線形等,以及如何為程式中新增選項選單和選項設定對話方塊,如何使用標準顏色對話方塊,如何使用字型對話方塊,在選項對話方塊中實現預覽功能。實現選項對話方塊和視窗類中的資料交換。如何改

【轉自】mybatis入門基礎----高階對映(一對一一對多多對多)

  轉自:http://www.cnblogs.com/selene/p/4627446.html 可參考https://blog.csdn.net/liu_yanzhao/article/details/78573023 閱讀目錄 一:訂單商品資料模型 二、一

【Django1】基本知識URL對映檢視渲染模板應用

python版本3.5,django版本1.10 1 新建專案     django-admin.py startproject website2 2 啟動伺服器,檢視是否正常     manage.py runserver

Hibernate 環境 配置 對映資料庫 SQL server Mysql 資料庫 測試無誤

最近要消化的知識有點多,多以特地將筆記寫道 部落格中,方便檢視 需要到的hibernate jar 包 ,大家可以自行到官網下載 Hibernate 中 配置 Sqlserver 資料庫 <?xml version="1.0" encoding=

嵌入式Linux併發程式設計程序間通訊方式System V IPC物件ftok()共享記憶體使用步驟建立shmget()對映shmat()撤銷對映shmdt()控制shmctl()注意

文章目錄 1,System V IPC 2,使用IPC物件的大致流程 3,生成KEY值ftok() ftok示例 4,共享記憶體 4.1,共享記憶體使用步驟 4.2,共享記憶體建立 shmget()

mybatis-高階結果對映之一對一(多種方式 有沒提到的你找我)

mybatis的高階結果對映可以很輕鬆的幫助我們處理一對一, 一對多的資料關係。 1 資料準備 1.1 資料庫 建立以下的名為 mybatis 的資料庫, 並在其下建立4個表。 1.2 實體類, 介面和XML 以上為生成的專案結構。 2 一對一對映 建立

通過li-canvas輕鬆實現單圖、多圖、圓角圖繪製單行文字、多行文字等

Html5新增的canvas是個強大的功能, 估計大家平時都會用到,只是頻率不高,偶爾用它合成圖片,但是如果不進行封裝的話,程式碼會很亂,所以對canvas常用的畫圖、繪製文字、儲存功能進行了封裝,目前還比較滿意,能夠快速完成canvas繪圖任務,從容應對需求變更,只需進行簡單配置即可。 li-

Android 開發:繪製多條線帶快取帶觸控的圖表(基金圖表的實現)

對之前的幾篇文章裡的model進行補充 後期會把這個功能類,新增到這個框架裡 連結 Android開發框架,有興趣的可以下載下來看,這個框架會經常更新: public class BaseFundChartView extends View im

# Mybatis(四)表間關係分析高階對映(一對一一對多多對多) 菜鳥日記--day05(下_02)

Mybatis(四)表間關係分析,高階對映(一對一,一對多,多對多) 菜鳥日記–day05(下_02) 花了很多時間,去看sql複雜查詢,更新慢了 電腦斷電寫的太急,綠色補更 一、表間關係分析 1.分析資料庫表的方法 思路: 需要分模組的對多張表進行邏輯分析 表記錄

Scala 陣列(Array)列表(List)元組(Tuple)集(Set)對映(Map)迭代器(Iterator)

1. 陣列(Array) 陣列是程式設計中經常用到的資料結構,一般包括定長陣列和變長陣列。本教程旨在快速掌握最基礎和常用的知識,因此,只介紹定長陣列。 定長陣列,就是長度不變的陣列,在Scala中使用Array進行宣告,如下: val intValue

python實現並繪製 sigmoid函式tanh函式ReLU函式PReLU函式

python實現並繪製 sigmoid函式,tanh函式,ReLU函式,PReLU函式 # -*- coding:utf-8 -*- from matplotlib import pyplot as plt import numpy as np import mpl_toolkits.axisartist