Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Mtodos Computacionais
PARTE III PROGRAMAO NO
MATLAB
MATLAB
Funo
Arquivos de texto extenso .m Comeam com a palavra chave function Tm parmetros de entrada e sada As variveis internas so locais Permitem incorporar help Chamadas a funes
MATLAB
Exemplo
MATLAB
Exemplo
MATLAB
Load e Save
load load x load arq1 load arq2.sai load arq3.sai
Save save X save arq1 X Y Z save arq2.sai X Y Z -ascii save arq3.sai X Y Z -ascii -double
fclose(fid)
MATLAB
Exemplo:
MATLAB
Reserva de memria
% Verso com reserva de memria t = cputime; y = zeros(1,N+1); for n= 1:N, y(n+1)= x(n); end tcom = cputime-t % Velocidade relativa rel= tsem/tcom
Exemplo: N= 1000; x = rand(1,N); % Verso sem reserva de memria t = cputime; y = 0; for n = 1:N, y = [y x(n)]; end tsem = cputime-t clear y
MATLAB
Vetorizao
% Clculo de forma vectorizada t = cputime; for c = 1:nciclos, y = a*b; end tmat = cputime-t % Velociade de clculo relativa rel = tfor/tmat
Exemplo: N= 10000; nciclos= 100; a= rand(1,N); b= rand(1,N); % Clculo utilizando um ciclo for t = cputime; for c = 1:nciclos, y = 0; for n = 1:N, y = y+a(n)*b(n); end end tfor = cputime-t
MATLAB
Comentar o cdigo Preferir funes a scripts Ler preferencialmente dados de ficheiros Utilizar preferencialmente funes de altonvel Vetorizar operaes Evitar ciclos, utilizar pr-alocao em + importante do que a velocidade: memria cdigo correto e legvel
MATLAB
MATLAB
Runge-kutta
% metodo de Runge Kutta de 4 ordem (explicito) function [t,x] = RK(t0,tf,x0,dxdt,n) function y = f2(t,x) y = -x.**2./(1+3.*exp(-t).*x); % atribui o valor de n = 10 como padrao end if nargin < 5, n = 10; end % armazenado as condicoes iniciais t(1) = t0; xs = x0; x = x0; % calculo do passo h = (tf-t0)/n; % loop de integracao for i = 1:n g1 = h*feval(dxdt,t(i),xs); g2 = h*feval(dxdt,t(i)+.5*h,xs+.5*g1); g3 = h*feval(dxdt,t(i)+.5*h,xs+.5*g2); g4 = h*feval(dxdt,t(i)+h,xs+g3); xs = xs+(g1+g4)/6+(g2+g3)/3; t(i+1) = t(i)+h; x = vertcat(x,xs); end
MATLAB
Modelo do CSTR
% Definio das constantes do modelo U =50; % BTU/(h.ft2.R) A = 120; % ft2 DH = -30000; % BTU/lbm Ro = 50; % lb/ft3 Cp = 0.75; % BTU/(lbm.R) E = 30000; % BTU/lbm R = 1.99; % BTU/(lbm.R) k0 = 7.08e10; % 1/h V =48; % ft3 Te = 580; %R Th = 550; %R Fe = 18; % ft3/h Cre = 0.48; % lbm/ft3
MATLAB
Modelo do CSTR
%h
% Tempo de simulao t = 0.0 : 0.01 : 10.0; % Condies iniciais Cr0 = 0.16; T0 = 603;
% lbm/ft3 %R
MATLAB
Modelo do CSTR
% Visualizao da simulao figure(1); plot(t,y(:,1)); title('CSTR com Reao Exotrmica'); xlabel('Tempo (h)'); ylabel('Concentrao de Reagente (lbm/ft3)'); figure(2); plot(t,y(:,2)); title('CSTR com Reao Exotrmica'); xlabel('Tempo (h)'); ylabel('Temperatura (R)');
MATLAB
Modelo do CSTR
A = par(2); Ro = par(4); E = par(6); k0 = par(8); Te = par(10); Fe = par(12);
function dy = dcstr(t,y,flag,par); U = par(1); DH = par(3); Cp = par(5); R = par(7); V = par(9); Th = par(11); Cre = par(13);