Aula 08 – Modelagem e simulação por...

76
1 Aula 08 – Modelagem e simulação por computador BC-0005 Bases Computacionais da Ciência Prof. Rodrigo Hausen (dos slides do prof. Jesús P. Mena-Chalco)

Transcript of Aula 08 – Modelagem e simulação por...

1

Aula 08 – Modelagem e simulação por computador

BC-0005 Bases Computacionais da Ciência

Prof. Rodrigo Hausen(dos slides do prof. Jesús P. Mena-Chalco)

2

Motivação

Modelagem e Simulação Computacional:● cada vez mais sendo utilizadas

3

Motivação

Modelagem e Simulação Computacional:● cada vez mais sendo utilizadas

Possibilidade de estudar sistemas reais de maneira aproximada, com base em modelos matemáticos que os representem

4

Motivação

Modelagem e Simulação Computacional:● cada vez mais sendo utilizadas

Possibilidade de estudar sistemas reais de maneira aproximada, com base em modelos matemáticos que os representem

Sistema:

Conjunto de elementosinterconectados queinteragem entre si.

5

Motivação

Modelagem e Simulação Computacional:● cada vez mais sendo utilizadas

Possibilidade de estudar sistemas reais de maneira aproximada, com base em modelos matemáticos que os representem

Tais modelos são implementados em simulações computacionais, que são executadas visando obter um melhor entendimento do sistema real.

6

Sistema

Há três formas de se estudar um sistema:

(1) Experimentos com o Sistema Real.(2) Experimentos com Modelos Físicos.(3) Experimentos com Modelos Matemáticos.

7

(1) Experimentos com sistema real

Feitos quando é possível trabalhar diretamente com o sistema real:

Atuando em seus elementos e/ou Alterando sua configuração para fazê-lo operar sob estas novas condições propostas

Exemplo:

experimento real de teste de colisão realizado em um veículo da VWFonte: youtu.be/Gix7ymymhTo

8

(1) Experimentos com sistema real

Algumas desvantagens:

Custo

Tempo para preparar e executar o experimento

Pode envolver riscoEx.: análise de situações de incêndio

Pode ser impossível de se tratar diretamente.Ex: análise de buracos negros

9

Experimentos com modelos

Em muitas situações é necessário construir um modelo para o sistema.

Modelo: uma representação parcial de um objeto, sistema ou ideia.

Após termos um modelo, realizamos experimentos para estudar o comportamento do sistema.

O resultado dos experimentos é uma aproximação do comportamento do sistema real.

10

(2) Experimentos com modelos físicos

Modelos físicos consideram:• experimentos com objetos reais• os objetos atuam como representações parciais do sistema que se deseja estudar

Exemplos: maquetes, aeromodelos, …

Fontes: https://upload.wikimedia.org/wikipedia/commons/d/d3/Maqueta_turbina_hidroel%C3%A9ctrica.jpg https://upload.wikimedia.org/wikipedia/commons/6/65/Koottava_DC3.JPG

11

(3) Experimentos com modelos matemáticos

Modelo matemático: descrição de um sistema usando linguagem matemática (funções, equações, etc.) no lugar de dispositivos físicos.

Procura representar as principais características e comportamentos do sistema alvo que se deseja analisar.

Como interpretar um modelo matemático?

• soluções analíticas, por álgebra, aritmética, trigonometria, técnicas de resolução de equações e inequações, etc.     Fornecerá expressões matemáticas que descrevem   exatamente o comportamento do modelo.

• soluções numéricas, que fornecem dados numéricos que   descrevem aproximadamente o comportamento do   modelo.

12

(3) Experimentos com modelos matemáticos

Ex.: um projétil é lançado de um ponto (x₀, y₀) na Terra, com velocidade inicial v₀ e com ângulo com a horizontal de θ. Desprezendo-se resistência do ar e vento, e considerando o movimento apenas em 2 dimensões, a sua posição no instante t é (x, y) onde:

x – x₀ = (v₀ cos θ) t

y – y₀ = (v₀ sen θ) t – ½ g t²

g é a aceleração da gravidade no local, aproximadamente 9,8 m/s² na maior parte da superfície terrestre.

Solução analítica: dados os valores iniciais, temos uma fórmula que nos dá a posição exata (x, y) em qualquer instante t.

13

