Upload
internet
View
104
Download
0
Embed Size (px)
Citation preview
Ludwig Krippahl, 2007
Programação para as Ciências Experimentais
2006/7
Teórica 12
Ludwig Krippahl, 2007 2
Na aula de hoje...
Como vai ser o exame.• Exemplos de perguntas.
O que deve ficar depois do exame. Dúvidas e revisões.
Ludwig Krippahl, 2007 3
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
Ludwig Krippahl, 2007 4
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
Ludwig Krippahl, 2007 5
Pergunta simples
Qual o resultado de xpto(12,1)function x=xpto(num,flag)
if flag
x=num*2
else
x=num/2
endif
endfunction
Ludwig Krippahl, 2007 6
Pergunta simples
Qual o resultado de xpto(12,1) 24
Ludwig Krippahl, 2007 7
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.
Ludwig Krippahl, 2007 8
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
Ludwig Krippahl, 2007 9
Pergunta média
Qual o resultado de procvec([1,2,3,4],2)?function v=procvec(vin,lim)
v=zeros(1,length(vin));for f=1:length(v)
if vin(f)>limv(f)=vin(f);
endifendfor
endfunction
Ludwig Krippahl, 2007 10
Pergunta média
Qual o resultado de procvec([1,2,3,4],2)? [0,0,3,4]
Ludwig Krippahl, 2007 11
Pergunta de desenvolvimento
Considere as funções• erro2AB
• cinetica
• minfn
• interpol
Ludwig Krippahl, 2007 12
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
Ludwig Krippahl, 2007 13
Pergunta de desenvolvimentofunction 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];
endforendfunction
Ludwig Krippahl, 2007 14
Pergunta de desenvolvimentofunction 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
endifendfor
endfor
Ludwig Krippahl, 2007 15
Pergunta de desenvolvimentofunction 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;
elsex1=xn;
endifelse
xn=c1*xm+c2*x2;yn=feval(func,params,xn);if yn<ym
x1=xm;xm=xn;ym=yn;
elsex2=xn;
endifendif
endwhileendfunction
Ludwig Krippahl, 2007 16
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.
Ludwig Krippahl, 2007 17
Pergunta de desenvolvimento
Alínea A: Resposta:
• k=minfn("erro2AB",vals,0,1,2,0.001)
Ludwig Krippahl, 2007 18
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.
Ludwig Krippahl, 2007 19
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];
Ludwig Krippahl, 2007 20
Perguntas Excel
Onde colocar o $ Funções simples (SUM, SUMIF, etc... as
que vêm mencionadas nos slides). Como fazer
• série de números 1,2,3,...
• tabuada
• ...
Ludwig Krippahl, 2007 21
O importante
Para o exame:• Funções
• Argumentos, valores de saída.
• Ciclos, condições• If, while, for, ==, &, &&, ...
• Variáveis• Atribuição, trocar valores, incrementar, criar vectores e
matrizes incrementalmente
• Excel:• Nomes de células, $, funções simples, funções com
vectores e matrizes
Ludwig Krippahl, 2007 22
O importante
Para depois• Noções básicas de programação imperativa
• Ciclos, condições, variáveis
• Modularidade e reutilização (funções)
• Métodos numéricos• Integração, mínimos, zeros,
• Modelação de processos
• Ajuste de modelos