Бифуркация и показатель Ляпунова в Python - PullRequest
0 голосов
/ 25 февраля 2019

Я относительный новичок, когда дело доходит до Python, и в настоящее время я пытаюсь выяснить, какой Python для моей проблемы.Я пытаюсь вычислить показатель Ляпунова бифуркационной диаграммы, которую я должен создать.

Уравнение X_ (n + 1) = a sin (pi x_ (n))где a = 0,9 (когда я вычисляю показатель степени)

В настоящее время это код, который я настроил для создания массива значений, становящихся большими.

import numpy as np
np.set_printoptions(threshold=np.nan)
import matplotlib.pyplot as plt

a = np.linspace(0,1) 
xn = np.array([.001], dtype = float)

for i in range(0,10000):
    y = a*np.sin(np.pi*xn[i])
    xn = np.append(xn,y)

plt.plot(a,xn[-1])

Однако оченьочевидно, когда я строю xn, я получаю безумный беспорядок точек вместо диаграммы бифуркации.Я надеялся, что смогу получить некоторые указания относительно того, как двигаться к правильной диаграмме, которую я надеюсь использовать, чтобы приблизиться к своей конечной цели.

Спасибо за любую помощь, я ценю это!

1 Ответ

0 голосов
/ 25 февраля 2019

Я не совсем уверен, чего вы пытаетесь достичь, и я не знаю достаточно о бифуркациях, чтобы действительно понять это самостоятельно, но я смог получить что-то, что, кажется, работает.Основное предостережение заключается в том, что если альфа начинается с менее чем 0,158, это не даст правильного результата.

import numpy as np
import matplotlib.pyplot as plt

x = [0.001]
a = np.linspace(0.2,1,100000)
for i in range(1,a.shape[0]):
    x.append(a[i]*np.sin(np.pi*x[i-1]))

fig = plt.figure(figsize=(8,4))
plt.scatter(a,x,s=0.1)

, который дает цифру: bifurcation output

...