(3) Experimentos com modelos matemáticos

Ex.: modelagem e simulação computacional de um teste de colisão.

https://www.youtube.com/watch?v=ffV3jjsw52g

Solução numérica: dada a configuração inicial, a cada instante temos aproximações numéricas para as propriedades de cada partícula simulada do carro: posição, velocidade, aceleração, etc.

Essas aproximações são usadas para mostrar graficamente o estado da simulação a cada instante de tempo simulado.

Conjectura de Collatz

Modelos numéricos e simulação

15

Conjectura de Collatz

Lothar Collatz imaginou o seguinte processo em 1937:1) Tome um inteiro positivo n2) Se n for 1, pare3) Se n for par, divida-o por 2. Caso contrário, tome 3n+1.4) Escreva esse novo número e considere-o agora como n5) Volte ao passo 2

Ex.: a sequência de Collatz para n=3 é

3, 10, 5, 16, 8, 4, 2, 1

Conjectura de Collatz: para qualquer inteiro positivo n, a sequência de Collatz sempre termina em 1.

Até hoje, ninguém sabe se a conjectura é verdadeira ou falsa. Só temos evidência experimental por simulação. Infelizmente, isto não nos dá certeza absoluta! Mas, se existir contra-exemplo, as simulações poderiam achá-lo.

16

Conjectura de Collatz

No Scilab:

function seq = collatz(n) seq(1) = n i = 1 // i = contador do número de iterações while n ~= 1 if modulo(n, 2) == 0 then n = n/2 else n = 3*n+1 end i = i + 1 seq(i) = n endendfunction

17

Conjectura de Collatz

No Scilab:

-->collatz(3) ans = 3. 10. 5. 16. 8. 4. 2. 1.

18

Conjectura de Collatz

Quantos elementos há na sequência de Collatz para n=97?

-->collatz(97) ans = 97. 292. 146. … 2. 1.

-->size(collatz(97),1) ans = 119.

19

Para casa: Atividade 11

Faça um programa em Scilab que:

● demonstre que a conjectura de Collatz vale para n até 1 milhão (10 ).⁶

● determine quantos elementos há na maior sequência de Collatz para n entre 1 e 10 e qual é o ⁶ n cuja sequência é a maior. (teste: para n entre 1 e 100, n=97 tem a maior sequência)

Dependendo do computador utilizado, seu programa deve levar algumas horas para terminar a execução.

Antes de tentar ir até 1 milhão, tente ir até 10², 10³, 10 , 10 ,⁴ ⁵5 ×   10⁵, etc. Pode ser que você não consiga ir até 1 milhão. Vá até onde conseguir (desde que não seja um valor muito baixo)

Entregue o programa e um mini-relatório no Tidia.

Estimando o valor de π

Modelos numéricos e simulação

21

Estimando o valor de π

Sabemos que o valor de Pi = 3.1415926535...

Podemos usar a simulação de um modelo estatístico para estimar este valor.

Esta estratégia é chamada método de Monte Carlo.

O modelo usa propriedades dos números aleatórios para calcular algumas áreas de interesse.

Em uma distribuição uniforme de números aleatórios, nenhum número tem maior chance de aparecer do que outro.

22

Estimando o valor de π

r

ℓ = 2r

Quadrado com circunferência inscrita

Acirc=π r2

Aquad=ℓ r2=(2 r2

)=4 r2

Acirc

Aquad

=π r2

4 r2 ⇒ π=4Acirc

Aquad

23

Estimando o valor de π

O método de Monte Carlo é utilizado para estimar a relação entre as áreas da circunferência e do quadrado.

Para tornar os cálculos mais simples, assume-se que o quadrado tenha um lado de tamanho ℓ = 1.

Assim, o raio da circunferência é r = ½ , logo r² = ¼

24

Estimando o valor de π

Utilizando um computador sorteamos alguns pares de números aleatórios no intervalo [0, 1].

Cada par de números representará as coordenadas x e y de um ponto que pertence à área do quadrado.

Podemos estimar as áreasdo quadrado contando quantos pontos caem sobre cada umadas figuras.

25

Dado um ponto A = (x, y) com coordenadas oriundas de um sorteio aleatório...

… podemos saber se o ponto está dentro ou fora da circunfe-rência de raio r e centro (xc, yc) se vale a desigualdade:

