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

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

Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 13.

Apresentações semelhantes


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

1 Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 13

2 Ludwig Krippahl, 2008 2 Na aula de hoje... Excel Goal Seek. Exame e revisões. Exemplos de perguntas. Dúvidas e revisões.

3 Ludwig Krippahl, 2008 3 Goal Seek Testa valores numa célula para tentar aproximar o valor de outra célula ao valor desejado. A célula a testar tem que ter apenas um valor ou estar vazia (não ter fórmulas) A outra célula tem que estar relacionada com esta.

4 Ludwig Krippahl, 2008 4 Goal Seek Exemplo: raiz do polinómio x 3 +x 2 -2 Célula A1, =A2^3+A2^2-2 Tools->Goal Seek

5 Ludwig Krippahl, 2008 5 Pergunta simples Escreva as duas linhas que definem um ciclo em que a variável f toma todos os valores inteiros entre 1 e 20

6 Ludwig Krippahl, 2008 6 Pergunta simples Escreva as duas linhas que definem um ciclo em que a variável f toma todos os valores inteiros entre 1 e 20 for f=1:20 endfor

7 Ludwig Krippahl, 2008 7 Pergunta simples Saber o resultado de funções. function x=forif(a,b) x=0; for j=1:a x=x+b; if b>5 x=x-1; endif endfor endfunction

8 Ludwig Krippahl, 2008 8 Pergunta simples Saber o resultado de funções. function x=forif(a,b) x=0; for j=1:a x=x+b; if b>5 x=x-1;forif(2,3) endifans=6 endfor endfunction

9 Ludwig Krippahl, 2008 9 Pergunta simples Saber o resultado de funções. function [w,z]=fazendo(a,b) w=0; while a>bfazendo(3,2) w=w+1;ans=1 a=a-abs(b); (atenção: só devolve w) endwhile z=a; endfunction

10 Ludwig Krippahl, 2008 10 Pergunta simples Saber o resultado de funções. function [w,z]=fazendo(a,b) w=0; while a>b[x,y]=fazendo(3,2) w=w+1;x=1 y=3 a=a-abs(b); endwhile z=a; endfunction

11 Ludwig Krippahl, 2008 11 Pergunta simples Saber o resultado de funções. function [w,z]=fazendo(a,b) w=0; while a>b[z,w]=fazendo(3,2) w=w+1;z=1 w=3 a=a-abs(b);atenção: os nomes são endwhileindependentes z=a; endfunction

12 Ludwig Krippahl, 2008 12 Pergunta média Escreva uma função que devolve dois valores e recebe três argumentos. Os argumentos são números, o primeiro valor devolvido é o produto dos dois primeiros argumentos, o segundo valor devolvido é a soma do segundo argumento com o terceiro.

13 Ludwig Krippahl, 2008 13 Pergunta média Escreva uma função que devolve o produto dos dois primeiros argumentos e a soma do segundo argumento com o terceiro. function [pr,sm]=prodsum(n1,n2,n3) pr=n1*n2; sm=n2+n3; endfunction

14 Ludwig Krippahl, 2008 14 Pergunta de desenvolvimento Considere as funções erro2AB cinetica minfn interpol

15 Ludwig Krippahl, 2008 15 Pergunta de desenvolvimento function r=erro2AB(vals,k) esteq=[-2,1]; cis=[1,0]; xy=cinetica(esteq,cis,k,0,0.01,vals(rows(vals),1) +1); int=interpol(xy,vals(:,1)); r=sum((vals(:,2)-int).^2); endfunction

16 Ludwig Krippahl, 2008 16 Pergunta de desenvolvimento function tconcs=cinetica(esteq,cis,kd,ki,dt,tmax) rs=find(esteq<0); ps=find(esteq>0); tconcs=[0,cis]; for t=0:dt:tmax dps=prod(cis(ps).^esteq(ps))*ki; drs=prod(cis(rs).^-esteq(rs))*kd; deriv=(drs-dps)*dt; cis=cis+deriv*esteq; tconcs=[tconcs;t,cis]; endfor endfunction

17 Ludwig Krippahl, 2008 17 Pergunta de desenvolvimento 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

18 Ludwig Krippahl, 2008 18 Pergunta de desenvolvimento function xm=minfn(func,params,x1,xm,x2,prec) c1=0.618; c2=1-c1; ym=feval(func,params,xm); while abs(x2-x1)>prec if abs(x1-xm)>abs(x2-xm) xn=c1*xm+c2*x1; yn=feval(func,params,xn); if yn<ym x2=xm; xm=xn; ym=yn; else x1=xn; endif else xn=c1*xm+c2*x2; yn=feval(func,params,xn); if yn<ym x1=xm; xm=xn; ym=yn; else x2=xn; endif endwhile endfunction

19 Ludwig Krippahl, 2008 19 Pergunta de desenvolvimento Alínea A: Como calcular a constante cinética para a reacção 2A->B com os dados experimentais ([A] em função do tempo): vals=[0.5,0.5;2,0.2;6,0.07;9,0.055]; Sabendo que a constante está entre 0 e 2, e a precisão desejada é de 0.001.

20 Ludwig Krippahl, 2008 20 Pergunta de desenvolvimento Alínea A: Resposta: k=minfn("erro2AB",vals,0,1,2,0.001)

21 Ludwig Krippahl, 2008 21 Pergunta de desenvolvimento Alínea B: O que tinha que alterar para considerar o modelo de reacção A->B em vez de 2A->B.

22 Ludwig Krippahl, 2008 22 Pergunta de desenvolvimento Alínea B: O que tinha que alterar para considerar o modelo de reacção A->B em vez de 2A->B. Resposta Na função erro2AB, a linha esteq=[-2,1]; passar a esteq=[-1,1];

23 Ludwig Krippahl, 2008 23 Pergunta de desenvolvimento Ou: Dadas as outras escrever a função de erro. Escrever a função que integra a reacção. Convém perceber bem as funções que usámos nas práticas.

24 Ludwig Krippahl, 2008 24 Perguntas Excel 4 valores Onde colocar o $ Funções simples (SUM, SUMIF, etc... as que vêm mencionadas nos slides). VLOOKUP, Goal Seek, fórmulas (integração, polinómios...)

25 Ludwig Krippahl, 2008 25 Dúvidas 1. Comandos simples, vectores e matrizes 2. Strings e gráficos. Scripts, procedimentos e funções. 3. Controlo de execução: ciclos e condições. Booleanos. 4. Zero de uma função. Ficheiros (noções básicas). 5. TP1. 6. Estruturas. Ficheiros. Recursividade. Gráficos. 7. Métodos estocásticos. Ciclos aninhados. 8. Simulação de nano-estruturas e dissolução de sólidos. 9. Resolução TP 1. Integração numérica. Cinética. 10. Ajuste de modelos. Interpolação, minimização. 11. Minimização multidimensional. TP2. 12. Excel: troca de dados com Octave.


Carregar ppt "Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 13."

Apresentações semelhantes


Anúncios Google