A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 11.

Apresentações semelhantes


Apresentação em tema: "Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 11."— Transcrição da apresentação:

1 Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 11

2 Ludwig Krippahl, 2009 2 Na aula de hoje... Ajustar um modelo a dados experimentais. Interpolação linear Minimização de funções Cálculo de erros Estimar uma constante cinética ajustando o modelo aos dados. Conceitos básicos de folha de cálculo.

3 Ludwig Krippahl, 2009 3 Ajuste de um modelo Dados Experimentais Simulação Discrepância Minimizar

4 Ludwig Krippahl, 2009 4 Ajuste de um modelo Exemplo: reacção química Dados Experimentais Simulação Discrepância Minimizar minfn cinetica

5 Ludwig Krippahl, 2009 5 Ajuste de um modelo Dados: matriz com tempo na primeira coluna e concentração (ou concentrações) na segunda (ou outras). Função erro compara cada vector com o correspondente na simulação. Mas os valores de t podem ser diferentes. É preciso interpolar. Primeiro, função interpol

6 Ludwig Krippahl, 2009 6 Interpolação linear Função interpol Recebe: uma matriz x, y, em colunas, e um vector x1 com os pontos a interpolar. Devolve: vector y1 com os valores em x1 interpolados de x, y.

7 Ludwig Krippahl, 2009 7 Interpolação linear xi x1 x2 y1 y2

8 Ludwig Krippahl, 2009 8 Interpolação linear yi = (y1*(x2-xi) + y2*(xi-x1)) / (x2 – x1) xi x1 x2 y1 y2 yi

9 Ludwig Krippahl, 2009 9 Interpolação linear function yi=interpol(matxy,xi) yi=0*xi; for f=1:length(xi) for g=2:rows(matxy) if matxy(g,1)>=xi(f); x1 = matxy(g-1,1); x2 = matxy(g,1); y1 = matxy(g-1,2); y2 = matxy(g,2); d = x2-x1; yi(f) = (y1*(x2-xi(f))+y2*(xi(f)-x1))/d; break endif endfor

10 Ludwig Krippahl, 2009 10 Interpolação linear function yi=interpol(matxy,xi) yi=0*xi; for f=1:length(xi) for g=2:rows(matxy) if matxy(g,1)>=xi(f); x1 = matxy(g-1,1); x2 = matxy(g,1); y1 = matxy(g-1,2); y2 = matxy(g,2); d = x2-x1; yi(f) = (y1*(x2-xi(f))+y2*(xi(f)-x1))/d; break endif endfor Cria vector yi, dos valores interpolados

11 Ludwig Krippahl, 2009 11 Interpolação linear function yi=interpol(matxy,xi) yi=0*xi; for f=1:length(xi) for g=2:rows(matxy) if matxy(g,1)>=xi(f); x1 = matxy(g-1,1); x2 = matxy(g,1); y1 = matxy(g-1,2); y2 = matxy(g,2); d = x2-x1; yi(f) = (y1*(x2-xi(f))+y2*(xi(f)-x1))/d; break endif endfor Para cada xi onde interpolar percorre os x da matriz até encontrar o primeiro que ultrapassa xi. Começa do 2º elemento porque precisa do anterior para interpolar.

12 Ludwig Krippahl, 2009 12 Interpolação linear function yi=interpol(matxy,xi) yi=0*xi; for f=1:length(xi) for g=2:rows(matxy) if matxy(g,1)>=xi(f); x1 = matxy(g-1,1); x2 = matxy(g,1); y1 = matxy(g-1,2); y2 = matxy(g,2); d = x2-x1; yi(f) = (y1*(x2-xi(f))+y2*(xi(f)-x1))/d; break endif endfor Calcula a interpolação e termina o ciclo interno (g).

13 Ludwig Krippahl, 2009 13 Interpolação linear xy=[[1:10]',[2:2:20]']; xi=[2.5:2:8]; yi=interpol(xy,xi) hold off plot(xy(:,1), xy(:,2)) hold on plot(xi,yi,"ob;;");

