Baixe o app para aproveitar ainda mais
Prévia do material em texto
PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 1 Descrição E/S de sistemas LIT – Exercícios computacionais A elaboração dos exercícios em 2012 contou com a colaboração dos monitores: Amanda Paula e Leonardo Abdala Elias. Esta parte da Lista 2 visa ilustrar a utilidade do Matlab no estudo de fundamentos da teoria de sistemas. Com o intuito de auxiliar o aprendizado dos conceitos vistos no Capítulo 2 iremos conferir alguns exercícios da Lista 2A com os comandos do MatLab: • SYS = tf(num,nen) • [h,t] = impulse(SYS) • [h,t] = step(SYS) • [y,t] = initial(SYS,X0) • [R,P,K] = residue(B,A) • y = conv(x1,x2).*delta • H = freqs(num,den,w) • SYS = series(SYS1,SYS2) • SYS = parallel(SYS1,SYS2) Para facilitar o uso dos comandos, os exercícios estão organizados em 6 grupos. No final da lista você vai encontrar exemplos do uso de cada um dos comandos. Além disso, pode-se obter maiores detalhes sobre cada comando digitando help function (em que function designa uma das funções acima) na janela de comandos do MatLab e uma ajuda detalhada será exibida. (1) Na Lista 2A, há alguns exercícios envolvendo a determinação da resposta impulsiva do sistema a partir da equação diferencial que o descreve. Sua resposta teórica pode ser conferida com o MatLab com o auxilio dos comandos tf e impulse para gerar, respectivamente, a função de transferência e a resposta impulsiva dos sistemas. Adicionalmente, é possível se obter com o MatLab a resposta ao degrau de um dado sistema usando o comando step. Usando os comandos tf, impulse confira os resultados que você obteve nos exercícios 10a, 10c, 11a, 14a, 14b, 14c da Lista 2A. O comando step fornece a resposta ao degrau unitário. Use o comando step para mostrar a relação entre as respostas ao impulso e ao degrau, lembrando que a derivada de 1(t) é igual a δ(t). Dica: veja o Exemplo 1. (2) Com a função initial do MatLab é possível obter a resposta à entrada nula do sistema. Basta definir a função de transferência com o comando tf, aplicar a função ss, e finalmente aplicar a função initial. A função ss gera, a partir da função de transferência, a descrição no espaço de estados do sistema. Essa forma de descrever o sistema será vista em detalhes no Capítulo 5. O MatLab utiliza a descrição em espaço de estados para, a partir do vetor de condições inicias, gerar a resposta do sistema à entrada nula. Quando o numerador da função de transferência é uma constante as condições iniciais são definidas através de um vetor. No caso de um sistema de segunda ordem o primeiro elemento do vetor corresponde a )0(y& e o segundo elemento corresponde a )0(y . Com os comandos tf, ss e initial confira a resposta do Item 11b da Lista 2A. Dica: veja o Exemplo 2. PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 2 (3) Você pode utilizar o comando residue do MatLab para determinar a expansão em frações parciais de uma função racional. Com o comando residue, confira a expansão em frações parciais que você encontrou nos Exercícios 10, 11, 13, 14, 15, 20 da Lista 2A. Dica: veja o Exemplo 3 (4) A operação de convolução pode ser realizada em forma discretizada com o comando conv do MatLab, assim como está descrito em detalhes no Capítulo 2 da apostila. Com o comando conv, confira os resultados teóricos que você encontrou nos Exercícios 6.c, 1, 4.b, 2.a, 2.b, 7 da Lista 2A. Dica: veja o Exemplo 4 (5) A resposta em frequência de um sistema linear invariante no tempo (LIT) de tempo contínuo pode ser determinada no MatLab usando-se a função freqs, que é útil quando se deseja obter a resposta em regime permanente senoidal. Com o comando freqs, confira os resultados obtidos nos exercícios 16d, 17b, 19 e 20 da Lista 2A. Dica: veja o Exemplo 5. (6) No MatLab, as funções series e parallel podem ser utilizadas para determinar o sistema resultante quando dois, ou mais, sistemas estão associados em série ou em paralelo, respectivamente. Utilize as funções series e parallel para conferir as respostas dos Exercícios 5, 12 e 16 da Lista 2A. Dica: veja o Exemplo 6. Exemplo 1: resposta impulsiva Suponha que seja pedido para determinar a resposta impulsiva e ao degrau unitário do seguinte sistema: Se você resolver esse exercício analiticamente, você deve obter como resposta impulsiva a função: e a resposta ao degrau é a sua integral. O código do Quadro 1 mostra como usar as funções impulse e step para verificar a resposta impulsiva que você obteve analiticamente ao resolver o Exercício 1. A Figura 1 mostra a comparação entre a resposta impulsiva teórica e a resposta impulsiva obtida com o comando impulse do Matlab. Note a concordância entre os dois resultados o que mostra que a resposta analítica é, de fato, a solução correta do problema. Além disso, a Figura 2 mostra também a resposta ao degrau obtida com o comando step do Matlab (gráfico à esquerda). Nesta mesma figura (gráfico à direita) é possível observar a relação que existe entre a resposta ao degrau e a resposta ao impulso do sistema, ou seja, lembrando que a função delta de Dirac (impulso) é igual à derivada de 1(t) e como o sistema é linear, temos que a derivada da resposta ao impulso é igual à PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 3 resposta ao degrau. Na figura é possível perceber um pequeno erro entre as respostas que é devido ao método de derivação existente no MatLab, que é apenas uma aproximação da derivada do sinal. Quadro 1 %Coeficientes do numerador da funcao de transferencia N=[1]; %Coeficientes do denominador da funcao de transferencia D=[1 3 2]; %Gerar funcao de transferencia sys=tf(N,D); %Gerar resposta impulsiva [h,t1]=impulse(sys); %Gerar a resposta ao degrau [y,t2]=step(sys); %Gerar grafico da resposta impulsiva figure(1) plot(t1,h,'linewidth',3); %Gerar o grafico da resposta ao degrau figure(2) plot(t2,y,'linewidth',3); %Resposta impulsiva teorica h_teo=-exp(-2*t1)+exp(-t1); %Comparar resposta teorica com resposta impulsiva gerada no matlab figure(1) hold on plot(t1,h_teo,'r:','linewidth',3); %Legenda legend('Simulada','Teórica') grid xlabel('t'); ylabel('h(t)'); %Comparar a derivada da resposta ao degrau do sistema com a resposta %impulsiva dydt = diff(y)./diff(t2); figure(3) plot(t1,h,'b',t2(2:end),dydt,'r:','linewidth',3); %Legenda legend('Resposta impulsiva','Derivada da resposta ao degrau') grid xlabel('t'); ylabel('h(t)'); PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 4 Figura 1 - Resposta Impulsiva Figura 2 - Resposta ao Degrau do Sistema (curva a esquerda) e sua relação com a resposta ao impulso (curva à direita). Exemplo 2: resposta a entrada nula Vamos encontrar a resposta a entrada nula considerando as condições iniciais e para o Exemplo 1, descrito pela Equação Diferencial (1). A solução desse problema é dada por O código do Quadro 2 compara essa solução analítica com a gerada pelo comando initial. O gráfico da Figura 2 mostra a concordância entre a resposta obtida analiticamente e a resposta simulada pelo Matlab. PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 5 Quadro 2 %Coeficientes do numerador da funcao transferencia N=[1]; %Coeficientes do denominador da funcao transferencia D=[1 3 2]; %Gerar funcao transferencia sys=tf(N,D); sys=ss(sys); %Condicoes inicial y0=[0 1]; %Gerar a resposta a entrada nula [y,t]=initial(sys,y0); %Gerar grafico da resposta a entrada nula figure plot(t,y,'linewidth',3); %Respostaa entrada nula teórica y_teo=2*exp(-t)-exp(-2*t); %Comparar resposta teorica com resposta impulsiva gerada no MatLab hold on plot(t,y_teo,'r:','linewidth',3); %Legenda legend('Simulada','Teórica') grid xlabel('t'); ylabel('y(t)') PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 6 0 1 2 3 4 5 6 7 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 t y(t ) Simulada Teórica Figura 3 - Resposta à entrada nula Exemplo 3: Expansão em frações parciais utilizando o MatLab A função transferência sistema descrito no Exemplo 1 é dada por: A expansão em frações parciais pode ser encontrada com a função residue, cuja sintaxe é a seguinte: [R,P,K] = residue(B,A), em que os vetores A, B, R, P e K se relacionam da seguinte forma: Para testar, você pode digitar o comando [R,P,K] = residue(N,D) na janela de comandos do MatLab com N=[1] e D=[1 3 2]. Compare o resultado obtido com a expansão em frações parciais da função transferência. Exemplo 4: Operação de convolução no MatLab. A operação de convolução na sua forma discretizada também pode ser realizada com o auxílio do MatLab. Como exemplo, realizaremos a convolução dos seguintes sinais: PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 7 Resolvendo essa operação analiticamente, você encontrará o seguinte resultado: O trecho de código no Quadro 3, realiza a operação de convolução com o MatLab. Para conferir o resultado da convolução teórica, podemos exibir o gráfico da convolução obtida analiticamente na mesma figura do gráfico da convolução calculada com o MatLab, assim como mostrado no trecho de código no Quadro 4. A concordância entre os dois métodos de cálculo da convolução está indicada na Figura 3. Quadro 3 %Convolucao %Passo de discretizacao delta=.001; %%%%%Definicao dos sinais%%%%%% %Tempo inicial tih=0; %Tempo final tfh=4; th=tih:delta:tfh; h=exp(-th); %Tempo inicial tix=2; %Tempo final tfx=5; tx=tix:delta:tfx; x=t2; %%%%%Convulacao MatLab%%%%%% ty=tih+tix:delta:tfh+tfx; y=conv(x,h)*delta; figure plot(ty,y,'linewidth',3) hold on PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 8 2 3 4 5 6 7 8 9 0 0.5 1 1.5 2 2.5 3 3.5 4 t y(t ) Matlab Calculada Figura 3 - Operação discretizada da convolução PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 9 Quadro 4 Exemplo 5: Determinação da resposta em frequência do sistema Seja um sistema descrito pela seguinte função de transferência no domínio de Laplace: Deseja-se a resposta em regime permanente senoidal quando a entrada é A rotina do Quadro 5 mostra como obter a resposta em frequência do sistema H(s), cujas curvas são dadas nas figuras que seguem. Quadro 5 %Convolucao %Passo de discretizacao delta=.001; %Definicao dos sinais t1=0:delta:4; h=exp(-t1); t2=2:delta:5; x=t2; %Convulacao MatLab y=conv(x1,x2)*delta; figure plot(2:delta:9,y,'linewidth',3) hold on %Convolucao Calculada ty1=2:delta:5; y1=ty1-1-exp(2-ty1); ty2=5:delta:6; y2=exp(-ty2).*(4*exp(5)-exp(2)); ty3=(6:delta:9); y3=exp(-ty3).*(4*exp(5)+exp(ty3-4).*(5-ty3)); plot(ty1,y1,'r:','linewidth',3) plot(ty2,y2,'r:','linewidth',3) plot(ty3,y3,'r:','linewidth',3) legend('MatLab','Calculada') grid xlabel('t') ylabel('y(t)') PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 10 Figura 4 - Resposta em Frequência (Módulo e Fase) Note que, analisando a resposta em frequência indicada na Figura 4, para ω = 9rad/s (frequência fundamental do sinal de entrada) o módulo da função de transferência é - 10.46dB (equivalente a 0.3) e a fase tem um valor de -2.498 rad. Com isso, temos que a saída do sistema quando a entrada é o sinal u(t) é dada por: ou seja, a amplitude da saída é igual a amplitude da entrada multiplicada pelo módulo da função de transferência na frequência fundamental do sinal e a fase da saída é a fase da entrada acrescida da defasagem imposta pelo sistema. Exemplo 6: Associação em série e paralelo de sistemas num=[27]; %Numerador de H(s) den=[1 6 9]; %Denominador de H(s) w=0:0.01:10; %Vetor de frequenciasem rad/s H=freqs(Num,Den,w); figure(1) axes('fontsize',12) subplot(2,1,1), plot(w,20.*log10(abs(H)),'k','LineWidth',3) grid xlabel('Frequencia (rad/s)','fontsize',14,'fontweight','d'), ylabel('Ganho (dB)','fontsize',14,'fontweight','d') title('Modulo do sistema H(s)','fontsize',14,'fontweight','b') subplot(2,1,2), plot(w,angle(H),'k','LineWidth',3) grid xlabel('Frequencia (rad/s)','fontsize',14,'fontweight','d'), ylabel('Fase (rad)','fontsize',14,'fontweight','d') title('Fase do sistema H(s)','fontsize',14,'fontweight','b') PTC2307 - Sistemas e Sinais - Lista 2B - Março de 2013 11 A rotina abaixo (Quadro 6) é usada para determinar a associação em série e em paralelo de dois sistemas descritos pelas seguintes funções de transferência: e Quadro 6
Compartilhar