Aula 08 – Modelagem e simulação
por computador
BC-0005
Bases Computacionais da Ciência
Prof. Rodrigo Hausen
2
Motivação
Modelagem e Simulação Computacional:
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 elementos interconectados que interagem entre si.
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
6
Sistema
Há três formas de se estudar um sistema:
(1) Experimentos com o Sistema Real.
(2) Experimentos com Modelos Físicos.
(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 VW
8
(1) Experimentos com sistema real
Algumas desvantagens:
Custo
Tempo para preparar e
executar o experimento
Pode envolver risco
Ex.: análise de situações de
incêndio
Pode ser impossível de se
tratar diretamente.
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
(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
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.
(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
Conjectura de Collatz
Lothar Collatz imaginou o seguinte processo em 1937: 1) Tome um inteiro positivo n
2) Se n for 1, pare
3) 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 n 5) 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
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 end endfunction
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.
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 π
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
A
circ=π
r
2A
quad=
ℓ r
2=(
2 r
2)=
4 r
2A
circA
quad=
π
r
24 r
2⇒
π=
4
A
circA
quadEstimando 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.
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 áreas
do quadrado contando quantos
pontos caem sobre cada uma das figuras.
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²
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.
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
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
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²
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:
π = 4 Acirc
Aquad ≈ 4
núm pontos na circunferência núm pontos no quadrado
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/npontos
Jogo da Vida
(Game of life)
Jogo de simulação
Jogo 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
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
rg an iz aç ãoCada 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
Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaSimulação
1 2 3 4 5 Estado inicial Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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: mortaSimulação
1 2 3 4 5 Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: N<2 ou N>3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Preto: viva Branca: mortaExercício 01
Matriz A: Estado inicial
Sobrevivência: 2<=N<=3 Nascimento: N=3 Morte: 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
Sobrevivência: 2<=N<=3Nascimento: N=3 Morte: N<2 ou N>3Utilize 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 2 Iteração 1
Estado inicial
Avalição por pares: -1 ponto por erro
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);
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
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 Boat Objeto Ship Objeto Loaf Objeto Beehive Boats
Padrão estável
Objeto Spiral Objeto Hat
Objeto Pond
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õ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
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.