14 Ludwig Krippahl, 2009 14 Interpolação linear

15 Ludwig Krippahl, 2009 15 Medir a discrepância (erro) Reacção 2A B Só kd Função erro mede o erro quadrático médio, que é a média dos quadrados das diferenças entre os vectores

16 Ludwig Krippahl, 2009 16 Medir a discrepância (erro) Exemplo: 2A B Só kd (irreversível) Função erro2AB mede o erro quadrático entre os dados experimentais e a simulação. A função codifica a concentração inicial e reacção, recebe como argumentos o kd e os valores para comparar.

17 Ludwig Krippahl, 2009 17 Medir a discrepância (2A B) function r=erro2AB(vals,k) Devolve o erro quadrático total Soma dos quadrados dos erros de todos os pontos Recebe matriz vals com tempo e [A] (vamos só ajustar à [A]) Recebe a constante k do modelo

18 Ludwig Krippahl, 2009 18 Medir a discrepância (2A B) function r=erro2AB(vals,k) er=[2,0];define a reacção ep=[0,1]; cis=[1,0];e as concentrações aqui falta calcular os valores previstos pelo modelo para este k e comparar com o vector vals para calcular o erro, interpolando os valores. Para resolver na prática... endfunction

19 Ludwig Krippahl, 2009 19 Medir a discrepância (2A B) Para simular a reacção podemos usar a função cinetica da aula anterior. Para comparar com os dados experimentais precisamos interpolar para os valores de t experimentais (que podem não coincidir com os da simulação)

20 Ludwig Krippahl, 2009 20 Interpolação linear t ex titi t i+1 [A] int [A] ex

21 Ludwig Krippahl, 2009 21 Medir a discrepância (2A B) O erro é o erro quadrático: r=sum((vals(:,2)-int).^2); vals é a matriz com as concentrações de A na segunda coluna int é o vector das concentrações de A obtido interpolando a simulação para os valores na 1ª coluna de vals.

22 Ludwig Krippahl, 2009 22 O mínimo de uma função Método da razão dourada

23 Ludwig Krippahl, 2009 23 O mínimo de uma função Tal como encurralámos a raiz num intervalo, vamos fazer o mesmo com o mínimo, mas precisamos de 3 pontos: a b c

24 Ludwig Krippahl, 2009 24 O mínimo de uma função Se x 1 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.com.br/1/332122/slides/slide_24.jpg", "name": "Ludwig Krippahl, 2009 24 O mínimo de uma função Se x 1

25 Ludwig Krippahl, 2009 25 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

26 Ludwig Krippahl, 2009 26 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

27 Ludwig Krippahl, 2009 27 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

28 Ludwig Krippahl, 2009 28 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

29 Ludwig Krippahl, 2009 29 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

30 Ludwig Krippahl, 2009 30 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

31 Ludwig Krippahl, 2009 31 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

32 Ludwig Krippahl, 2009 32 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

33 Ludwig Krippahl, 2009 33 O mínimo de uma função O algoritmo é (novamente) partir os intervalos, testar, e repetir até que seja suficientemente pequeno x1 x2 x3

34 Ludwig Krippahl, 2009 34 O mínimo de uma função Guardar sempre os 3 pontos consecutivos em que o y do meio é menor que os extremos. x1 x2 x3

35 Ludwig Krippahl, 2009 35 O mínimo de uma função Como dividir o intervalo: O ideal é manter as proporções. Dividir ao meio não é ideal. x1 x2 x3

36 Ludwig Krippahl, 2009 36 O mínimo de uma função Como dividir o intervalo: O ideal é manter as proporções. Dividir ao meio não é ideal. x1 x2 x3 x4 x5