(x – xc)² + (y – yc)² ≤ r²

Estimando o valor de π

26

Dado um ponto A = (x, y) com coordenadas oriundas de um sorteio aleatório...

… podemos saber se o ponto está dentro ou fora da circunfe-rência de raio r e centro (xc, yc) se vale a desigualdade:

(x – xc)² + (y – yc)² ≤ r²

Ex.: sorteamos as coordenadas x = 0.8 e y = 0.75.

Estimando o valor de π

27

Dado um ponto A = (x, y) com coordenadas oriundas de um sorteio aleatório...

… podemos saber se o ponto está dentro ou fora da circunfe-rência de raio r e centro (xc, yc) se vale a desigualdade:

(x – xc)² + (y – yc)² ≤ r²

Ex.: sorteamos as coordenadas x = 0.8 e y = 0.75. Este ponto (x, y) está dentro da circunferência com raio r = ½ e centro (xc, yc) = (0.5, 0.5) pois

(0.8 – 0.5)² = 0.09

(0.75 – 0.5)² = 0.0625

Estimando o valor de π

28

Dado um ponto A = (x, y) com coordenadas oriundas de um sorteio aleatório...

… podemos saber se o ponto está dentro ou fora da circunfe-rência de raio r e centro (xc, yc) se vale a desigualdade:

(x – xc)² + (y – yc)² ≤ r²

Ex.: sorteamos as coordenadas x = 0.8 e y = 0.75. Este ponto (x, y) está dentro da circunferência com raio r = ½ e centro (xc, yc) = (0.5, 0.5) pois

(0.8 – 0.5)² = 0.09

(0.75 – 0.5)² = 0.0625

(x – xc)² + (y – yc)² = 0.01525

Estimando o valor de π

29

Dado um ponto A = (x, y) com coordenadas oriundas de um sorteio aleatório...

… podemos saber se o ponto está dentro ou fora da circunfe-rência de raio r e centro (xc, yc) se vale a desigualdade:

(x – xc)² + (y – yc)² ≤ r²

Ex.: sorteamos as coordenadas x = 0.8 e y = 0.75. Este ponto (x, y) está dentro da circunferência com raio r = ½ e centro (xc, yc) = (0.5, 0.5) pois

(0.8 – 0.5)² = 0.09

(0.75 – 0.5)² = 0.0625

(x – xc)² + (y – yc)² = 0.01525 ≤ ¼ = r²

Estimando o valor de π

30

Estimando o valor de π

Estratégia:● Sortear muitos pontos aleatórios, de forma a gerar

uma amostra considerável de pontos dispersos uniformemente no quadrado.

● Determinar se cada ponto encontra-se dentro ou fora da circunferência.

● Sendo os pontos dispersos uniformemente, a razão entre pontos dentro da circunferência e dentro do quadrado é próxima da razão entre as áreas.

● Ou seja:

π = 4Acirc

Aquad

≈ 4núm pontos na circunferência núm pontos no quadrado

31

Estimando o valor de Pi

No Scilab:

function estimativa = estima_pi(npontos) ncirc = 0 // núm. pontos na circunferência for i = 1:npontos x = rand() y = rand() if (x-0.5)^2 + (y-0.5)^2 <= 1/4 ncirc = ncirc + 1 end end estimativa = 4*ncirc/npontosendfunction

Jogo da Vida(Game of life)

Jogo de simulaçãoJogo que recria processo do mundo-real

http://to-campos.planetaclix.pt/fractal/celular/Vida.html

Modelos numéricos e simulação

Jogo da vida

O Jogo da Vida foi desenvolvido pelo matemático John Conway, em 1970

Conway explorava a ideia do construtor universal, de forma que uma máquina hipotética pudesse construir cópias de si mesma

O Jogo da Vida é um autômato celular que se desenvolve em um espaço de duas dimensões, dividido em células quadrangulares

É governado por regras simples que definem nascimentos, mortes e sobrevivências de células

Cada uma das células do universo bidimensional pode estar em dois estados possíveis:

- viva (cor branca)

- morta (cor preta)

Se uma célula sobrevive, morre ou nasce será determinado pelo número de vizinhos vivos ao redor de uma célula

Jogo da vida

Jogo da vida

auto

-org

aniz

ação

Cada célula pode ter oito células vizinhas

As regras envolvem três tópicos:

