Métodos Matemáticos e de Computação II VIII XI/2016
Sistemas Complexos 01/16 Foco de investigação Escala microscópica Comportamento individual Descrição dos constituintes Modelagem Escala macroscópica Comportamento coletivo Regularidades emergentes com tamanho
https://www.continuum.io/why-anaconda Simulações computacionais 02/16 Python (versão 2. ) Instalação do pacote Anaconda https://www.continuum.io/why-anaconda
https://www.continuum.io/why-anaconda Simulações computacionais 03/16 Python Simulação de agentes Processos iterativos Números aleatórios Complexidade Aleatoriedade
Python 04/16 Instalação - Anaconda Abertura de um terminal Linux (Ubuntu): Ctrl + Alt + t Mac: Applications / Utilities Windows: https://www.youtube.com/watch?v=jbvqcqb-hjk Nota: http://smallbusiness.chron.com/open-terminal-session-windows-7-56627.html Windows: dir Diretório1\Diretório2\ http://www.fabridinapoli.com http://switchtoamac.com/guides/images/utilities icon.png Linux/Mac: cd Diretório1/Diretório2/
Python 05/16 Passos para execução de um programa 1) Escrever / alterar o código 2) Salvar o programa 3) Executar (no terminal) python programa.py Nota: O arquivo programa.py deve estar no mesmo diretório onde o comando acima é executado
Python - Comando de impressão 06/16 Uso do comando print print 'Hello, world!' Hello, world! # O símbolo '#' indica comentário, # que não participa no programa
Python - Comando de impressão 06/16 Uso do comando print print 'Hello, world!' Hello, world! 1+2 i print '1+2' i = 0 print 'i' # O símbolo '#' indica comentário, # que não participa no programa 3 0 print 1+2 i = 0 print i
http://www.bcb.gov.br/htms/mecir/mcomemor/moeda50anosbc.png Lançamento de moeda 07/16 Lançamento de uma única moeda Uso dos comandos if e else Ideia Código (Python) Gerar número aleatório r [0.0, 1.0] Se r > 0.5: Escrever 'Cara' Caso contrário: Escrever 'Coroa'
http://www.bcb.gov.br/htms/mecir/mcomemor/moeda50anosbc.png Lançamento de moeda 07/16 Lançamento de uma única moeda Uso dos comandos if e else Ideia Código (Python) import random Gerar número aleatório r [0.0, 1.0] Se r > 0.5: Escrever 'Cara' Caso contrário: Escrever 'Coroa' r = random.uniform(0.0, 1.0) if r > 0.5: print 'Cara' else: print 'Coroa'
http://www.bcb.gov.br/htms/mecir/mcomemor/moeda50anosbc.png Lançamento de moeda 08/16 Lançamento de dez moedas Uso do comando for import random for i in range(10): r = random.uniform(0.0, 1.0) if r > 0.5: print 'Cara' else: print 'Coroa'
http://www.bcb.gov.br/htms/mecir/mcomemor/moeda50anosbc.png Lançamento de moeda 09/16 Lançamento de dez moedas Uso do comando while import random i = 0 # Armazenando 0 em i while i<10: r = random.uniform(0.0, 1.0) if r > 0.5: print 'Cara' else: print 'Coroa' i = i+1 # Armazenando i+1 em i
Duas urnas com N bolas E bolas na urna da esquerda Condição inicial D bolas na urna da direita Exemplo: Dinâmica (1) Escolhe-se aleatoriamente uma das N bolas (2) A bola escolhida é trocada de urna (3) Retorna a (1) 10/16 E + D = N E = 7 D = 3 N = 10
11/16 Arquivo ehrenfest.py E: Bleft D: Bright Ttot iterações (tempo total) t list: Lista para tempo left list: Lista para E (...) for t in range (1, Ttot+1): # Tempo: 1 a Ttot r = random.uniform(0.0, 1.0) if r < Bleft / float(bleft + Bright): Bleft -= 1 # Mesmo que Bleft = Bleft - 1 Bright += 1 # Mesmo que Bright = Bright + 1 else: Bleft += 1 Bright -= 1 t list.append(t) # Anexando t em t list left list.append(bleft) # Anexando Bleft em left list (...)
12/16 Arquivo ehrenfest.py Condição inicial: E = 10 e D = 0 Ttot = 100 Ttot = 5000
13/16 Ttot = 100 Ttot = 5000
13/16 Ttot = 100 Ttot = 5000 Situações extremas Intuição : Perda de memória e concentração ao redor de E+D 2
14/16 Aumento do número de bolas & diminuição de flutuações relativas
14/16 Aumento do número de bolas & diminuição de flutuações relativas 10 000 bolas e Ttot = 1 000 000
14/16 Aumento do número de bolas & diminuição de flutuações relativas 10 000 bolas e Ttot = 1 000 000 100 000 bolas e Ttot = 1 000 000
14/16 Aumento do número de bolas & diminuição de flutuações relativas 10 000 bolas e Ttot = 1 000 000 100 000 bolas e Ttot = 1 000 000
15/16 Arquivo: ehrenfest multirun.py Aumento do número de realizações (...) for n in range (run): # Repetições: run for t in range (1, Ttot+1): # Tempo: 1 a Ttot r = random.uniform(0.0, 1.0) if r < Bleft / float(bleft + Bright): Bleft -= 1 # Mesmo que Bleft = Bleft - 1 Bright += 1 # Mesmo que Bright = Bright + 1 else: Bleft += 1 Bright -= 1 (...)
16/16 Arquivo: ehrenfest multirun.py Aumento do número de realizações 1 iteração
16/16 Arquivo: ehrenfest multirun.py Aumento do número de realizações 1 iteração 10 iterações
16/16 Arquivo: ehrenfest multirun.py Aumento do número de realizações 1 iteração 10 iterações 1000 iterações Estimativa de incertezas