ludwig krippahl, 2009 programação para as ciências experimentais 2008/9 teórica 9
TRANSCRIPT
![Page 1: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/1.jpg)
Ludwig Krippahl, 2009
Programação para as Ciências Experimentais
2008/9
Teórica 9
![Page 2: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/2.jpg)
Ludwig Krippahl, 2009 2
Na aula de hoje...
Simulação• Formação de nanoestruturas
• Dissolução
• Solubilidade
![Page 3: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/3.jpg)
Ludwig Krippahl, 2009 3
Formação de nanoestruturas
Controlled Synthesis of 2-D and 3-D Dendritic PlatinumNanostructures, Yujiang Song et al, JACS 23/12/2003
![Page 4: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/4.jpg)
Ludwig Krippahl, 2009 4
Formação de nanoestruturas
![Page 5: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/5.jpg)
Ludwig Krippahl, 2009 5
Simular difusão em 2D
Movimento aleatório da partícula
![Page 6: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/6.jpg)
Ludwig Krippahl, 2009 6
Simular difusão em 2D
Superfície maior: “cyclic boundary”
![Page 7: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/7.jpg)
Ludwig Krippahl, 2009 7
Simular difusão em 2D
Regras de movimento:• partícula está em x, y.
• escolher aleatoriamente -1, +0, +1 para cada
![Page 8: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/8.jpg)
Ludwig Krippahl, 2009 8
Simular difusão em 2D
Regras de movimento:• partícula está em x, y.
• escolher aleatoriamente -1, +0, +1 para cada
• sai por um lado, entra pelo outro:• se >tamanho, coordenada = 1
• se <1, coordenada = tamanho
• Atenção• round(rand*2) ou floor(rand*3)?
• O round dá 50% de probabilidade de ser 1...
![Page 9: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/9.jpg)
Ludwig Krippahl, 2009 9
Simular difusão em 2D
Função movexy
function [x,y]=movexy(x,y,tamanho)
• Recebe coordenadas x, y e tamanho.
• Devolve coordenadas x, y depois de modificadas.
• Precisa de saber o tamanho para “dar a volta” se a coordenada sai da grelha.
![Page 10: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/10.jpg)
Ludwig Krippahl, 2009 10
Inicio da trajectória
A partícula vai começar no limite da grelha:
![Page 11: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/11.jpg)
Ludwig Krippahl, 2009 11
Inicio da trajectória
A partícula vai começar no limite da grelha:• Escolher x e y ao acaso, entre 1 e tamanho.
• x e y têm de ser inteiros.
• Escolher um r ao acaso entre 0 e 1.
• Conforme o r é <0.25, <0.5, <0.75 ou else x=1, x=tamanho, y=1, y=tamanho
![Page 12: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/12.jpg)
Ludwig Krippahl, 2009 12
Inicio da trajectória
• Conforme o r é <0.25, <0.5, <0.75 ou else x=1, x=tamanho, y=1, y=tamanho
25% probabilidade para cada lado
![Page 13: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/13.jpg)
Ludwig Krippahl, 2009 13
Inicio da trajectória
Função inicio
function [x,y]=inicio(tamanho)
• Recebe o tamanho da grelha e devolve as coordenadas iniciais da partícula geradas aleatoriamente, na fronteira da grelha.
![Page 14: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/14.jpg)
Ludwig Krippahl, 2009 14
Formação de nanoestruturas
A estrutura vai-se formando conforme partículas difundem pela membrana e se agregam.
Algoritmo: quando o movimento de uma partícula a levaria a uma posição da grelha já ocupada, a partícula fica imobilizada como parte da estrutura
![Page 15: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/15.jpg)
Ludwig Krippahl, 2009 15
Implementação
Função crescimento
function parts=crescimento(tamanho,particulas)
• Recebe o tamanho da grelha e o número de partículas na nanoestrutura. Devolve uma matriz de 2 colunas com as coordenadas x e y das partículas na estrutura.
![Page 16: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/16.jpg)
Ludwig Krippahl, 2009 16
Implementação
Exemplotamanho=20;
parts=crescimento(tamanho,40);
title([num2str(length(parts))," particulas"]);
axis([1,tamanho,1,tamanho],"equal");
plot(parts(:,1),parts(:,2),"or;;");
![Page 17: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/17.jpg)
Ludwig Krippahl, 2009 17
Implementação
Exemplo
![Page 18: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/18.jpg)
Ludwig Krippahl, 2009 18
Implementação
Representação da estrutura:• Matriz de duas colunas x, y.
Problema:• Para detectar se uma célula da grelha está
ocupada temos que ver todas as partículas já na estrutura. Isto cada vez que se move uma partícula. Pouco eficiente
![Page 19: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/19.jpg)
Ludwig Krippahl, 2009 19
Implementação
Representação da estrutura:• Matriz de duas colunas x, y.
Solução:• Representar também a grelha com uma
matriz de zeros, de tamanho x tamanho, em que colocamos 1 em cada célula ocupada.
• Para detectar ocupação da célula x, y é só consultar matriz(x,y)
![Page 20: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/20.jpg)
Ludwig Krippahl, 2009 20
Implementação
Função crescimento• Criar grelha e vector partículas
• Colocar a primeira partícula no centro da grelha
• Para cada partícula da segunda em diante:• Usar inicio para escolher o ponto inicial.
• Repetir:• movexy e verificar se novo x, y está ocupado. Se
está, guardar o x, y corrente da partícula e marcar na grelha.
![Page 21: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/21.jpg)
Ludwig Krippahl, 2009 21
Formação de nanoestruturas
![Page 22: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/22.jpg)
Ludwig Krippahl, 2009 22
Dissolução
Simular a dissolução de sólidos (em 2D)
![Page 23: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/23.jpg)
Ludwig Krippahl, 2009 23
Dissolução
Observar os efeitos do tamanho dos sólidos em:• Velocidade a atingir o equilíbrio.
• Valor no equilíbrio.
![Page 24: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/24.jpg)
Ludwig Krippahl, 2009 24
Dissolução
Problema (em partes, como sempre):• Criar o sólido na matriz
• Grupo de partículas
• Mover cada partícula• movexy, já está feito
• Definir regras para a simulação• Se está no sólido, tem uma probabilidade de sair
para solução e começar a mover-se.
• Se encontra outra partícula fica retida no sólido.
![Page 25: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/25.jpg)
Ludwig Krippahl, 2009 25
Dissolução
Implementaçãoparts=preenche(xini,yini,lx,ly)
xini e yini: valores para o ponto inicial (x,y)
lx,ly: tamanho de cada lado do rectângulo.
![Page 26: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/26.jpg)
Ludwig Krippahl, 2009 26
Dissoluçãooctave.exe:2> preenche(2,3,1,2)ans =
2 3 2 4
octave.exe:3> preenche(2,3,3,2)ans =
2 3 2 4 3 3 3 4 4 3 4 4
![Page 27: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/27.jpg)
Ludwig Krippahl, 2009 27
Dissolução
Simulaçãograf=dissolve(parts,tamanho,iters, solub)
parts: matriz com as coordenadas iniciais das partículas no(s) sólido(s).
tamanho: largura da grelha (quadrada)iters: número de iterações a executarsolub: probabilidade de uma partícula deixar o
sólido
![Page 28: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/28.jpg)
Ludwig Krippahl, 2009 28
Dissolução
Simulação• Marcar todas as partículas como sólido.
• Marcar as partículas na grelha.
• Para cada iteração• Percorrer todas as partículas
• Se não está sólida ou se rand<solub, mover e marcar como em solução.
• Se tenta mover para um sítio ocupado fica onde está e passa a sólido
![Page 29: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/29.jpg)
Ludwig Krippahl, 2009 29
Dissolução
Simulação• Para cada iteração
• Percorrer todas as partículas
• Contar o número de partículas no sólido e acrescentar ao vector para o gráfico
![Page 30: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/30.jpg)
Ludwig Krippahl, 2009 30
Dissolução
![Page 31: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/31.jpg)
Ludwig Krippahl, 2009 31
Sermão
Para quem está a ficar para trás• Resolvam as primeiras fichas.
• Leiam a introdução ao Octave e resolvam os exercicíos sobre funções.
• Leiam o manual!
![Page 32: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/32.jpg)
Ludwig Krippahl, 2009 32
Próximas aulas
A implementação fica por vossa conta.• Importante: perceber bem os algoritmos nas
aulas teóricas.
Várias funções implementarem serão úteis para o trabalho final
![Page 33: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/33.jpg)
Ludwig Krippahl, 2009 33
Trabalho 2
Consultem os trabalhos anteriores:• 06/07 – Modelar uma epidemia
• 07/08 – Identificar os mecanismos de cinética de reacções
Ajuste de um modelo a dados experimentais.
Este ano menos folha de cálculo, mais Octave.
![Page 34: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/34.jpg)
Ludwig Krippahl, 2009 34
Próxima prática
Monte Carlo• Integrais e àreas.
• Contar UFCs (revejam a teórica 7)
• Simulação (desta aula)
![Page 35: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 9](https://reader035.vdocuments.net/reader035/viewer/2022070311/552fc102497959413d8bdda4/html5/thumbnails/35.jpg)
Ludwig Krippahl, 2009 35
Dúvidas