1 / 15

CURSO de NIVELAMENTO

CURSO de NIVELAMENTO. Métodos Computacionais. PARTE III – PROGRAMAÇÃO NO MATLAB. Rogério Pagano ( MatLab ). MATLAB. Programa de Engenharia Química/COPPE/UFRJ LMSCP. Função Arquivos de texto extensão “.m” Começam com a palavra chave “function” Têm parâmetros de entrada e saída

talon
Download Presentation

CURSO de NIVELAMENTO

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. CURSO de NIVELAMENTO Métodos Computacionais PARTE III – PROGRAMAÇÃO NO MATLAB Rogério Pagano (MatLab)

  2. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Função Arquivos de texto • extensão “.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

  3. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Exemplo

  4. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Exemplo

  5. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Load e Save Save save X save arq1 X Y Z save arq2.sai X Y Z -ascii save arq3.sai X Y Z -ascii -double load load x load arq1 load arq2.sai load arq3.sai Gravando dados num arquivo : FID,FPRINTF,FCLOSE fid=fopen(‘nome do arquivo.extensão’, ‘modalidade’) fprintf(fid, formato,dados) fclose(fid)

  6. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Exemplo:

  7. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP % Versão com reserva de memória 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 • Reserva de memória Exemplo: N= 1000; x = rand(1,N); % Versão sem reserva de memória t = cputime; y = 0; for n = 1:N, y = [y x(n)]; end tsem = cputime-t clear y

  8. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • % Cálculo de forma vectorizada • t = cputime; • for c = 1:nciclos, • y = a*b’; • end • tmat = cputime-t • % Velociade de cálculo relativa • rel = tfor/tmat • Vetorização Exemplo: N= 10000; nciclos= 100; a= rand(1,N); b= rand(1,N); % Cálculo 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

  9. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • 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 alto-nível • Vetorizar operações • Evitar ciclos, utilizar pré-alocação em memória + importante do que a velocidade: código correto e legível

  10. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Oscilador de Van der Pol t0 = 0; tf = 20; x0 = [0 0.25]; [t,x] = ode23('volpol', t0, tf, x0); plot(t,x) functionxdot=volpol(t,x) xdot=[0 0] xdot(1)=x(1).*(1- x(2).^2) - x(2); xdot(2)=x(1); xdot= xdot’

  11. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Runge-kutta % metodo de RungeKutta de 4 ordem (explicito) function [t,x] = RK(t0,tf,x0,dxdt,n) % atribui o valor de n = 10 como padrao ifnargin < 5, n = 10; end % armazenado as condicoes iniciais t(1) = t0; xs = x0; x = x0; % calculo do passo h = (tf-t0)/n; function y = f2(t,x) y = -x.**2./(1+3.*exp(-t).*x); end % 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

  12. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Modelo do CSTR % Definição 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

  13. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Modelo do CSTR % Tempo de simulação t = 0.0 : 0.01 : 10.0; %h % Condições iniciais Cr0 = 0.16; % lbm/ft3 T0 = 603; %R % Simulação do modelo [t,y] = ode45('dcstr',t,[Cr0 T0],[],[U A DH RoCp E R k0 V Te Th Fe Cre]);

  14. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Modelo do CSTR % Visualização da simulação figure(1); plot(t,y(:,1)); title('CSTR com Reação Exotérmica'); xlabel('Tempo (h)'); ylabel('Concentração de Reagente (lbm/ft3)'); figure(2); plot(t,y(:,2)); title('CSTR com Reação Exotérmica'); xlabel('Tempo (h)'); ylabel('Temperatura (R)');

  15. MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Modelo do CSTR functiondy = dcstr(t,y,flag,par); U = par(1); A = par(2); DH = par(3); Ro = par(4); Cp = par(5); E = par(6); R = par(7); k0 = par(8); V = par(9); Te = par(10); Th = par(11); Fe = par(12); Cre = par(13); dy(1) = (Fe/V)*(Cre-y(1)) - k0*exp(-E/(R*y(2)))*y(1); dy(2) = (Fe/V)*(Te-y(2)) + ((DH*k0*exp(-E/(R*y(2)))*y(1))/(Ro*Cp)) - ... (U*A*(y(2)-Th)/(V*Ro*Cp));

More Related