1 / 79

Programação para as Ciências Experimentais 2007/8

Programação para as Ciências Experimentais 2007/8. Teórica 10. 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 Excel. Ajuste de um modelo.

lara-hull
Télécharger la présentation

Programação para as Ciências Experimentais 2007/8

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programação para as Ciências Experimentais2007/8 Teórica 10 Ludwig Krippahl, 2008

  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 Excel

  3. Ajuste de um modelo Dados Experimentais Simulação Discrepância Minimizar

  4. Ajuste de um modelo • Exemplo: reacção química cinetica Dados Experimentais Simulação Discrepância Minimizar minfn

  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. 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. Interpolação linear y2 y1 x2 xi x1

  8. Interpolação linear • yi = (y1*(x2-xi) + y2*(xi-x1)) / (x2 – x1) y2 yi y1 x2 xi x1

  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 endfor

  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 endfor Cria vector yi, dos valores interpolados

  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 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. 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 endfor Calcula a interpolação e termina o ciclo interno (g).

  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. Interpolação linear

  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. 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. 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

  18. 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)

  19. 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.

  20. O mínimo de uma função • Método da razão dourada

  21. 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 c b

  22. O mínimo de uma função • Se x1<x2<x3 e y2<y1 e y2<y3 então tem que haver um mínimo local entre x1 e x3 x1 x3 x2

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

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

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

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

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

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

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

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

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

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

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

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

  35. 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)

  36. 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

  37. 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)

  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); Avalia a função no ponto do meio. Nota: assume-se que y é maior em x1 e x2.

  39. 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

  40. 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)

  41. O mínimo de uma função x1 x2 xm

  42. 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.

  43. O mínimo de uma função ym yn x1 xn xm x2

  44. O mínimo de uma função ym x1 xm x2 x2

  45. 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.

  46. 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

  47. Ajustar o modelo (2A  B) • Comparar o modelo com os dados er=[2,0] ep=[0,1]; cis=[1,0]; xy=cinetica(esteq,cis,k,0,0.01,10); hold off plot(xy(:,1),xy(:,2)) hold on plot(vals(:,1),vals(:,2), "x");

  48. Ajustar o modelo (2A  B)

  49. 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...

  50. Conceitos básicos de Excel • 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

More Related