física computacional 2 início da programação, gerar sequências · física computacional 2...

17
Física Computacional 2 Física Computacional 2 Início da programação, Início da programação, Gerar sequências Gerar sequências 1. Particularidades da programação a. arquitectura de Von Neumann b. ciclos c. operações, lvalues e rvalues 2. Uma aplicação direta: os mapas do Intervalo a. Mapa de Malthus b. Mapa logístico c. Caos d. Pseudo Geradores de Números Aleatórios (PRNG) [email protected] 25-09-17 1 Física Computacional - MEFT IST UTL – P. Bicudo

Upload: lenhu

Post on 16-Nov-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Física Computacional 2Física Computacional 2Início da programação,Início da programação,

Gerar sequências Gerar sequências

1. Particularidades da programaçãoa. arquitectura de Von Neumannb. ciclosc. operações, lvalues e rvalues

2. Uma aplicação direta: os mapas do Intervalo a. Mapa de Malthusb. Mapa logísticoc. Caosd. Pseudo Geradores de Números Aleatórios (PRNG)

[email protected]

25-09-17 1Física Computacional - MEFT IST UTL – P. Bicudo

Particularidades da programaçãoParticularidades da programação

Particularidades da Programação◦ A programação teve um grande

desenvolvimento na 2ª guerra mundial, no Manhattan Project, i. e. o projeto para a bomba atómica dos USA.

◦ Na altura tornou-se necessário simular com sistemas eletrónicos a hidrodinâmica das bombas atómicas ou a metereologia no Atlântico Norte.

◦ A Arquitectura de Von Neumann foi então adoptada,

◦ http://en.wikipedia.org/wiki/Von_Neumann_architecture

◦ assim denominadada apesar de se basear no ENIAC anteriormente desenvolvido na U. Pennsylvania.

25-09-17 2Física Computacional - MEFT IST UTL – P. Bicudo

Particularidades da programaçãoParticularidades da programação25-09-17 3Física Computacional - MEFT IST UTL – P. Bicudo

Arquitectura de Von Neumann

Os ciclos ou loops◦ uma das vantagens dos sistemas numéricos são os ciclos pois

os computadores podem repetir comandos semelhantes muitas vezes,

◦ podemos ou arbitrar à partida quantos ciclos devem ser percorridos, ou então por uma condição patra sairmos do ciclo, em c++

◦ http://en.wikipedia.org/wiki/C++ ◦ podemos utilizar os comandos for, while ou do ... while para

ciclos

for◦ #include<iostream>

◦ void main(){◦   for(inti=1;i<=5;i++)  {◦ cout<<i<<endl;}◦ }

25-09-17 Física Computacional - MEFT IST UTL – P. Bicudo 4

Particularidades da programaçãoParticularidades da programação

while#include<iostream>

void main(){  int i=0;  

while(i<3) {   i++;    

cout<<"ABC"<<endl; }}

do while#include<iostream>

void main(){   int i=0;   do  {     i++;     cout<<"ABC"<<endl;  } while(i<3);}

25-09-17 Física Computacional - MEFT IST UTL – P. Bicudo 5

Particularidades da programaçãoParticularidades da programação

Operações, lvalues e rvalues◦ quando repetimos uma operação diversas vezes, por exemplo

num ciclo, também atualizamos os valores a guardar na memória repetidas vezes,

◦ a substituição de um valor numa memória tem assim uma notação condensada, recorrendo a lvalues e a rvalues,

◦ por exemplo a operação, x=x+1 onde x é o lvalue e x+i é o rvalue

◦ significa: pegue no valor que está na locação de memória correspondente á

variável x execute a operação adicionar 1 coloque o resultado na mesma locação de memória onde anteriormente

estava a variável x agora o valor da variável x mudou para o novo resultado.

25-09-17 Física Computacional - MEFT IST UTL – P. Bicudo 6

Particularidades da programaçãoParticularidades da programação

Assim uma equação x=x+1, que matematicamente estaria errada, computacionalmente faz todo o sentido.

