No science, No life.

もっと科学を身近に

カオス (2)

Pythonの勉強のために、前回にMatlabで書いたロジスティック写像スクリプトを、Python 3.5で書き直してみます。Matlabの1から始まるインデックスに慣れているので、Pythonの0から始まるインデックスは混乱します・・・。

import matplotlib.pyplot as plt

# 漸化式の計算
a = 4
x = [0.9]
for i in range(99):
    x.append(a * x[i] * (1-x[i]))

# プロット
plt.plot(range(1,101,1),x)
plt.title('a = '+str(a))
plt.xlabel('n')
plt.ylabel('x[n]')

これで、下のようにa = 4のときの振舞いを描くことができました。

f:id:neocortex:20161204151818p:plain

つぎに、aの値を少しずつ変えたときの分岐図も描いてみます。

import matplotlib.pyplot as plt
import numpy as np

for a in np.arange(0,4,0.001):
    x = [0.9]
    for i in range(99):
        x.append(a * x[i] * (1-x[i]))
    plt.plot([a]*20,x[80:100],'b.')
    
plt.xlabel('a')
plt.ylabel('x[n]')

これで、下のように分岐図をかけました。Pythonはド素人ですが、ちょこちょこ勉強していこうと思います。

f:id:neocortex:20161204160140p:plain

入門 Python 3

入門 Python 3