Sobrevivência: Se a quantidade de vizinhos vivos é igual a dois (02) ou três (03)

Nascimento: Se a célula está morta, mas tem três (03) vizinhos vivos, então ela nasce na próxima fase

Morte: Se a quantidade de vizinhos vivos é menor que dois (solidão) ou maior que três (superpopulação)

Jogo da vida de Conway

As regras não são arbitrárias: evitam comportamento caótico, crescimento infinito ou rápida estabilidade

Simulação

1

2

3

4

5

1 2 3 4 5

Estado inicial

Preto: vivaBranca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

Preto: viva

Branca: morta

Simulação

1 2 3 4 5

Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

1

2

3

4

5

Iteração 1

1 2 3 4 5

1

2

3

4

5

FIM

Preto: viva

Branca: morta

Exercício 01

Matriz A: Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

Iteração 1?

Utilize as regras de Conway para determinar a primeira iteração da população indicada pela matriz de A

Preto: viva

Branca: morta

Exercício 02

Matriz A: Estado inicial

Sobrevivência: 2<=N<=3Nascimento: N=3Morte: N<2 ou N>3

Iteração 2?

Utilize as regras de Conway para determinar as duas primeiras iterações da população indicada pela matriz de A

Preto: viva

Branca: morta

Exercício 01- Solução

Matriz A: Estado inicial Iteração 1

Avalição por pares:-1 ponto por erro

Exercício 02 - Solução

Iteração 2Iteração 1Estado inicial

Avalição por pares:-1 ponto por erro

Padrão spaceship

Abra no Scilab o arquivo: jogo_da_vida.sce

Parâmetros da função jogo_da_vida

univ: matriz n × n que representa o universo

numero_iteracoes: quantas iterações da simulação devem ser executadas

Exemplo de simulação no Scilab--> M = matriz_aleatoria(50);--> novoM = jogo_da_vida(M, 1000);

Jogo da vida

Durante a execução do Jogo da Vida as células organizam-se seguindo alguns padrões, formando objetos visuais

Existem vários tipos de padrões identificados, dentre eles:

Tipo I: estáveis

Tipo II: oscilatórios

Tipo III: spaceships

Padrões de comportamento

Os objetos do padrão Tipo I (estáveis) são aqueles que não mudam, que são estáticos

Os objetos estáveis ocorrem quando nenhuma célula viva tende a morrer, e nenhuma célula tende a nascer

Como exemplo tem-se os seguintes objetos: block, beehive, boat, ship, loaf

Padrão estável

Objeto Block

Objeto Boat

Objeto Ship

Objeto Loaf

Objeto Beehive

Boats

Loafs

Padrão estável

Objeto Spiral Objeto Hat

Objeto Pond

Padrão estável

Os objetos oscilatórios são formas que mudam da etapa em etapa até atingir um ciclo constante

O tipo mais simples é o oscilador de dois períodos, ou aqueles que se repetem após duas etapas

Padrão oscilatório

Objeto Blinker Objeto Toad

Padrões que se repetem depois de uma determinada sequência e retornam a seus estado original, e se transformam no espaço

Padrão spaceship

Objeto Glider

75

Para casa: Atividade 11

Faça um programa em Scilab que:

● demonstre que a conjectura de Collatz vale para n até 1 milhão (10 ).⁶

● determine quantos elementos há na maior sequência de Collatz para n entre 1 e 10 e qual é o ⁶ n cuja sequência é a maior. (teste: para n entre 1 e 100, n=97 tem a maior sequência)

Dependendo do computador utilizado, seu programa deve levar algumas horas para terminar a execução.

Antes de tentar ir até 1 milhão, tente ir até 10², 10³, 10 , 10 ,⁴ ⁵5 ×   10⁵, etc. Pode ser que você não consiga ir até 1 milhão. Vá até onde conseguir (desde que não seja um valor muito baixo)

Entregue o programa e um mini-relatório no Tidia.

76

Para saber mais

● Capítulos 8 e 9 do livro

● No Scilab:

1) Execute demo_gui()

2) Na janela que abrir, escolha “Simulação”

3) Escolha uma das simulações

● Código das simulações neste link

● Livro: “Modeling and Simulation in Scilab/Scicos” de Stephen L. Campbell, Jean-Philippe Chancelier e Ramine Nikoukhah.