Matematicamente não temos uma igualdade mas sim o que estamos a fazer é a aplicação, ou mapa, ◦ x x+1◦ e simultaneamente estamos a apagar o valor anterior de x, ◦ se não apagássemos o valor de x, na verdade estaíamos a construir uma

série com a iteração, ◦ xi+1=xi+1

Também observamos que as operações matemáticas mais usuais em C são utilizadas em c++ desde que se utilize a mesma biblioteca cmath agora com a sintaxe,◦ incluida no início do código com, ◦ #include <cmath>◦ http://www.cplusplus.com/reference/clibrary/cmath/

25-09-17 Física Computacional - MEFT IST UTL – P. Bicudo 7

Particularidades da programaçãoParticularidades da programação

Uma aplicação direta: Uma aplicação direta: os mapas do invervaloos mapas do invervalo

Uma aplicação direta: os mapas do intervalo ◦ um mapa do intervalo é uma bijeção, ou função unívoca de

um intervalo nele próprio x € [a, b] f(x) € [a, b] x x’=f(x)

◦ se iterarmos repetidamente este mapa na prática estamos a estudar o limite da sucessão correspondente

◦ assim a programação é ideal para estudar a convergência de sucessões matemáticas

◦ O que aproveitamos para, logo no 1º trabalho de computação estudamos, com códigos minimais no seu número de linhas, mapas do intervalo

25-09-17 8Física Computacional - MEFT IST UTL – P. Bicudo

O mapa de Malthus ◦ O primeiro mapa a estudarmos é o mapa de

Malthus, revendo que viveu entre o séculos XVIII e XIX, e que era notoriamente séptico em relação à natureza humana e ao futuro das sociedades.

◦ Um mapa do intervalo com caraterísticas maltusianas (não limitado), é o mapa,

• x r x◦ o que em c++ se escreve

• x = x * r◦ ou então numa notação ainda mais condensada,

• x *= r ◦ Esta sequência, geométrica, explode quando

• |r|>1, ◦ daí a sua natureza malthusiana,

• http://en.wikipedia.org/wiki/Malthusian_growth_model

25-09-17 9Física Computacional - MEFT IST UTL – P. Bicudo

Uma aplicação direta: Uma aplicação direta: os mapas do invervaloos mapas do invervalo

O mapa de Malthus ◦ A sequências exponenciais são muito

importantes também em todos os domínios biológicos, sociológicos, ecológicos, tecnológicos, e são abordadas no recente livro do Presidente do IST, Prof. Arlindo Oliveira,

◦ https://mitpress.mit.edu/books/digital-mind

25-09-17 10Física Computacional - MEFT IST UTL – P. Bicudo

Uma aplicação direta: Uma aplicação direta: os mapas do invervaloos mapas do invervalo

O mapa logístico ◦ Um mapa essencialmente tão fácil de programar como o de Malthus,

mas muito mais rico nos seus resultados, é o mapa logístico, ◦ http://en.wikipedia.org/wiki/Logistic_map ◦ pois constitui um caso muito simples de caos◦ a equação a iterar é, ◦ x r . x . (1-x)◦ o que em c++ se escreve◦ x= r * x * (1.-x)◦ Apesar de no limite de x ~0 este mapa tender para o de Malthus, a

riqueza do mapa logístico vem de a série correspondente poder ter diversos números de pontos de acumulação, em função do valor do parâmetro r.

◦ Notamos ambos estes mapas formam concebidos para simular a evolução de populações biológicas ou sociais.

◦ No entanto o mapa logístico não explode, mas sim é caótico quando r se aproxima de 4.

25-09-17 11Física Computacional - MEFT IST UTL – P. Bicudo

Uma aplicação direta: Uma aplicação direta: os mapas do invervaloos mapas do invervalo

Caos ◦ O caos foi primeiro descoberto quando Henri

Poincaré estudou as órbitas clássicas de um sistema solar de 3 corpos e concluiu que as órbitas não são estáveis.

◦ http://en.wikipedia.org/wiki/Chaos_theory ◦ A teoria do caos define um sistema caótico