37 Ludwig Krippahl, 2009 37 O mínimo de uma função Como dividir o intervalo: Escolher o ponto novo no intervalo maior e Partir pela razão dourada: (a+b)/a = a / b a= 0.618 (a+b) b= (1-0.618) (a+b)

38 Ludwig Krippahl, 2009 38 O mínimo de uma função function xm=minfn(func,params,x1,xm,x2,prec) c=1-0.618; ym=feval(func,params,xm); Nome da função, parâmetros (como no zerpol), os 3 pontos iniciais e precisão

39 Ludwig Krippahl, 2009 39 O mínimo de uma função function xm=minfn(func,params,x1,xm,x2,prec) c=1-0.618; ym=feval(func,params,xm); Constante c para os intervalos (razão dourada)

40 Ludwig Krippahl, 2009 40 O mínimo de uma função function xm=minfn(func,params,x1,xm,x2,prec) c=1-0.618; ym=feval(func,params,xm); Avalia a função no ponto do meio. Nota: assume-se que y é maior em x1 e x2.

41 Ludwig Krippahl, 2009 41 O mínimo de uma função while abs(x2-x1)>prec if abs(x1-xm)>abs(x2-xm) intervalo maior é x1 a xm else intervalo maior é xm a x2 endif endwhile Enquanto o intervalo é maior que a precisão

42 Ludwig Krippahl, 2009 42 O mínimo de uma função while abs(x2-x1)>prec if abs(x1-xm)>abs(x2-xm) intervalo maior é x1 a xm else intervalo maior é xm a x2 endif endwhile Encontra o sub-intervalo maior, (x1 a xm ou xm a x2)

43 Ludwig Krippahl, 2009 43 O mínimo de uma função x1 xm x2

44 Ludwig Krippahl, 2009 44 O mínimo de uma função Se o intervalo maior é de x1 a xm o novo x será entre x1 e xm, próximo de xm xn=xm-c*(xm-x1) o novo y será feval(func,params,xn) Se o novo y for menor que o anterior (em xm) passar o x2 para onde está xm, xm para o novo x, e ym será o novo y.

45 Ludwig Krippahl, 2009 45 O mínimo de uma função x1 xmx2xn ym yn

46 Ludwig Krippahl, 2009 46 O mínimo de uma função x1 x2 xm ym

47 Ludwig Krippahl, 2009 47 O mínimo de uma função Se o intervalo maior é de xm a x2 o novo x será entre xm e x2, mais próximo de xm. xn=xm+c*(x2-xm); Se o novo y for menor que o anterior (em xm) passar o x1 para onde está xm, xm para o novo x, e ym será o novo y.

48 Ludwig Krippahl, 2009 48 Ajustar o modelo (2A B) Basta usar a minfn para calcular o k que minimiza o erro Exemplo: vals=[0.5,0.5;2,0.2;6,0.07;9,0.055]; k=minfn("erro2AB",vals,0,1,2,0.001) k = 0.97843

49 Ludwig Krippahl, 2009 49 Ajustar o modelo (2A B) Comparar o modelo com os dados er=[2,0] ep=[0,1]; cis=[1,0]; xy=cinetica(er,ep,cis,k,0,0.01,10); hold off plot(xy(:,1),xy(:,2)) hold on plot(vals(:,1),vals(:,2), "x");

50 Ludwig Krippahl, 2009 50 Ajustar o modelo (2A B)

51 Ludwig Krippahl, 2009 51 Ajustar um modelo Abordagem genérica Simular dados previstos para um conjunto de parâmetros Minimizar a discrepância entre os valores previstos e observados alterando os parâmetros. Na prática pode ser difícil...

52 Ludwig Krippahl, 2009 52 Folha de cálculo Célula: A5 Grupo de células: A5:B12 Referência relativa ou absoluta: O cifrão marca uma referência absoluta. A$5, $B$5 Nestes casos o 5 e o B estão fixos. Sem cifrão a referência é relativa, e muda com copy/paste ou fill down/right

