1 / 85

Carlos André Vaz Junior cavazjunior@gmail eq.ufrj.br/links/h2cin/carlosandre

Carlos André Vaz Junior cavazjunior@gmail.com http://www.eq.ufrj.br/links/h2cin/carlosandre. O mundo MATLAB. Mais de 1 milhão de resultados. Ajuda. http://newsreader.mathworks.com. ?. Livros. Exemplo 1. Exemplo 1. Exemplo 1.

leif
Download Presentation

Carlos André Vaz Junior cavazjunior@gmail eq.ufrj.br/links/h2cin/carlosandre

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. Carlos André Vaz Junior cavazjunior@gmail.com http://www.eq.ufrj.br/links/h2cin/carlosandre

  2. O mundo MATLAB Mais de 1 milhão de resultados

  3. Ajuda http://newsreader.mathworks.com ?

  4. Livros

  5. Exemplo 1 Exemplo 1

  6. Exemplo 1 No processo de compra de um equipamento de pesquisa, o preço final é a soma do custo do equipamento (A), frete (B) e impostos (C). Elaborar uma function que execute o somatório e retorne o resultado.

  7. Exemplo 1

  8. Exemplo 2 Exemplo 2

  9. Exemplo 2 Tenho uma matriz 2x6 e devo encontrar o elemento de menor valor. Como se faz?

  10. Exemplo 2 Achando a posição do menor valor de uma matriz: x=[1 2 3 4 5 6 ; 2 10 3 3 2 25]; %Forma linear: xmin=min(x); xmin=min(xmin); [i,j]=find(x==xmin); %Forma condensada: [i,j]=find(x==(min(min(x))));

  11. Exemplo 3 Exemplo 3

  12. Exemplo 3 Para que possamos continuar um projeto é necessário analisar o comportamento do parâmetro Z diante das variáveis X e Y. A equação é: Elabore um gráfico de Z(x,y). Z=exp(-0.5*(X2 + Y2))

  13. Exemplo 3 xx=0:0.01:1; yy=0:0.01:1; [X,Y]=meshgrid(xx,yy); Z=exp(-0.5*(X.^2+Y.^2)); colormap jet figure(1);surf(X,Y,Z); rotate3d on; shading interp;

  14. Exemplo 3

  15. Exemplo 4 Exemplo 4

  16. Exemplo 4 Nesse exemplo desejamos elaborar um gráfico de superfície que uma propriedade termodinâmica. O valor dessa propriedade é função da composição (X1, X2 e K) da mistura. Assim, a base do gráfico será X e Y, e o eixo vertical representa o valor da propriedade dado por: Z=(X.*log(X))+(Y.*log(Y))+(K.*log(K)); Restrição: K refere-se a concentração do terceiro componente. Desse modo, K= 1 – X – Y E K não pode ser negativo!

  17. Exemplo 4 %Malha triangular da base %malha da base xx=0:0.01:1; yy=0:0.01:1; [X,Y]=meshgrid(xx,yy); K=1-X-Y; %aplica a restrição para usar só a base do triangulo %onde existe consistência física (o que nao tem vira "Not a Number") iz=find(K<0);K(iz)=nan; Z=(X.*log(X))+(Y.*log(Y))+(K.*log(K)); %gráfico da superfície colormap jet figure(1);surf(X,Y,Z); rotate3d on; shading interp; xlabel('X1');ylabel('X2');zlabel('DeltaGi/RT');

  18. Exemplo 4

  19. Exemplo 5 Exemplo 5a

  20. Exemplo 5

  21. Exemplo 5

  22. Exemplo 5

  23. Exemplo 5

  24. Exemplo 5 % Definição das constantes do modelo R = 1; % h/m2 A = 2; % m2 Fe = 10; % m3/h % Tempo de simulação t = 0.0 : 0.01 : 10.0; % h % Simulação da altura de líquido h = R*Fe*(1 - exp(-t/(R*A))); % m % Visualização da simulação plot(t,h); title('Simulação do tanque de nível'); xlabel('Tempo (h)'); ylabel('Altura (m)');

  25. Exemplo 5 Verifique a consistência do calculo: a matriz “h” gerada também deve ser 1x1000, já que cada instante “t” gerou um valor “h”. É sempre útil conferir a dimensão das variáveis, principalmente a medida que as rotinas forem tornando-se complexas. Dica!

  26. Exemplo 5 Exemplo 5b

  27. Exemplo 5 Muitas vezes é muito trabalhoso, ou mesmo impossível, encontrar a solução analítica para o conjunto de equações diferenciais. Nesse caso temos que simular usando solução numérica das equações diferenciais. Vamos assumir que o modelo do exemplo 1 não tivesse solução analítica, e então usar o Matlab para estudar o comportamento da altura do nível com o tempo. A equação diferencial será:

  28. Exemplo 5 % Definição das constantes do modelo R = 1; % h/m2 A = 2; % m2 Fe = 10; % m3/h % Tempo de simulação t = 0.0 : 0.01 : 10.0; % h % Simulação da altura de líquido [t,h] = ode45('dhdt',t, 0,[],[R A Fe]); % Visualização da simulação plot(t,h); title('Simulação do tanque de nível'); xlabel('Tempo (h)'); ylabel('Altura (m)'); function dh = dhdt(t,h,flag,par) R = par(1); A = par(2); Fe = par(3); dh = (Fe-(h/R))/A;

  29. Exemplo 5 Nesse caso temos uma equação diferencial, então deveremos usar uma função Matlab específica para a resolução de eq. diferenciais. No caso temos a ODE45. A função ODE45 implementa um esquema de solução de sistemas de EDO’s por método de Runge-Kutta de ordem média (consulte o help sobre ODE45 para maiores detalhes). [t,h] = ode45('dhdt',t, 0,[],[R A Fe]);

  30. Exemplo 5 Os parâmetros enviados entre parênteses são aqueles que devemos passar para a ODE45: -1º argumento de ode45 é uma string contendo o nome do arquivo .m com as equações diferenciais. Neste caso, o arquivo chama-se dhdt.m. -2º argumento é um vetor que pode conter (i) dois elementos: os tempos inicial e final da integração, ou (ii) todos os valores de tempo para os quais deseja-se conhecer o valor da variável integrada. -3º argumento é o vetor contendo as condições iniciais das variáveis dependentes das EDO’s. Os valores dos elementos do vetor de condições iniciais precisam estar na mesma ordem em que as variáveis correspondentes são calculadas na função passada como 1º argumento para ode45 (neste caso, dhdt.m). Nesse caso em particular só temos uma variável dependente, assim temos uma única condição inicial.

  31. Exemplo 5 -4º argumento é o vetor de opções de ode45. Há várias opções do método que podem ser ajustadas. Entretanto, não deseja-se alterar os valores-padrão. Neste caso, é passado um vetor vazio, apenas para marcar o lugar das opções. -5º argumento é um vetor contendo parâmetros de entrada para a função dhdt.m. Observe que a função .m deve ler esses parâmetros na ordem correta (recebe como variável local “par”). Os resultados da simulação são obtidos nos dois parâmetros entre colchetes (t , h).

  32. Exemplo 5 • A codificação do arquivo .m segue o mesmo formato já explicado para funções porém com algumas particularidades. • No caso específico de um arquivo .m que deve ser chamado por uma função de solução EDO’s (todas as ODExx), a declaração deste arquivo deve seguir a sintaxe: • function dy = nomefun(t, y, flag, arg1, ..., argN) • onde • dy é o valor da(s) derivada(s) retornadas • t e y são as variáveis independente e dependente, respectivamente. • Opcional: caso deseje-se receber outros parâmetros, a função deve receber um argumento marcador de lugar chamado flag. Após este, ela recebe quaisquer outros parâmetros.

  33. Exemplo 5 Exemplo 5c

  34. Exemplo 5 É necessário agora guardar alguns termos intermediários realizados no cálculo da function. Por exemplo: function dh = dhdt(t,h,flag,par) global Y tvetor R = par(1); A = par(2); Fe = par(3); dh = (Fe-(h/R))/A; Quero guardar: Y=Fe+A+dh; Como se faz?

  35. Exemplo 5 % Definição das constantes do modelo clear all global Y tvetor R = 1; % h/m2 A = 2; % m2 Fe = 10; % m3/h % Tempo de simulação t = 0.0 : 0.01 : 10.0; % h % Simulação da altura de líquido [t,h] = ode45('dhdt',t, 0,[],[R A Fe]); % Visualização da simulação plot(t,h); title('Simulação do tanque de nível'); xlabel('Tempo (h)'); ylabel('Altura (m)'); figure(2) plot(tvetor,Y,'*b') O programa principal ganhou apenas três linhas novas. O comando global vai estabelecer comunicação com a function e os comandos figure e plot fazem o gráfico do novo parâmetro.

  36. Exemplo 5 function dh = dhdt(t,h,flag,par) global Y tvetor R = par(1); A = par(2); Fe = par(3); dh = (Fe-(h/R))/A; Ylinha=Fe+A+dh; Y=[Y Ylinha]; tvetor=[tvetor t]; Dentro da function é necessário usar o comando global para estabelecer a troca dos novos dados. O novo dado é: Ylinha=Fe+A+dh; Para acumular usamos a matriz Y. O vetor “tvetor” guarda o tempo referente para cada valor de Y calculado.

  37. Exemplo 5

  38. Exemplo 6 Exemplo 6

  39. Exemplo 6

  40. Exemplo 6

  41. Exemplo 6 Matlab Real dy(1) dh/dt y(1) h dy(2) dT/dt y(2) T Traduzindo as equações diferenciais para o Matlab:

  42. Exemplo 6 % Definição das constantes do modelo R = 1; % h/m2 A = 2; % m2 Fe = 10; % m3/h Cp = 0.75; % kJ/(kg . K) Ro = 1000; % kg/m3 U = 150; % kJ/(m2 . s . K) Te = 530; % K Th = 540; % K % Tempo de simulação t = 0.0 : 0.01 : 10.0; % h % Simulação do modelo [t,y]=ode45('dydt',t,[(5/A) Th],[],[U A Ro Cp Fe R Te Th]);

  43. Exemplo 6  % Visualização da simulação figure(1); plot(t,y(:,1)); title('Tanque de aquecimento'); xlabel('Tempo (h)'); ylabel('Altura (m)'); figure(2); plot(t,y(:,2)); title('Tanque de aquecimento'); xlabel('Tempo (h)'); ylabel('Temperatura (K)');

  44. Exemplo 6 A única modificação em relação ao exemplo anterior é que estamos passando duas condições iniciais (pois existem duas variáveis dependentes): [t,y]=ode45('dydt',t,[(5/A) Th],[],[U A Ro Cp Fe R Te Th]);

  45. Exemplo 6 A função .m tem o código apresentado a seguir: function dy = dydt(t,y,flag,par); U = par(1); A = par(2); Ro = par(3); Cp = par(4); Fe = par(5); R = par(6); Te = par(7); Th = par(8); dy(1) = (Fe-(y(1)/R))/A; dy(2) = (1/y(1))* ( ((Fe*Te/A)+(U*Th/(Ro*Cp)))... - ( y(2)*((Fe/A)+(U/(Ro*Cp)))) ); dy = dy(:);

  46. Exemplo 6 O vetor dy é criado como vetor linha (dy(1)) e (dy(2)). Porém temos que retornar como vetor coluna. Use o comando: matriz coluna = matriz linha (:) Dica!

  47. Exemplo 6 Quando for fazer os gráficos no programa principal lembre-se que a primeira coluna de “dy” refere-se a “h” e a segunda a “T”. Então para graficar h vs. tempo faça: figure(1); plot(t,y(:,1)); title('Tanque de aquecimento'); xlabel('Tempo (h)'); ylabel('Altura (m)'); Dica!

  48. Exemplo 7 Exemplo 7

  49. Exemplo 7 Em uma amostragem experimental obtivemos o seguinte conjunto de pontos: xexp=[0 1 2 3 4 5]; yexp=[-25 -10 7 6.7 -5 -15]; Ajuste um polinômio de 2ª ordem para os dados

  50. Exemplo 7 close all % chute inicial: A=4; B=2; C=3; X0=[A;B;C]; options = optimset('display','iter'); X = fminsearch('UUm',X0,options); disp('Resultado (A, B, C)') disp(X) figure(2) xexp=[0 1 2 3 4 5]; yexp=[-25 -10 7 6.7 -5 -15]; x=0:0.01:5; y=(X(1)*(x.^2))+(X(2).*x)+X(3); plot(x,y,'-b') hold on plot(xexp,yexp,'*r') Programa principal:

More Related