como, sensível ás condições iniciais, com mistura topológica das órbitas, com órbitas periódicas densas.

25-09-17 12Física Computacional - MEFT IST UTL – P. Bicudo

◦ em particular o valor numa determinada iteração depende muito fortemente das condições iniciais, qualquer aberto do seu espaço das fases acaba por evoluir até qualquer outro aberto, e qualquer ponto do espaço das fases fica arbitrariamente próximo de uma órbita fechada.

Uma aplicação direta: Uma aplicação direta: os mapas do invervaloos mapas do invervalo

Os pontos de acumulação do mapa logístico

25-09-17 13Física Computacional - MEFT IST UTL – P. Bicudo

Uma aplicação direta: Uma aplicação direta: os mapas do invervaloos mapas do invervalo

Pseudo Geradores de Números Aleatórios (PRGN)◦ Os PRNG são muito importantes pois, não só a física ◦ Estatística desenvolvida por Boltzmann, mas também ◦ a mecânica quântica são intrinsecamente aleatórias.◦ Desde o início, tentou-se escrever códigos que simulem

números aleatórios. Um exemplo é o gerador linear congruencial, que é desenhado para ter um longo período,

◦ xi+1=(a xi+c)mod m

◦ Considerando a e m primos entre si, não existe repetição de valores de xi durante um período de m, logo é conveniente termos um valor de m muito grande. Por exemplo, para trabalhar com 32 bits,

◦ M=232, a=1664525, c=1013904223◦ O valor inicial ou seed x0 deve ainda mudar a cada simulação.

25-09-17 14Física Computacional - MEFT IST UTL – P. Bicudo

Uma aplicação direta: Uma aplicação direta: P. Geradores de Números AleatóriosP. Geradores de Números Aleatórios

◦ No entanto o LCG não é bem aleatório, tem um padrão regular:

abcissas: xi ordenadas xi+1, cotas: xi+2

25-09-17 15Física Computacional - MEFT IST UTL – P. Bicudo

Uma aplicação direta: Uma aplicação direta: P. Geradores de Números AleatóriosP. Geradores de Números Aleatórios

◦ Geradores mais sofisticados são ainda desenvolvidos, não só para simulações físicas mas principalmente para encriptação de na indústrias da defesa, bancária e de telecomunicações.

◦ Um bom gerador deve ser rápido e gastar pouca memória, ter um período longo, não ter um padrão detetável.

◦ Exemplos de PRNG utilizados frequentemente são o ''Linear Feedback Shift Register'' que trabalha com os registos

binários dos números, transladando os algarismos, o ''Mersenne Twister'' com um período de 219937 para o MT19937.

◦ Em criptografia os critérios são reforçados pedindo, o conhecimento dos k bits anteriores da sequência não deve permitir

adivinhar o bit seguinte com uma probabilidade superior a 50%, Do estado atual não deve ser possível adivinhar outros estados.

25-09-17 16Física Computacional - MEFT IST UTL – P. Bicudo

Uma aplicação direta: Uma aplicação direta: P. Geradores de Números AleatóriosP. Geradores de Números Aleatórios

◦ Controvérsia nos Cryptographically Secure PRNG: citando a wikipedia, http://en.wikipedia.org/wiki/Cryptographically_secure_pseudo-

random_number_generator '' The Guardian and The New York Times have reported that the

National Security Agency (NSA) inserted a CSPRNG into NIST SP 800-90 that had a backdoor which allows the NSA to readily decrypt material that was encrypted with the aid of Dual_EC_DRBG. Both papers report[6][7] that, as independent security experts long suspected,[8] the NSA has been introducing weaknesses into CSPRNG standard 800-90; this being confirmed for the first time by one of the top secret documents leaked to the Guardian by Edward Snowden. The NSA worked covertly to get its own version of the NIST draft security standard approved for worldwide use in 2006. The leaked document states that "eventually, NSA became the sole editor".''

25-09-17 17Física Computacional - MEFT IST UTL – P. Bicudo

Uma aplicação direta: Uma aplicação direta: P. Geradores de Números AleatóriosP. Geradores de Números Aleatórios