53 Ludwig Krippahl, 2009 53 Folha de cálculo Referência relativa: Nota: fórmulas começam sempre por =

54 Ludwig Krippahl, 2009 54 Folha de cálculo Referência relativa: O B passou a C e o C a D copiando para a direita

55 Ludwig Krippahl, 2009 55 Folha de cálculo Referência relativa: O 2 passou a 3 copiando para baixo

56 Ludwig Krippahl, 2009 56 Folha de cálculo Referência absoluta

57 Ludwig Krippahl, 2009 57 Folha de cálculo Referência absoluta Fill down (seleccionar, ctrl+d ou alt, e, i, d)

58 Ludwig Krippahl, 2009 58 Folha de cálculo Referência absoluta Multiplicar pelo C1, mas sem mudar o 1...

59 Ludwig Krippahl, 2009 59 Folha de cálculo Referência absoluta Marcar o 1 como ref. absoluta

60 Ludwig Krippahl, 2009 60 Folha de cálculo Referência absoluta Marcar o 1 como ref. absoluta

61 Ludwig Krippahl, 2009 61 Folha de cálculo Dar nomes às células. Exemplo: 2A B Parâmetros Constante DeltaT

62 Ludwig Krippahl, 2009 62 Folha de cálculo Dar nomes às células. Exemplo: 2A B Parâmetros Constante DeltaT

63 Ludwig Krippahl, 2009 63 Folha de cálculo Dar nomes às células. Exemplo: 2A B Parâmetros Constante DeltaT

64 Ludwig Krippahl, 2009 64 Folha de cálculo Dar nomes às células. Exemplo: 2A B Parâmetros Constante DeltaT

65 Ludwig Krippahl, 2009 65 Folha de cálculo Dar nomes às células. Exemplo: 2A B Parâmetros Constante DeltaT

66 Ludwig Krippahl, 2009 66 Folha de cálculo Dar nomes às células. Exemplo: 2A B Parâmetros Constante DeltaT

67 Ludwig Krippahl, 2009 67 Folha de cálculo Dar nomes às células. Exemplo: 2A B Parâmetros Constante DeltaT

68 Ludwig Krippahl, 2009 68 Folha de cálculo Dar nomes às células. Exemplo: 2A B Parâmetros Constante DeltaT

69 Ludwig Krippahl, 2009 69 Folha de cálculo Dar nomes às células. Exemplo: 2A B Fill down... Mas falta o tempo.

70 Ludwig Krippahl, 2009 70 Folha de cálculo Seleccionar a primeira coluna (click no topo da coluna, no A).

71 Ludwig Krippahl, 2009 71 Folha de cálculo Insert, Columns

72 Ludwig Krippahl, 2009 72 Folha de cálculo Insert, Columns

73 Ludwig Krippahl, 2009 73 Folha de cálculo Definir a fórmula, e fill down.

74 Ludwig Krippahl, 2009 74 Folha de cálculo IF(condição; valor se verdade; valor se falso) Ex:

75 Ludwig Krippahl, 2009 75 Folha de cálculo IF(condição; valor se verdade; valor se falso) Ex:

76 Ludwig Krippahl, 2009 76 Folha de cálculo Exemplo: raiz do polinómio x 3 +2

77 Ludwig Krippahl, 2009 77 Folha de cálculo Exemplo: raiz do polinómio x 3 +2

78 Ludwig Krippahl, 2009 78 Folha de cálculo Exemplo: raiz do polinómio x 3 +2 Fill right, fill down

79 Ludwig Krippahl, 2009 79 Folha de cálculo Exemplo: raiz do polinómio x 3 +2

80 Ludwig Krippahl, 2009 80 Folha de cálculo Exemplo: raiz do polinómio x 3 +2 Fill down

81 Ludwig Krippahl, 2009 81 Dúvidas


Carregar ppt "Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 11."

Apresentações semelhantes


Anúncios Google