You are on page 1of 15

CURSO de NIVELAMENTO

Métodos Computacionais
PARTE III – PROGRAMAÇÃO NO
MATLAB

Rogério Pagano (MatLab)

m”  Começam com a palavra chave “function”  Têm parâmetros de entrada e saída  As variáveis internas são locais  Permitem incorporar “help”  Chamadas a funções .MATLAB  Função Arquivos de texto  extensão “.

MATLAB  Exemplo .

MATLAB  Exemplo .

„modalidade‟) fprintf(fid.sai X Y Z -ascii save arq3.sai Save save X save arq1 X Y Z save arq2.FCLOSE fid=fopen(„nome do arquivo.sai load arq3.extensão‟.dados) fclose(fid) .FPRINTF. formato.MATLAB  Load e Save load load x load arq1 load arq2.sai X Y Z -ascii -double Gravando dados num arquivo : FID.

MATLAB Exemplo: .

MATLAB  Reserva de memória % Versão com reserva de memória t = cputime.N+1). end tsem = cputime-t clear y . y = [y x(n)]. y(n+1)= x(n). y = 0. for n= 1:N. % Versão sem reserva de memória t = cputime. x = rand(1. y = zeros(1. for n = 1:N.N). end tcom = cputime-t % Velocidade relativa rel= tsem/tcom Exemplo: N= 1000.

for c = 1:nciclos.N). for n = 1:N. y = a*b‟. end end tfor = cputime-t . for c = 1:nciclos. % Cálculo utilizando um ciclo for t = cputime. y = 0.MATLAB  Vetorização % Cálculo de forma vectorizada t = cputime. y = y+a(n)*b(n). b= rand(1. a= rand(1.N). nciclos= 100. end tmat = cputime-t % Velociade de cálculo relativa rel = tfor/tmat Exemplo: N= 10000.

MATLAB   Boas práticas em programação Comentar o código  Preferir funções a scripts  Ler preferencialmente dados de ficheiros  Utilizar preferencialmente funções de altonível  Vetorizar operações  Evitar ciclos. utilizar pré-alocação em + importante do que a velocidade: memória código correto e legível .

x) xdot=[0 0] xdot(1)=x(1). [t. xdot(2)=x(1). tf. t0.x(2).^2) . x0). xdot = xdot‟ .x] = ode23('volpol'.25]. plot(t.MATLAB  Oscilador de Van der Pol t0 = 0. x0 = [0 0.*(1.x) function xdot=volpol(t.x(2). tf = 20.

g4 = h*feval(dxdt. t(i+1) = t(i)+h. g3 = h*feval(dxdt.tf.x] = RK(t0. xs = xs+(g1+g4)/6+(g2+g3)/3.n) function y = f2(t.t(i)+.xs).xs+g3).t(i)+h.dxdt.*x).x0.5*h.t(i). g2 = h*feval(dxdt.5*h.xs+. end % armazenado as condicoes iniciais t(1) = t0.xs)./(1+3.5*g2). end .5*g1). n = 10.xs+.x) y = -x.*exp(-t). % loop de integracao for i = 1:n g1 = h*feval(dxdt. xs = x0. x = vertcat(x.t(i)+.MATLAB  Runge-kutta % metodo de Runge Kutta de 4 ordem (explicito) function [t. % atribui o valor de n = 10 como padrao end if nargin < 5. x = x0.**2. % calculo do passo h = (tf-t0)/n.

48.75.MATLAB  Modelo do CSTR % Definição das constantes do modelo U =50.R) E = 30000. % lb/ft3 Cp = 0. % BTU/(h.99. %R Fe = 18. % BTU/lbm Ro = 50. % ft3 Te = 580.08e10.ft2. % 1/h V =48. % ft3/h Cre = 0. % BTU/(lbm. % BTU/lbm R = 1. %R Th = 550. % lbm/ft3 .R) k0 = 7. % BTU/(lbm.R) A = 120. % ft2 DH = -30000.

T0 = 603.MATLAB  Modelo do CSTR %h % Tempo de simulação t = 0.01 : 10.[].[Cr0 T0].16. % Condições iniciais Cr0 = 0. % lbm/ft3 %R % Simulação do modelo [t.[U A DH Ro Cp E R k0 V Te Th Fe Cre]).0.y] = ode45('dcstr'. .0 : 0.t.

xlabel('Tempo (h)'). ylabel('Temperatura (R)').y(:.MATLAB  Modelo do CSTR % Visualização da simulação figure(1).y(:. .1)). figure(2). ylabel('Concentração de Reagente (lbm/ft3)').2)). xlabel('Tempo (h)'). title('CSTR com Reação Exotérmica'). plot(t. plot(t. title('CSTR com Reação Exotérmica').

MATLAB  Modelo do CSTR A = par(2). Fe = par(12). Ro = par(4). .. Cp = par(5). R = par(7). Th = par(11). dy(1) = (Fe/V)*(Cre-y(1)) .y. V = par(9).. k0 = par(8). dy(2) = (Fe/V)*(Te-y(2)) + ((DH*k0*exp(-E/(R*y(2)))*y(1))/(Ro*Cp)) .flag. (U*A*(y(2)-Th)/(V*Ro*Cp))..k0*exp(-E/(R*y(2)))*y(1). U = par(1). function dy = dcstr(t.par). Te = par(10). E = par(6). Cre = par(13). DH = par(3).