Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Você pode me dar um exemplo de um sistema que apresente sensitividade as condições iniciais?

+1 voto
88 visitas

1 Resposta

0 votos
respondida Out 10, 2015 por danielcajueiro (5,666 pontos)  

Um sistema bem popular é considere o o Mapa de Henon:

\[\begin{cases}x_{t+1} = 1-a x_t^2 + y_t\\y_{t+1} = b x_t.\end{cases}\]

A figura apresentada abaixo mostra esse mapa depois de 5000 iterações.

Henon Map

Para implementar esse mapa utilizamos esse código:

import matplotlib.pyplot as plt
import numpy as np

def mapaHenon(x0,y0,n):
    x=np.empty(n)
    y=np.empty(n)
    a=1.4
    b=0.3
    x[0]=x0
    y[0]=y0
    for t in range(1,n):
        x[t]=1-a*np.power(x[t-1],2)+y[t-1]
        y[t]=b*x[t-1]
    return x,y

if __name__ == '__main__':

    n=5000
    x0=0.5
    y0=0.2
    [x,y]=mapaHenon(x0,y0,n)

    fig = plt.figure()
    ax = fig.add_subplot(111)  
    fig.hold()    

    ax.plot(x,y,'b.')
    ax.set_ylabel('y')
    ax.set_xlabel('x')  

Vamos agora ver como esse sistema responde a pequenas variações nas condições iniciais, plotando esse sistema ao longo do tempo. O sistema em azul foi iniciado com condições iniciais \((x_0,y_0)=(0.5,0.2)\) e o sistema em vermelho foi iniciado com condições iniciais \((x_0,y_0)=(0.5,0.201)\). Note que tem apenas uma diferença de 0.01 na variável \(y\) e, depois de pouco tempo, esses dois sistemas apresentam trajetórias totalmente diferentes.

Henon Map

O código utilizado para gerar essa figura foi esse aqui:

import matplotlib.pyplot as plt
import numpy as np

def mapaHenon(x0,y0,n):
    theTime=np.empty(n)
    x=np.empty(n)
    y=np.empty(n)
    a=1.4
    b=0.3
    theTime[0]=0
    x[0]=x0
    y[0]=y0
    for t in range(1,n):
        x[t]=1-a*np.power(x[t-1],2)+y[t-1]
        y[t]=b*x[t-1]
        theTime[t]=t
    return theTime,x,y

if __name__ == '__main__':

    n=50
    # Sistema 1
    x0=0.5
    y0=0.2
    [theTime,x1,y1]=mapaHenon(x0,y0,n)

    x0=0.5
    y0=0.201
    [theTime,x2,y2]=mapaHenon(x0,y0,n)

    fig = plt.figure()
    ax = fig.add_subplot(211)  
    fig.hold()    
    ax.plot(theTime,x1,'b.-')
    ax.plot(theTime,x2,'r.-')
    ax.set_ylabel('x')
    ax.set_xlabel('t')  

    ax = fig.add_subplot(212)  
    fig.hold()    
    ax.plot(theTime,y1,'b.-')
    ax.plot(theTime,y2,'r.-')
    ax.set_ylabel('y')
    ax.set_xlabel('t')  
...