Upload
julio-cesar-santos
View
240
Download
8
Embed Size (px)
DESCRIPTION
Apostila de MATLAB. PET-Elétrica, 3a edição.
Citation preview
UNIVE RSIDADE FEDE RAL DE CAMP INA GRA NDE - UFCG CENT RO DE ENGENHAR IA ELÉTR ICA E INFORMÁTICA - CEEI UNIDADE ACADÊMI CA DE ENGE NHA RIA ELÉTR ICA - UAEE
PROGRAMA DE EDU CAÇÃO TUTORIA L - PET
MINICURSO:
Análise de Circuitos no Matlab®
3ª Edição
Fevereiro de 2012
2
Autores e colaboradores
1ª Edição:
Edson Porto da Silva
Felipe Vigolvino Lopes
Nustenil Segundo de M. L. Marinus
2ª Edição:
Felipe Maia Másculo
Ilis Nunes A. Cordeiro
Jessiedna Araújo de Sá
3ª Edição:
Andréia Bispo do Nascimento
Nayara Brandão de Freitas
Priscila Dias Pereira
3
Sumário 1. Apresentação ........................................................................................................................ 5
1.1 Ambiente do MATLAB® ................................................................................................. 5
2. Introdução ............................................................................................................................. 7
2.1 Sintaxe ........................................................................................................................... 7
2.2 Constantes ..................................................................................................................... 8
2.3 Informações sobre a área de trabalho .......................................................................... 8
2.4 Operações básicas ......................................................................................................... 9
2.5 Matrizes ......................................................................................................................... 9
2.5.1. Adição e Subtração ................................................................................................... 11
2.5.2. Multiplicação ............................................................................................................ 12
2.5.3. Divisão ...................................................................................................................... 13
2.5.4. Potenciação .............................................................................................................. 13
2.6 Operações “Elemento por elemento” ......................................................................... 13
2.6.1. Adição e Subtração ................................................................................................... 14
2.6.2. Multiplicação e Divisão ............................................................................................. 14
2.6.3. Potenciação ............................................................................................................... 14
2.7 Números complexos .................................................................................................... 15
3. Manipulação de vetores e matrizes .................................................................................... 17
3.1 Geração de vetores ..................................................................................................... 17
4. Funções ............................................................................................................................... 19
5. Operações com Polinômios ................................................................................................. 20
5.1 Operações com Polinômios ......................................................................................... 21
5.1.1. Adição .................................................................................................................. 21
5.1.2. Multiplicação ....................................................................................................... 21
5.1.3. Divisão ................................................................................................................. 21
5.1.4. Cálculo da derivada ............................................................................................. 21
5.2. Utilizando variáveis simbólicas ................................................................................... 22
6. Gráficos ............................................................................................................................... 25
6.1. Em três dimensões ...................................................................................................... 29
6.1.1. Curvas definidas por equações paramétricas ..................................................... 29
6.1.2. Gráficos de superfícies ........................................................................................ 30
4
7. Programação ....................................................................................................................... 34
7.1. Operadores Lógicos ..................................................................................................... 34
7.2. Operadores Relacionais ............................................................................................... 35
7.3. Funções Lógicas e Relacionais ..................................................................................... 36
7.4. Controle de Fluxo ........................................................................................................ 37
7.4.1. If – elseif - else ..................................................................................................... 37
7.4.2. Switch .................................................................................................................. 38
7.5. Loops ........................................................................................................................... 40
7.5.1. For ....................................................................................................................... 40
7.5.2. While ................................................................................................................... 42
7.6. Definindo funções e scripts ......................................................................................... 43
7.6.1. Os scripts ............................................................................................................. 43
7.6.2. As funções ........................................................................................................... 44
8. Características dos constituintes básicos dos circuitos elétricos ........................................ 46
8.1. O resistor ..................................................................................................................... 46
8.2. O capacitor .................................................................................................................. 47
8.3. O indutor ..................................................................................................................... 48
8.4. Fontes de alimentação ................................................................................................ 49
9. Formas de representação dos circuitos na linguagem do MATLAB®................................... 50
9.1. Um circuito resistivo com alimentação DC ................................................................. 50
9.2. Um circuito em regime senoidal ................................................................................. 51
10. Análise de circuitos elétricos ........................................................................................... 54
10.1. Método das tensões de nó ...................................................................................... 54
10.2. Método das tensões de nó + fontes dependentes ................................................. 55
10.3. Método das correntes de malha ............................................................................. 57
10.4. Método das correntes de malha + fontes dependentes ......................................... 58
10.5. Circuitos equivalentes de Thévenin e Norton ......................................................... 59
10.6. O Princípio da superposição .................................................................................... 63
11. Respostas dos circuitos RL e RC a um degrau ................................................................. 67
12. Resposta natural e a um degrau de um circuito RLC série e paralelo ............................. 70
13. Potência complexa .......................................................................................................... 76
14. Resolução de circuitos no ambiente MATLAB® .............................................................. 81
15. Resposta em Frequência no Domínio da Freqüência e Diagrama de Bode........... ........85
5
1. Apresentação
O MATLAB® é um software destinado a realizar cálculos com matrizes
(MATLAB® = MATrixLABoratory) e não uma linguagem de programação, como
comumente se imagina. O seu uso é bastante abrangente, sendo utilizado em vários
meios industriais e acadêmicos, por permitir a realização de aplicações ao nível da
análise numérica, de análise de dados, cálculos matriciais, processamento de sinais,
construção de gráficos, otimização de funções, entre outras, abordando uma banda
larga de problemas científicos e de engenharia.
O uso do MATLAB® se torna bastante simples devido aos seus comandos
bastante similares a forma das expressões algébricas, permitindo assim a resolução de
problemas numéricos em apenas uma fração do tempo que se gastaria para escrever
um programa semelhante numa linguagem de programação clássica.
1.1 Ambiente do MATLAB®
A interface do MATLAB® está ilustrada na figura abaixo, ela mostra três
diferentes janelas: Command Window, Workspace e Command History.
Figura 1.1: Interface do Matlab®
O espaço da janela de comando (Command Window) é utilizado para
fornecer as diretivas ao programa. No Workspace é possível visualizar as variáveis
criadas e os valores atribuídos. No espaço do Command History, ficam armazenados
todos os comandos já executados.
6
É possível guardar códigos no próprio ambiente do MATLAB®, sem a
necessidade de utilizar editores de texto. Para isto, é necessário abrir um arquivo.m
(File>New>M-File) escrever o código neste arquivo e salvá-lo.
Figura 1.2: Arquivo M-File
O prompt do MATLAB® é o padrão “>>”. O prompt“>>” significa que o
MATLAB® está “esperando” um comando do utilizador, sendo comumente chamando
de “prompt de comando”. Todos os comandos devem ser finalizados teclando-se
<enter>.
O comando mais importante do MATLAB® é o “help”, o qual exibe todos os
comandos e símbolos sintáticos disponíveis. O comando “help nome” fornece
informações sobre o comando nome. Como exemplo, faça:
>>help plot
Aperte <enter>e veja o que aparece.
7
2. Introdução
O MATLAB® trabalha com matrizes numéricas, podendo conter elementos
complexos. Quando usamos apenas um escalar, estamos na verdade usando uma matriz 1x1.
2.1 Sintaxe
As duas principais terminações do MATLAB® são a vírgula (,) e o ponto-e-vírgula (;).
Quando um comando é terminado com vírgula seu resultado é expresso na tela e atribuído à
variável do sistema ans (de answer, ou resposta), enquanto que, com a terminação ponto-e-
vírgula, o resultado do comando não é expresso na tela. Quando a terminação é uma vírgula,
esta pode ser suprimida. Para continuar um comando na outra linha, basta usar a terminação
três pontos (...). Para fazer comentários, usa-se o sinal de por cento (%) no início da linha.
Exemplo 2.1: Digite:
>>5 + 6,
>>5 + 6
>>5 + 6;
>>% 5 + 6
>>5+ ...
6
Para inicializar uma variável, basta fazer, por exemplo, a = 5.
Obs: O MATLAB® faz distinção entre maiúsculas e minúsculas.
Algumas regras devem ser seguidas para nomear variáveis. Os nomes de
variáveis devem ser nomes iniciados por letras e não podem conter espaços nem
caracteres de pontuação. Assim, modificando o exemplo 1:
Exemplo 2.2:
Digite: >>A = 5;
>>B = 6
>>A + B,
>>A + B
8
>>A + B;
>>% A + B
>>A+ ...
B
2.2 Constantes
O MATLAB® também possui várias variáveis predefinidas, algumas listadas
abaixo:
ans – variável usada para os resultados.
pi– número π
eps- menor número tal que, quando adicionado a 1, cria um número
maior que 1 no computador.
inf – significa infinito
NaN – não é um número, por exemplo, 0/0.
i e j – unidade imaginária √(-1)
nargin– número de argumentos de entrada de uma função.
nargout – número de argumentos de saída de uma função.
realmin – menor número que o computador pode armazenar.
realmax– maior número que o computador pode armazenar.
2.3 Informações sobre a área de trabalho
Para listar as variáveis existentes no espaço de trabalho, basta usar o
comando who ou whos. O comando clear limpa o espaço de trabalho, extinguindo
todas as variáveis.
Exemplo 2.3: Digite:
>>A = 8;
>>a = 6;
>>A
>>a
>>who
9
>>clear
>>a
>>A
2.4 Operações básicas
Para realizar as quatro operações básicas da matemática, usamos os símbolos
+, -, * e / para soma, subtração, multiplicação e divisão, respectivamente.
Para se calcular um número elevado a outro, usa-se o símbolo ^. Assim, para
o cálculo da raiz quadrada podemos usar (número)^(1/2) ou apenas usar o comando
sqrt(número).
Obs: As expressões são avaliadas, primeiramente, da esquerda para a
direita, com a potência tendo a mais alta prioridade, seguida pela multiplicação e
divisão, que têm igual precedência, e por último vêm a adição e a subtração, que
possuem o mesmo peso. Para alterar essa ordem, usamos parênteses, sendo os mais
internos avaliados antes dos mais externos.
Parênteses também são úteis para calcular expressões grandes e seu uso
incorreto pode gerar erros. Por exemplo,
>> 9^1/2 = 4.5
>>9^(1/2) = 3
Exemplo 2.4: Digite:
>> a = 5 + 7*(5+9) - (6+8)/(5-3)
>> b = 4 - (6 - (8/(9+7))*4) - sqrt(7+9) + (5+1)^(7+1) - 6^8
>> total = a+b
2.5 Matrizes
Para criar uma variável que armazena uma matriz, basta escrever os
elementos da matriz entre colchetes [...], sendo que os elementos de uma mesma
linha são separados por vírgulas ou por espaços e as linhas são separadas com o uso de
ponto-e-vírgula ou por quebra de linha. Por exemplo, para escrever a matriz:
10
A =
9
6
3
8
5
2
7
4
1
Fazemos:
>>A = [1 2 3; 4 5 6; 7 8 9]
Ou
>>A = [1, 2, 3; 4, 5, 6; 7, 8, 9]
Ou
>>A = [1 2 3
4 5 6
7 8 9]
Para acessar qualquer elemento de uma matriz, fazemos
NomedaMatriz(linha,coluna). Por exemplo:
>>A(2,3) = 6
Para se ter os elementos de uma coluna da matriz, fazemos NomedaMatriz(:,
coluna). Por exemplo:
A(:,2) =
8
5
2
Para se ter os elementos de uma linha da matriz, fazemos
NomedaMatriz(linha, :). Por exemplo:
A(2,:) = [ 4 5 6 ].
As operações envolvendo matrizes são semelhantes às operações com
escalares.
Soma: A + B
Subtração: A – B
11
Produto: A*B (Deve obedecer à regra do produto de matrizes)
Transposta: A’
Multiplicação por um escalar: n*A (n é escalar)
Potência: A^k (k é um escalar)
2.5.1. Adição e Subtração
A adição e subtração de matrizes são indicadas, respectivamente, por “+" e "-". As
operações são definidas somente se as matrizes possuírem as mesmas dimensões.
Exemplo 2.5:
>> A = [1 2 3; 4 5 6; 7 8 9];
>> B = [9 8 7; 6 5 4; 3 2 1];
Como A e B têm as mesmas dimensões, a operação pode ser realizada.
>>Subtração =A - B
Subtração =
-8 -6 -4
-2 0 2
4 6 8
>> Soma = A + B
Soma =
10 10 10
10 10 10
10 10 10
12
As operações de adição e subtração também são definidas se um dos operadores for
um escalar, ou seja, uma matriz 1x1. Neste caso, o escalar é adicionado ou subtraído de todos
os elementos do outro operador. Por exemplo:
>>x = [ -1 0 2]’;
>> y = x – 1
y =
-2
-1
1
2.5.2. Multiplicação
A multiplicação de matrizes é indicada por "*". A multiplicação x*y é definida
somente se a segunda dimensão de x for igual à primeira dimensão de y. A multiplicação:
>> x'* y
ans =
4
Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.
>>pi*x
ans =
-3.1416
0
6.2832
13
2.5.3. Divisão
A divisão de matrizes requer especial atenção, pois existem dois símbolos
para divisão de matrizes no MATLAB® "\" e "/". Se A é uma matriz inversível quadrada
e b é um vetor coluna (ou linha) compatível, então A\b e b/A correspondem
respectivamente à multiplicação à esquerda e à direita da matriz b pela inversa da
matriz A, ou inv(A)*b e b*inv(A), mas o resultado é obtido diretamente:
X = A\b é a solução de A*X = b
X = b/A é a solução de X*A = b
2.5.4. Potenciação
A expressão A^p eleva A à p-ésima potência e é definida se A é matriz quadrada e p
um escalar. Se p é um inteiro maior do que um, a potenciação é calculada como múltiplas
multiplicações. Por exemplo,
>>A^3
ans =
279 360 306
684 873 684
738 900 441
2.6 Operações “Elemento por elemento”
O termo operações com conjuntos é utilizado quando as operações aritméticas são
realizadas entre os elementos que ocupam as mesmas posições em cada matriz (elemento por
elemento). As operações com conjuntos são efetuadas como as operações usuais, utilizando-
se os mesmos caracteres ("*", "/", "\", "^" e "‘ ") precedidos por um ponto "." (".*", "./", ".\",
".^" e " .‘ ").
14
2.6.1. Adição e Subtração
Para a adição e a subtração, as operações com conjuntos e as operações com
matrizes são iguais. Deste modo os caracteres "+" e "-" são empregados do mesmo modo e
considerando as mesmas restrições de utilização.
2.6.2. Multiplicação e Divisão
A multiplicação de conjuntos é indicada por “ .* ”. Se A e B são matrizes com as
mesmas dimensões, então A.*B indica um conjunto cujos elementos são simplesmente o
produto dos elementos individuais de A e B. Por exemplo, se:
>> x = [1 2 3]; y = [4 5 6];
>> z = x .* y
z =
4 10 18
As expressões A./B e A.\B formam um conjunto cujos elementos são simplesmente
os quocientes dos elementos individuais de A e B. Assim,
>> z = x.\ y
z =
4.0000 2.5000 2.0000
2.6.3. Potenciação
A potenciação de conjuntos é indicada por “.^”. A seguir, são mostrados alguns
exemplos utilizando os vetores x e y. A expressão:
>> z = x .^ y
z =
1 32 729
15
A potenciação pode usar um escalar.
>> z = x.^2
z =
1 4 9
Ou a base pode ser um escalar.
>> z = 2.^[x y]
z =
2 4 8 16 32 64
2.7 Números complexos
O MATLAB® trabalha de forma eficiente com números complexos. Como foi
citada anteriormente, a unidade imaginária é representada por i ou j. Dessa forma,
para escrever um número complexo, basta fazer:
>> z= 3 + 4*i
ou
>> z= 3 +4*j
Este número complexo se encontra na forma retangular. Podemos também
representar na forma polar, da seguinte forma:
>> w= r * exp(i*theta)
>> w = 5*exp(i*pi)
Onde r é a magnitude e theta é o ângulo.
Para se obter matrizes complexas, usamos as duas formas mostradas abaixo:
>> A= [1 2; 3 4]+i*[5 6;7 8]
e
16
>> A= [1+5*i 2+6*i; 3+7*i 4+8*i]
Ambas as formas produzem o mesmo resultado.
Se i ou j forem usados como variáveis, de forma que tenham seus valores
originais modificados, uma nova unidade complexa deverá ser criada e utilizada de
maneira usual:
>>ii=sqrt(-1);
>> z = 3 + 4*ii
Para se obter o módulo e o ângulo de um número complexo, basta usar as
funções abs(x) e angle(x), respectivamente.
Assim, para z = 3 + 4j, temos
>> z = 3 + 4j
>>abs(z) = 5
>>angle(z) = 0.9273
Obs: É importante observar que o MATLAB® só trabalha com radianos. Para
transformar para graus basta multiplicar o ângulo por 180/pi.
17
3. Manipulação de vetores e matrizes
3.1 Geração de vetores
3.1.1. Gerar Vetores
Para gerar vetores, podemos usar o caractere “:”.
Podemos fazer:
>> x = 1:10
x =
1 2 3 4 5 6 7 8 9 10
Percebemos que foi gerado um vetor com números de 1 até 10, com incremento de
uma unidade.
3.1.2. Incrementos de Unidade
Podemos usar outros incrementos diferentes da unidade, fazendo:
>> x = 1 : 2 : 10
ans =
1 3 5 7 9
Muitas vezes é útil usar incrementos negativos.
>> z = 6: -1: 1
z =
6 5 4 3 2 1
3.1.3. Linspace
Com a função linspace, podemos gerar vetores linearmente espaçados.
18
>>linspace(1, 10, 5)
ans =
1.0000 3.2500 5.5000 7.7500 10.0000
Cria um vetor linearmente espaçado de 1 a 10 com 5 elementos.
3.1.4. Outras Funções Úteis
Outras funções úteis são dadas abaixo:
logspace(x1, x2, k) – cria um vetor com espaçamento logaritmo de x1 até x2
com k elementos.
eye(n,m) – gera uma matriz identidade nxm.
ones(n,m) – gera uma matriz com elementos unitários nxm.
zeros(n,m) – gera uma matriz nxm com elementos nulos.
rand(n,m) – gera uma matriz nxm com elementos aleatórios com distribuição
uniforme entre 0 e 1.
19
4. Funções
O MATLAB® possui diversas funções pré-definidas, sendo que a maioria pode ser
utilizada da mesma forma que seria escrita matematicamente. Algumas dessas funções são
listadas abaixo:
abs(x) - valor absoluto de x.
cos(x) – cosseno de x.
acos(x) - arco cosseno de x.
sin(x) – seno de x.
asin(x) - arco seno de x.
tan(x) – tangente de x.
atan(x) - arco tangente de x.
exp(x) - exponencial de x.
gcd(x,y) – máximo divisor comum de x e y.
lcm(x,y) - mínimo múltiplo comum de x e y.
log(x) - logaritmo de x na base e.
log10(x) - logaritmo de x na base 10.
rem(x,y) - resto da divisão de x por y.
sqrt(x) - raiz quadrada de x.
20
5. Operações com Polinômios
Polinômios são funções de uma única variável, que seguem a forma geral
abaixo:
( )
É muito comum, no estudo de controle de sistemas, lidar com estas funções.
O MATLAB® dispõe de várias ferramentas que auxiliam o trato de polinômios, vejamos
como utilizar alguns dos recursos disponíveis.
Sejam os coeficientes do polinômio. É útil guardar estes
valores num vetor, com o cuidado especial de incluir também valores iguais a zero.
A função polyval(a,x) recebe dois vetores, o primeiro referente ao vetor de
coeficientes, e o segundo é apenas um conjunto de valores qualquer. Esta função
retornará um vetor do mesmo tamanho do vetor x e corresponderá aos valores de x
aplicados ao polinômio definido por a.
A função roots(a) recebe o vetor de coeficientes na entrada e retorna um
vetor coluna com as raízes do polinômio definido por a.
É possível também, definir um polinômio sabendo inicialmente quais as suas
raízes, isto é possível através da função poly que recebe um vetor contendo as raízes e
gera um vetor de coeficientes.
Exemplo 5.1:
Seja o polinômio ( ) , encontre as raízes e os valores de
( ) para .
>> a = [5,0,8,-10,0];
>> x = -3:3;
>>r = roots(a)
>> polyval(a,x)
%Podemos exemplificar também o uso da função poly que deve retornar um vetor
idêntico ao vetor a já definido.
>>poly(r)
21
5.1 Operações com Polinômios
5.1.1. Adição
Ao somar os vetores de coeficientes de dois polinômios, estamos
automaticamente somando os polinômios, no entanto, nesta operação, é preciso que
os dois vetores sejam do mesmo tamanho, isto implica que é preciso completar o
menor dos vetores com zeros nos primeiros elementos.
5.1.2. Multiplicação
A multiplicação entre um escalar e um polinômio é obvia, basta multiplicar o
escalar pelo vetor de coeficientes do polinômio.
Para efetuar a multiplicação entre polinômios há uma função específica
chamada conv que receberá os dois vetores de coeficientes e retornará o vetor de
coeficientes resultante da multiplicação.
5.1.3. Divisão
Similar à multiplicação, a divisão entre polinômios também dispõe de uma
função própria chamada deconv de sintaxe similar à conv, pois também recebe as
mesmas entradas no mesmo formato. As saídas, no entanto, diferem um pouco, afinal
a divisão de polinômios gera, além do quociente, um resto. Assim, a função deconv
retorna dois vetores de coeficientes: o primeiro, referente ao cociente e o segundo, ao
resto.
5.1.4. Cálculo da derivada
O MATLAB® disponibiliza algumas funções capazes não só de calcular a
derivada de um polinômio, mas também a derivada de um produto e a derivada de
uma divisão de dois polinômios.
polyder(a) Retorna os coeficientes da derivada do polinômio identificado pelo vetor a
polyder(a,b) Retorna os coeficientes da derivada da multiplicação A(x)*B(x).
[n,d] = polyder(a,b) Retorna o coeficientes da derivada da divisão entre A(x) e B(x) representados na forma N(x)/D(x)
22
5.2. Utilizando variáveis simbólicas
É possível tratar polinômios e várias outras funções através do uso de variáveis
e expressões simbólicas. No MATLAB®, há inúmeras funções próprias para isto - abaixo
foram listadas algumas funções separadas pela sua área de aplicação. No entanto, há
diversas outras ferramentas aplicadas a funções especiais como a função de Bessel,
álgebra linear e trigonometria. Para saber mais sobre esta biblioteca pasta executar o
comando:
>>help symbolic
Operações Simbólicas
x=sym(‘x’) Cria uma variável simbólica com o nome ‘x’ e guarda seu valor em x. syms x Desempenha a mesma tarefa de x=sym(‘x’). pretty(f) Mostra a expressão simbólica f de forma mais amigável. latex(S) Retorna a representação em LaTex da expressão simbólica S. ccode(S) Retorna a representação em C da expressão simbólica S.
Solução de Equações
solve(‘f=n’) Retorna os valores de x para que f(x) assuma o valor n, n pode ser um número ou uma variável simbólica.
rsolve(eq1,eq2…) Recebe equações diferenciais ordinárias e condições iniciais e retorna a solução.
g =finverse(f) Retorna a função inversa de f, armazenada em g. compose(f,g) Retorna a função composta f(g(x)), sendo x a variável simbólica
de g.
Simplificação
simplify(S) Simplifica cada termo da expressão simbólica S. expand(S) Escreve cada elemento de S como um produto dos seus fatores,
pode ser usada em polinômios, funções trigonométricas, exponenciais, etc...
factor(S) Fatora cada elemento de S, S pode ser desde uma expressão até um número.
[R,Como] = simple(S)
Tenta várias formas de simplificação e retorna aquela que tenha sido mais bem sucedida, armazena em R a expressão simplificada e em Como a função utilizada.
C = coeffs(f,x) Armazena em C os coeficientes de x na função f. Y = sort(f) Se f for um vetor Y será o vetor correspondente aos elementos
de f em ordem crescente. Se f for um polinômio, Y será um vetor de coeficientes em ordem decrescente de potência.
subs(f,x,y) Substitui na expressão f a variável simbólica x pela variável y.
23
Cálculo
diff (f,x) Retorna uma expressão simbólica referente à derivada da expressão f em relação a x.
Int(f,x,a,b) Retorna uma expressão simbólica referente à integral da expressão f em relação a x de a até b. (a e b devem ser variáveis escalares simbólicas)
Limit(f,x,a) Retorna a expressão do limite de f(x) quando x tende para a, ao omitir x e a função retorna o limite da função quando x tende a zero.
taylor (f,n) Retorna o polinômio de Maclaurin de ordem (n-1) da expressão f. symsum(f,x,a,b) Retorna o somatório definido entre a e b da função f em relação a x.
Cálculo de Transformadas
F = fourier(f,u,v) Retornará F(v) que corresponde à transformada de Fourier de f(u). F = laplace(f,u,v) Retornará F(v) que corresponde à transformada de Laplace de f(u). F = ztrans(f,u,z) Retornará F(z) que corresponde à transformada Z de f(u). F = ifourier(f,u,v) Retornará F(v) que corresponde à transformada inversa de Fourier
de f(u). F = ilaplace(f,u,v) Análoga a função iforier, mas para transformada de Laplace. F = iztrans(f,u,v) Análoga a função iforier, mas para transformadaZ.
Vejamos um exemplo que utiliza as funções acima.
Exemplo 5.2:
>> syms a b c x; %Define as variáveis simbólicas a, b, c e x.
>> solve('x^2+2*x-5=3')
ans =
2
-4
>> f = x-2;
>> g = x-1;
>> l = x-3;
>> h = f*g
h =
(x-2)*(x-1)
24
>> expand(h)
ans =
x^2-3*x+2
>> k = h/l
k =
(x-2)*(x-1)/(x-3)
>> expand(k)
ans =
1/(x-3)*x^2-3/(x-3)*x+2/(x-3)
>> pretty(ans)
>> solve('a*x^2+b*x+c')
ans =
-1/2*(b-(b^2-4*a*c)^(1/2))/a
-1/2*(b+(b^2-4*a*c)^(1/2))/a
25
6. Gráficos
Uma das principais ferramentas que o MATLAB® proporciona é a sua grande
facilidade para gerar gráficos.
Abaixo, listamos algumas funções para manipulação de gráficos.
plot(x, y) – gera um gráfico linear. X é o vetor que contêm os pontos do eixo das
abscissas e y são os pontos do eixo das ordenadas.
semilogx (x,y) - gera um gráfico em escala semi-logarítmica(eixo x). x é o vetor
que contêm os pontos do eixo das abscissas e y são os pontos do eixo das
ordenadas.
semilogy (x,y) - gera um gráfico em escala semi-logarítmica(eixo y). x é o vetor
que contêm os pontos do eixo das abscissas e y são os pontos do eixo das
ordenadas.
title(‘texto’) – dá título ao gráfico gerado.
xlabel(‘texto’) – nomeia o eixo x.
ylabel(‘texto’) – nomeia o eixo y.
grid – cria linhas imaginárias no gráfico gerado
legend(‘texto’) – cria uma legenda para o gráfico.
Podemos também escolher a cor do gráfico gerado, colocando mais um
argumento na função que gerou o gráfico (plot, semilogx, semilogy, etc).
Por exemplo,
plot (x, y, ‘r’) – cria um gráfico vermelho (o novo argumento é r, de red =
vermelho).
Para gerar vários gráficos, adicionamos novos valores na função que gerou o
gráfico e escolhemos a cor de cada gráfico.
Por exemplo,
plot(x1, y1, ‘r’, x2, y2, ‘b’, x3, y3, ‘g’) – gera três gráficos (x1, y1), (x2, y2) e (x3,
y3) com cores vermelho, azul e verde, respectivamente.
26
Esses gráficos são gerados na mesma janela (mesmos eixos), mas se quisermos
gerar gráficos em janelas diferentes, é comum se usar a função figure (numero).
Por exemplo,
figure(1), plot(x1, y1)
figure(2), plot(x2, y2).
Assim, serão gerados dois gráficos em janelas diferentes, ou seja, figura 1 (x1,y1) e
figura 2 (x2, y2).
Exemplo 6.1:
>> t = 0 : pi/10 : 4*pi;
>> y = sin(t);
>> figure(1), plot(t,y,'k'), xlabel('Eixo x'), ylabel('Eixo Y'), grid, title('Função
Seno')
Figura 6.1: Gráfico plotado no exemplo 6.1
Exemplo 6.2:
>> z = log(t)
>>figure(2),plot(t,z,'k'), xlabel('Eixo x'), ylabel('Eixo Y'), grid, title('Função
Logaritmo')
27
Figura 6.2: Gráfico plotado no exemplo 6.2
Exemplo 6.3:
>> w = exp(t);
>>figure(3),plot(t,w,'g'),xlabel('Eixo x'),ylabel('Eixo Y'), grid, title('Função
Exponecial')
Figura 6.3: Gráfico plotado no exemplo 6.3
28
Exemplo 6.4:
>> plot(t, y, '*k',t,z,'ok'), xlabel('Eixo x'), ylabel('Eixo Y'), grid, title('Funções:
Seno e logaritmica'), legend('Seno', 'Logaritmo')
Figura 6.4: Gráfico plotado no exemplo 6.4
Até agora os gráficos gerados ilustram muito bem sinais contínuos no tempo,
no entanto é comum ter de lidar com sinais discretos, para plotá-los a função stem se
mostra bastante útil.
Vejamos o seguinte exemplo:
Exemplo 6.5:
>>t = [-5:.5:5];
>>x = t.^2+2*t+10;
>> stem(t,x,'k.'), xlabel('n'), ylabel('Amplitude'), grid, title('Sinal discreto')
%usamos o argumento 'k.' para que o grafico seja marcado com pontos
pretos.
29
Figura 6.5: Gráfico plotado no exemplo 6.5
6.1. Em três dimensões
É possível gerar gráficos 3D de diferentes formas, vejamos algumas delas.
6.1.1. Curvas definidas por equações paramétricas
Suponha que x e y sejam ambas dadas como funções de uma terceira variável t
(chamada de parâmetro) pelas equações
X = f(t) e Y = g(t)
Chamadas equações paramétricas. É fácil enxergar que para cada valor de t
teremos um par coordenado (X,Y) que pode ser facilmente plotado em um gráfico 3D.
No ambiente do MATLAB® a função plot3, para três dimensões, é análoga à
função plot para duas dimensões. A função plot3 recebe tradicionalmente 3
argumentos (x,y,z) que devem ser vetores de tamanho idêntico e o seu gráfico é
composto por linhas, por isso não é muito indicado para superfícies.
Exemplo 6.6:
>>%Seja x = sen(t) e y = cos(t)
>> t = [0:pi/100:8*pi];
>> x = sin(t);
>> y = cos(t);
30
>> plot3(x,y,t,'k'), grid, xlabel('x'), ylabel('y'),zlabel('z')
Figura 6.6: Gráfico plotado no exemplo 6.6
É possível escolher o ângulo de visão pelo qual o observador verá o gráfico, a
forma mais fácil de fazer isso é utilizando a função view([x,y,z]) que define em
coordenadas cartesianas o ponto de observação do gráfico.
6.1.2. Gráficos de superfícies
Para plotar superfícies, é necessário inicialmente definir uma grade no plano XY
utilizando a função meshgrid (x,y), que receberá dois vetores quaisquer a e b e
retornará duas matrizes, observe um exemplo de utilização desta função:
Exemplo 6.7:
>>x = [-1,0,1];
>>y=[1,2];
>> [X,Y] = meshgrid(x,y)
X =
-1 0 1
-1 0 1
31
Y =
1 1 1
2 2 2
No caso de geração de gráficos, x e y serão sempre vetores que podem possuir
tamanhos distintos e definirão os pontos dos eixos X e Y.
Após definir as matrizes A e B desejadas, é necessário utilizar uma segunda
função, neste caso, há mais de uma opção, vejamos a sintaxe e definição de duas
possíveis funções.
A função surf plota um conjunto de superfícies paramétricas coloridas, estas
superfícies serão definidas pelas entradas. Sua sintaxe é surf(X,Y,Z,C) onde X e Y são
resultados da função meshgrid e Z deve ser dada em função dos vetores x e y. Por fim,
C define a escala de cor do gráfico, este último parâmetro pode ser omitido e neste
caso C será igual a Z. Observe os seguintes exemplos de uso da função surf.
Exemplo 6.8:
>> [x,y]=meshgrid(-3:1:3,-3:1:3);
>> z = (50 - 6*x - 10*y)/7;
>> c = zeros(size(z))
>> surf(x,y,z,c)
Figura 6.7: Gráfico plotado no exemplo 6.8
32
Exemplo 6.9:
>> Z = x.^2-y.^2;
>> surf(x,y,Z,c)
Figura 6.8: Gráfico plotado no exemplo 6.9
Enquanto a função surf gera planos paramétricos coloridos, a função mesh gera
apenas a grade colorida de acordo com o quarto argumento, sua sintaxe é similar a da
função surf. Os exemplos 6.10 e 6.11 mostram os mesmos gráficos 6.9 e 6.10, gerados
pela função mesh.
Exemplo 6.10:
>>mesh(x,y,z,c)
Exemplo 6.11:
>>mesh(x,y,Z,c)
33
Figura 6.9: Gráfico plotado no exemplo 6.10
Figura 6.10: Gráfico plotado no exemplo 6.11
34
7. Programação
Além de efetuar cálculos e plotar gráficos, é possível utilizar os recursos do
MATLAB® para programar. A programação torna o MATLAB® uma ferramenta ainda
mais potente na resolução de problemas de engenharia.
7.1. Operadores Lógicos
Ao utilizar expressões lógicas ou relacionais, suas saídas serão expressas da
seguinte forma:
1 para VERDADEIRO
0 para FALSO
Estas mesmas expressões podem retornar matrizes, chamadas matrizes
lógicas, as quais serão compostas por 0 e 1. Apesar do formato característico, elas não
diferem das numéricas comuns e podem ser usadas nas operações matemáticas já
discutidas.
Os operadores lógicos são similares aos de outras linguagens de programação,
no MATLAB® dispõe-se dos seguintes:
Operador Significado
& E lógico | OU lógico ~ NÃO lógico
Além destes três operadores, há um quarto operador lógico típico que aqui
assume a aspecto de uma função: o XOR (OU Exclusivo).
Expressões lógicas podem conter escalares e/ou matrizes, vejamos alguns
exemplos:
Exemplo 7.1:
>> a = eye(3,3); %Gera uma matriz identidade 3x3
>> b = [1, 2, 3; 4, 5, 6; 7, 8, 9];
>>a&b
ans =
35
1 0 0
0 1 0
0 0 1
>>xor(a,b)
ans =
0 1 1
1 0 1
1 1 0
>> b &~a
ans =
0 1 1
1 0 1
1 1 0
>> b&0 %Operação lógica entre uma matriz e um escalar
ans =
0 0 0
0 0 0
0 0 0
7.2. Operadores Relacionais
Operador Significado
< Menor <= Menor ou igual > Maior
>= Maior ou igual == Igual ~= Não igual
Note a diferença entre o uso de “=” e “==”, o primeiro é utilizado para
atribuições e o segundo testa a igualdade das duas entradas.
Os operadores relacionais têm precedência em relação aos lógicos, os
parênteses podem ser utilizados a fim de modificar isto. Análogas às expressões
lógicas, as expressões relacionais também podem ser efetuadas entre matrizes, entre
escalares e com os dois simultaneamente.
36
Exemplo 7.1(Continuação):
>> b>=5
ans =
0 0 0
0 1 1
1 1 1
% A condição “maior ou igual a 5?” foi testada para todos os elementos de b.
>> b.*(a~=b)
ans =
0 2 3
4 5 6
7 8 9
>> b - (b>6)
ans =
1 2 3
4 5 6
6 7 8
%A matriz resultante da operação (b>6) utilizada numa rotina matemática.
7.3. Funções Lógicas e Relacionais
Além dos operadores já citados, há inúmeras funções que desempenham
tarefas lógicas e relacionais e que são capazes de expor características importantes de
escalares, vetores ou matrizes. Vejamos a definição de algumas destas funções.
37
Função Descrição
any(x) Se x for um vetor, o resultado será um escalar resultado da operação OU
elemento a elemento. Se x for uma matriz, o resultado será um vetor
referente a operação OU realizada nos elementos de uma mesma coluna.
all(x) Se x for um vetor, o resultado será um escalar resultado da operação AND
elemento a elemento. Se x for uma matriz, o resultado será um vetor
referente a operação AND realizada nos elementos de uma mesma coluna.
find(x) Retorna a linha, coluna e valor dos elementos de uma matriz que satisfaçam
uma condição prévia definida pelo usuário.
isnan(x) Retorna uma matriz na qual 1 corresponde a um elemento NaN (não é um
número) e 0 corresponde a um elemento numérico.
isinf(x) Análoga a “isnan”, detecta os elementos infinitos (+infe -inf).
isempty(x) Retorna 1 para arrays vazios e 0 caso contrário.
strcmp(x1,x2) Compara as strings x1 e x2, retornando 1 se elas forem iguais e 0 caso
contrário.
7.4. Controle de Fluxo
Declarações de controle permitem que o programador manipule o fluxo de
execução do programa de acordo com determinadas condições. Basicamente alguns
laços testam a condição e caso ela seja verdadeira uma rotina específica será
executada.
7.4.1. If – elseif - else
A sintaxe:
IF expressão1
Declarações1
ELSEIF expressão2
Declarações2
ELSE
Declarações3
END
38
O fluxo ocorre da seguinte forma:
1. A expressão1 é testada e, se for verdadeira, a rotina Declarações1 será
executada.
2. Se expressão 1 for falsa, expressão2 será testada.
3. Se expressão2 for verdadeira, declarações2 será executada.
4. Se expressão2 for falsa, então declarações3 será executada.
Note que há uma precedência de condições. Se a expressão1 for verdadeira,
nenhuma das outras sequer será testada e, mesmo que elas sejam verdadeiras, o
programa não responderá a isto.
É possível definir um if dentro de outro if, é o que se chama de if encadeado,
isto ocorre quando, por exemplo, Declarações1 inclui no seu escopo um outro if, que
será testado e executado apenas se a expresão1 for verdadeira.
Exemplo 7.2:
nome = input('Qual o seu nome?','s'); tam = size(nome); if (tam < 5) disp('Seu nome possui menos de 5 letras') elseif (tam > 10) disp('Seu nome possui mais de 10 letras') else disp('Seu nome possui entre 5 e 10 letras') end
7.4.2. Switch
Switch é uma alternativa para a estrutura if-elseif-else. Toda e qualquer
declaração de controle pode ser expressa em qualquer um dos formatos, cabendo ao
programador decidir qual dos dois utilizar, baseado principalmente na legibilidade do
código.
39
A sintaxe:
SWITCH switch_expr
CASE case_expr1,
Declarações1
CASE case_expr2, case_expr3, case_expr4,...
Declarações2
...
OTHERWISE,
Declarações3
END
A “switch_expr” pode ser uma expressão matemática, lógica e/ou relacional
que pode retornar 0, 1 ou qualquer outro número, ela também pode ser uma função
que retorne algum tipo de dado. O resultado da “switch_expr” será comparado a cada
um dos case_expr, caso ele seja idêntico a “case_expr3”, por exemplo, Declarações2
será executado. Por fim, OTHERWISE corresponde ao else, visto anteriormente.
Exemplo 7.3:
cor = 'azul'; switch(cor) case 'verde','verde claro','verde escuro' disp('A cor é verde') case 'branco' disp('A cor é branco') case 'preto' disp('A cor é preto') otherwise disp('Cor desconhecida') end Cor desconhecida
40
7.5. Loops
Loops são estruturas de repetição. For e While são declarações que permitem
efetuar comandos repetidamente, impondo um critério de parada, de forma que haja
um número fixo e predeterminado de vezes que o programa executará as mesmas
instruções.
7.5.1. For
A sintaxe:
FOR variable = expr
Declarações
END
O uso do laço for já é bastante conhecido em outras linguagens. No caso do
MATLAB®, o mais comum é que ele seja executado utilizando vetores e matrizes,
consideremos então que a variável seja um vetor. O bloco de declarações será
executado diversas vezes, uma vez para cada coluna da variável na expressão. A cada
iteração a devida coluna da expressão será atribuída a variável que irá operar nos
comandos internos às declarações.
Uma regra importante no uso do for é: se a expressão resultar em uma matriz
vazia o laço será ignorado.
Uma boa prática, ao utilizar o MATLAB® é evitar a utilização de laços for, pois
eles podem aumentar significativamente o tempo de execução do programa. Apesar
de o MATLAB® ser capaz de alocar memória dinamicamente (comumente utilizada em
laços for) este recurso não é nada eficiente em termos de esforço computacional,
muito provavelmente será melhor criar um vetor ou matriz nulos e arbitrariamente
grandes que possam ser manipulados matematicamente e forneçam um resultado
equivalente ao uso do for, afinal operações com matrizes é o potencial mais evidente
do MATLAB®.
41
Exemplo 7.4:
vetor = [1:3]; soma = 0; for i = vetor soma = soma + i end soma = 1 soma = 3 soma = 6 Exemplo 7.5:
matriz = [[1:3];[4:6];[7:9]]; soma = 0; [linhas,colunas] = size(matriz); for i = 1:linhas for j = 1:colunas soma = soma+matriz(i,j); end end soma soma = 45
42
7.5.2. While
A sintaxe:
WHILE expressão
declarações
END
Quando a expressão for totalmente verdadeira, o bloco de declarações será
executado, as condições da expressão serão novamente testadas e se forem
verdadeiras, novamente as declarações serão executadas. Caso algum elemento da
expressão seja falso, o controle ignorará as declarações e passará para o próximo
comando após o END.
É essencial que no bloco de declarações haja uma mudança em alguma das
variáveis testadas nas condições da expressão, caso contrário o laço será executado
infinitas vezes. Caso não seja possível implementar um código tal qual descrito
anteriormente, o programador pode recorrer a um último recurso: o uso do break.
WHILE expressão1
Declarações
If expressão2
break
END
Break pode ser usado dentro de um for ou while. Ele termina a execução dos
loops em qualquer um dos casos. Quando há um for ou while aninhado o comando
break só poderá ser usado no laço mais profundo.
Exemplo 7.6:
O exemplo abaixo recebe valores do usuário (até que a tecla Enter seja pressionada) e calcula a média dos valores informados.
cont = 1; valor = input('Insira um valor (Enter para parar):'); while ~isempty(valor) valores(cont) = valor;
43
cont = cont + 1; valor = input('Insira um valor (Enter para parar):'); end media = sum(valores)/(cont-1)
7.6. Definindo funções e scripts
O uso contínuo do MATLAB® em um mesmo projeto, trabalho ou disciplina
muito provavelmente exigirá a execução de rotinas comuns em diferentes situações.
Ora, salvar os códigos usando arquivos .m já auxilia bastante o trabalho nessas
circunstâncias.
Há dois tipos de arquivos .m: As funções e os Scripts. Script é um código salvo
que não aceita entradas nem fornece saídas, ele apenas executa uma sequência de
comandos sobre os dados do workspace. As funções recebem entradas, executam
operações sobre elas e sobre variáveis locais e finalmente fornecem as saídas
desejadas.
7.6.1. Os scripts
Para se criar um script basta digitar o código desejado no editor do MATLAB® e
salvar o arquivo .m com um nome conhecido. Para executá-lo basta digitar o seu nome
no prompt. Para um script chamado teste .m, é necessário fazer:
>>teste
Um exemplo típico de utilização do script é salvar um conjunto de comandos de
plotagem completos, incluindo legenda, título, grid, etc. Quando o código já está salvo
no arquivo é muito simples modificar algum parâmetro para obter novos gráficos.
Além de usar variáveis locais, definidas dentro do arquivo, os scripts interagem
com o usuário de maneira mais amigável. Eles podem fazer uso de variáveis já
definidas anteriormente no workspace. Para tanto basta que as variáveis possuam o
mesmo nome, dentro do script e no workspace.
44
7.6.2. As funções
Para criar uma função basta salvar um arquivo .m com o mesmo nome da
função, é também necessário que neste arquivo a primeira linha contenha o cabeçalho
da função que apresenta o seguinte formato:
function[saída1, saída2...] = nome_da_função(entrada1, entrada2)
As funções não utilizam as variáveis definidas no workspace, elas utilizam suas
próprias variáveis locais e as entradas fornecidas pelo usuário.
Ao adicionar linhas de comentário abaixo do cabeçalho da função, você estará
criando o help da sua função, que poderá ser visto ao executar o comando:
>>help nome_da_função
A função deve terminar com o comando “return”.
A implementação de funções e scripts comumente exige o uso de declarações
de controle de fluxo. Além disso, algumas funções acessórias são muito utilizadas,
vejamos algumas delas e suas respectivas descrições:
Função Descrição
error(‘mensagem’) Mostra na tela uma string de caracteres definida pelo programador, aborta a execução da função e retorna o controle para o teclado.
nargin(função) Ao colocar o nome da função desejada, nargin retornará o seu número de entradas.
nargout(função) Ao colocar o nome da função desejada, nargin retornará o seu número de saídas.
display(x) Mostra a variável x, também pode mostrar uma string dede que seja posta entre aspas no argumento.
input(‘string’) Mostra string na tela e espera para receber um dado que será a atribuído a x, ao fazer x = input(‘string’).
Exemplo 7.7:
No arquivo .m, definiu-se a seguinte função rampa:
function u = ramp(t) % RAMP Ramp function % u = ramp(t) % u = 0 for t<0 % u = t for t>=0
45
t = sort(t); u = zeros(size(t)); a = find(t>=0); u(a) = t(a); plot(t,u,'k'),title('Função rampa'), xlabel('t'),ylabel('Amplitude') return
Para utilizá-la, basta definir um vetor qualquer e passá-lo como argumento, por
exemplo:
>> t = [-5,4,-3,8,5,0];
>> u = ramp(t);
E o resultado será o gráfico:
Figura 7.1: Gráfico plotado no exemplo 7.2
46
8. Características dos constituintes básicos dos circuitos elétricos
Os elementos básicos que constituem os circuitos elétricos são os resistores,
os indutores, os capacitores e as fontes de alimentação. Cada um desses elementos
tem um comportamento bem definido com relação a determinadas grandezas
elétricas, ou à variação destas. Em outras palavras, cada um desses elementos tem
uma característica própria que relaciona, por exemplo, a corrente e a tensão em seus
terminais.
Para uniformizar, de forma prática, a análise dos sistemas que são
constituídos por circuitos elétricos, busca-se as relações lineares entre as grandezas de
estudo e as características dos componentes presentes.
Deve-se observar que a linearidade, por vezes, está restrita ao modelo de
análise que se segue. Desse modo, o comportamento real dos componentes pode não
seguir estritamente o modelo linear, passando este a ser apenas uma aproximação do
que realmente acontece no componente, ou circuito.
Nos itens a seguir, temos uma breve descrição dos elementos citados que
auxiliará o entendimento dos métodos que podem ser usados na análise de circuitos
com o MATLAB®.
8.1. O resistor
O resistor é o componente mais simples de um circuito elétrico. Sua finalidade
é apenas a de dissipar potência. A propriedade que quantifica a capacidade de
dissipação de potência de um resistor é denominada resistência elétrica. A resistência
elétrica, para cada resistor, é uma constante que relaciona linearmente a tensão e a
corrente nos terminais do componente. Dessa forma, para um resistor, as grandezas
elétricas que se relacionam de forma linear são a tensão e corrente nos seus terminais.
Essa relação é mais conhecida como Lei de Ohm e é expressa como: iRV . , onde V e
i são, respectivamente, a tensão e a corrente nos terminais do componente e R é o
valor da sua resistência, cuja unidade de medida é o Ohm. A mesma relação se
47
mantém entre os fasores de tensão V e corrente I para a análise do regime
permanente senoidal, no domínio da freqüência: I V ˆˆ R .
Figura 8.1: Símbolos elétricos para o resistor
Figura 8.2: Relação linear entre V e i para um resistor com R = 20 Ohms.
8.2. O capacitor
O capacitor é o componente dos circuitos que tem a propriedade de acumular
energia em um campo elétrico. A “capacidade” que um dado capacitor tem para
armazenar energia é quantificada por um atributo do mesmo, denominado
capacitância elétrica. A capacitância é uma constante que relaciona a carga acumulada
pelo capacitor e a tensão sobre seus terminais. Sua unidade de medida é o faraday (F),
onde 1faraday = 1 columb/1 volt.
Assim, para um capacitor de capacitância C, têm-se as duas mais importantes
relações: V
QC e
dt
dVCi . Portanto, no capacitor as grandezas que se relacionam
de forma linear são: a carga acumulada e a tensão nos terminais e, por conseqüência,
a corrente e a derivada da tensão com relação ao tempo. Para a análise do regime
48
permanente senoidal, no domínio da freqüência, temos a seguinte relação entre os
fasores tensão e corrente no capacitor: I V ˆ1ˆ Cj
.
Figura 8.3: Símbolo elétrico do capacitor
Figura 8.4: Relação entre i e dV/dt para um capacitor com C = 10uF
8.3. O indutor
De forma análoga ao capacitor, o indutor é um elemento do circuito capaz de
armazenar energia em um campo. A diferença é que o indutor armazena energia em
um campo magnético. O parâmetro que descreve numericamente a capacidade de um
indutor de armazenar energia é denominado de indutância, que tem o henry como
unidade de medida.
Dado um indutor de indutância L, percorrido por uma corrente i, segue-se que
a tensão V entre os seus terminais será dada por: dt
diLV . . A proporcionalidade entre
a tensão e a variação da corrente é a relação linear mais importante de um indutor, do
49
ponto de vista da análise de circuitos. Para circuitos em regime permanente senoidal,
no domínio da freqüência, temos a seguinte relação entre os fasores tensão e corrente
no indutor: I V ˆˆ Lj .
Figura 8.5: Símbolo elétrico do indutor
Figura 8.6: Relação entre V e di/dt para um indutor com L = 50mH
8.4. Fontes de alimentação
As fontes de alimentação são as entidades presentes no circuito com a
finalidade de fornecer energia aos componentes passivos, por esse motivo recebem a
denominação de componentes ativos. As fontes podem ser classificadas de várias
formas: fonte de corrente ou de tensão, DC ou AC, dependente ou independente.
O funcionamento de um circuito está diretamente relacionado com os tipos
de fonte nele presentes. Por conseguinte, a forma de análise escolhida para um
determinado sistema também depende de quais tipos de fonte nele estão presentes.
Por exemplo, quando se quer avaliar o comportamento de regime de um sistema
alimentado por fontes senoidais, a representação fasorial das grandezas é a mais
adequada.
50
9. Formas de representação dos circuitos na linguagem do MATLAB®
A ferramenta que geralmente se usa para reproduzir os parâmetros e as
equações dos circuitos na linguagem do MATLAB® é o arquivo M-file. Um M-file é um
arquivo de texto, salvo no computador com a terminação ".m", que contém uma
seqüência de comandos que pode ser executada pelo MATLAB®. Exemplificaremos a
seguir a melhor maneira de se passar os dados de circuito para um M-file.
9.1. Um circuito resistivo com alimentação DC
Observe o circuito resistivo simples mostrado na figura 12:
Figura 9.1: Exemplo de circuito resistivo
A partir desse circuito obtemos o seguinte sistema de equações lineares, cujas
incógnitas são as correntes no circuito:
( )
Observe que as equações foram escritas de forma literal. A vantagem de
escrever as equações dos circuitos na forma literal é que, mesmo que os valores dos
resistores e das fontes mudem, elas continuarão válidas. Dessa forma, poupa-se
51
trabalho se for necessário analisar o desempenho do circuito para diversos valores dos
componentes. Em seguida, temos o mesmo sistema na notação matricial:
[
] [
] [
]
Uma vez que as operações no MATLAB® são de característica matricial, ao se
representar o sistema linear na forma de igualdade de matrizes BIA , foi dado o
passo final para a representação do problema na linguagem do mesmo. Temos a
seguir, o texto do código presente no arquivo M-file gerado para análise desse circuito:
%Analise de um circuito resistivo simples
%Definição dos parâmetros R1 = 10; R2 = 8; R3 = 5; R4 = 2; V1 = 10; V2 = 5; V3 = 12;
%Definição das matrizes A = [R1+R4, R3, 0; 0, R3, -R2; 1, -1, -1]; C = [V1-V2; V3-V2; 0];
%Solução do sistema
I = inv(A)* C;
I1 = I(1) I2 = I(2) I3 = I(3)
A saída gerada pelo MATLAB® no prompt de comando, ao se executar o M-file
com o código mostrado anteriormente, é mostrada no retângulo interno ao retângulo
com o trecho de código.
9.2. Um circuito em regime senoidal
O conceito de fasor é de extrema importância na análise de circuitos no
regime senoidal, já que a maioria das grandezas terá forma )cos(tg tA , onde
Solução
I1 = 0.1531
I2 = 0.6327
I3 = -0.4796
52
A é a amplitude, é a freqüência angular e é a fase de g(t). O fasor G da grandeza
g(t) é definido pela relação seguinte:
AGeAGeeAtAtg jtjj ˆˆRe)cos()(
Dessa forma, podemos entender um fasor como sendo um número complexo
que guarda informação sobre a amplitude e o ângulo de fase de uma grandeza
senoidal.
Suponha agora que necessitamos encontrar o fasor da corrente que circula no
circuito a seguir, em regime senoidal.
Figura 9.2: Exemplo de circuito em regime senoidal
Novamente, seguimos passos semelhantes aos realizados no exemplo
anterior. Primeiramente determinamos as expressões literais, em termos de fasores,
que o circuito deve obedecer. São elas:
IV
I IXV
I1
IXV
010V
LL
cc
s
R
Ljj
Cjj
R
)(
VI
I)(VVVVV
s
sLcs
CL
CLR
jXjXR
jXjXR
53
Deste modo, como o problema consiste em apenas determinar o fasor da
corrente no circuito, no M-file devem constar apenas os parâmetros do circuito e a
última expressão para o fasor da corrente. Desta forma, temos a seguir o texto do
código presente no M-file gerado para a resolução desse problema:
Saída no prompt do MATLAB®:
%Determinação da corrente num circuito RLC %em regime senoidal
%Definição dos parâmetros R = 200e+3; C = 10e-6; L = 50e-3; Vs = 10; w = 1000;
%Parâmetros derivados Xc = - 1/(w*C); Xl = w*L;
%Expressão para o fasor da corrente fprintf ('O fasor da corrente e: '); I = Vs/(R+j*Xl-j*Xc)
O fasor da corrente e:
I =
5.0000e-005 -3.7500e-008i
54
10. Análise de circuitos elétricos
Com o avanço da tecnologia, sentiu-se a necessidade da realização da análise
de circuitos elétricos mais complexos. Em geral, são adotados métodos apropriados
para análise de circuitos os quais possibilitam, de forma simplificada, a obtenção das
correntes e tensões verificadas ao longo do mesmo.
Dentre estes métodos, os mais conhecidos são o método das tensões de nó e o
método das correntes de malha. Neste mini-curso serão explanados estes métodos e,
em seguida, considerando as variações possíveis dos circuitos em questão, serão
transcritos, para o prompt do MATLAB®, os comandos necessários para que seja
possível a verificação das correntes e tensões de forma precisa através das
potencialidades desta ferramenta matemática.
10.1. Método das tensões de nó
O objetivo deste método é obter equações que descrevam o comportamento
das tensões no circuito as quais são conhecidas como Equações das tensões de nó.
Estas equações co-relacionam as tensões dos nós dos circuitos possibilitando uma
análise adequada do mesmo.
Para tanto, um procedimento simples deve ser seguido. Veja:
1. Desenhar o circuito de forma que os ramos não se cruzem facilitando assim
a assinalação dos nós essenciais, os quais são os nós que possuem três ou
mais elementos ligados;
2. Escolher um dos nós essenciais como nó de referência. Embora qualquer
um dos nós essenciais possa ser escolhido como referência, geralmente
existe um nó mais indicado para tal função;
3. Nomear as tensões nos nós essenciais assinalados;
4. Calcular as correntes que saem de cada um dos nós considerados em
função das tensões dos nós do circuito;
5. Considerando a lei de Kirchhoff, igualar a zero a soma das correntes que
saem de cada nó essencial;
55
6. A partir do passo 5, são obtidas as equações das tensões de nó. Sendo
assim, tem-se um sistema linear em que as variáveis são as tensões de nó
do circuito. Portanto, basta resolver este sistema linear da forma que lhe
for mais conveniente.
10.2. Método das tensões de nó + fontes dependentes
Em vários casos, são encontradas fontes dependentes nos circuitos elétricos.
Estas fontes possuem um comportamento que depende de valores assumidos por
grandezas como correntes ou tensões em diferentes pontos do circuito.
Muitas vezes, a primeira impressão que se tem é a de que a existência de
fontes dependentes complica por demais a solução do circuito elétrico, porém, para
tanto, basta seguir o mesmo procedimento para o caso de circuito sem fontes
dependentes e então adicionar as equações impostas pela presença da fonte
dependente às equações das tensões de nó encontradas.
Exemplo 10.1 - Determinar as correntes aI , bI e cI .
Figura 10.1: Circuito Usado para ilustrar o método das tensões de nó. Fonte: Circuitos Elétricos, Nilsson e Riedel, Figura 9.34 pág298
2,216,10ˆ2,01,1ˆ
021
ˆˆ
10
ˆ6,10
1
21
211
jVjV
j
VVV
Nó
0
5
ˆ20ˆ
5
ˆ
21
ˆˆ
2
2212
xIV
j
V
j
VV
Nó
56
21
ˆˆˆ
:
21
j
VVI
mas
x
0
2,216,10
ˆ
ˆ
6,08,45
12,01,1
:
0ˆ6,08,4ˆ5
:)2(
2
1
21
j
V
V
j
j
Assim
VjV
nódoSubstituin
SOLUÇÃO:
80,1640,68ˆ1 jV V
2668ˆ2 jV V
AjI
Logo
a 68,184,6ˆ
:
AjIb 92,1144,1ˆ
AjIc 6,132,5ˆ
57
No MATLAB®:
10.3. Método das correntes de malha
Um outro método bastante utilizado na análise de circuitos elétricos é o
Método das correntes de malha. A corrente de malha pode ser definida como sendo
uma corrente que existe apenas no perímetro de uma única malha. Sendo assim,
percebe-se que este método se aplica apenas a circuitos em que as malhas não
possuem outras malhas em seu interior. Desta forma, ao longo da análise por este
método, a lei de Kirchhoff é automaticamente satisfeita uma vez que em qualquer um
dos nós do circuito, a corrente de malha que entra no nó é a mesma que sai.
Portanto, para solucionar circuitos através deste método das correntes de
malha, deve-se seguir o seguinte procedimento:
1. Utilizar setas as quais indicarão o sentido das correntes de malha do
circuito. É preferível que se utilize o mesmo sentido para todas as malhas;
clear clc
%----------------------------------------------------- %Mini-curso de Matlab - PET-Elétrica %-----------------------------------------------------
fprintf ('\nExemplo 10.1\n') %Sistema Linear - A.x = B A = [(1.1+0.2i) -1; -5 (4.8+0.6i)]; B = [(10.6+21.2i); 0]; V = A\B; %Tensões: V1 = V(1); V2 = V(2); %Correntes: Ix = (V1-V2)/(1+2i); Ia = V1/10; Ib = (V2-20*Ix)/5; Ic = V2/(-5i); %Escrevendo as respostas: fprintf('Correntes:\n') fprintf('Ia = %.2f %+.2fi A\n', real(Ia), imag(Ia)) fprintf('Ib = %.2f %+.2fi A\n', real(Ib), imag(Ib)) fprintf('Ic = %.2f %+.2fi A\n', real(Ic), imag(Ic))
Solução
Exemplo 10.1 Correntes: Ia = 6.84 -1.68i A Ib = -1.44 -11.92i A Ic = 5.20 +13.60i A
58
2. Calcular as tensões sobre os componentes da malha em análise
considerando a corrente resultante nos ramos comuns a duas malhas e
dando um sentido preferencial para a corrente da malha em análise;
3. Considerando a lei de Kirchhoff, igualar a zero a soma das tensões da malha
fechada em questão;
4. A partir do passo 3, são obtidas as equações necessárias para a análise das
correntes de malha. Sendo assim, tem-se um sistema linear em que as
variáveis são as correntes de malha do circuito. Portanto, basta resolver
este sistema linear da forma que lhe for mais conveniente.
10.4. Método das correntes de malha + fontes dependentes
Quando existem fontes dependentes no circuito em análise, basta seguir o
mesmo procedimento para o caso de circuito sem fontes dependentes e então
adicionar as equações impostas pela presença da fonte dependente às equações das
correntes de malha obtidas.
Exemplo 10.2 - Determinar as correntes de malha indicadas no circuito a seguir.
Figura 10.2: Circuito Usado para ilustrar o método das correntes de malha. Fonte: Circuitos Elétricos, Nilsson e Riedel, Fig. 9.36 pág. 299
150ˆ1612ˆ1413
150ˆˆ1612ˆ21
1
21
211
IjIj
IIjIj
Malha
0ˆ39ˆ31ˆˆ1612
2
212
xIIjIIj
Malha
59
21ˆˆˆ
:
III
mas
x
0ˆ1326ˆ1627
:)2(
21 IjIj
malhadoSubstituin
0
150
ˆ
ˆ
13261627
16121413
:
2
1
I
I
jj
jj
Assim
SOLUÇÃO:
5226ˆ1 jI A
5824ˆ2 jI A
No MATLAB®:
10.5. Circuitos equivalentes de Thévenin e Norton
Em diversos casos, durante a análise dos circuitos elétricos, o objetivo é obter o
comportamento em pontos específicos do circuito. Ao ligar um forno em casa, não
estamos preocupados com os efeitos sobre a tensão nas outras tomadas, ou seja, o
nosso interesse limita-se a um par de terminais.
A teoria sobre análise de circuitos elétricos no domínio da freqüência apresenta
métodos que facilitam bastante os procedimentos de solução dos mesmos uma vez
clear clc %----------------------------------------------------------- %Mini-curso de Matlab - PET-Elétrica %-----------------------------------------------------------
fprintf ('\nExemplo 10.2\n') %Sistema Linear - A.x = B A = [(13-14i) -(12-16i); (27+16i) -(26+13i)]; B = [150; 0]; I = A\B; %Correntes de malha: I1 = I(1); I2 = I(2); %Escrevendo as respostas: fprintf('Correntes de malha:\n') fprintf('I1 = %.2f %+.2fi A\n', real(I1), imag(I1)) fprintf('I2 = %.2f %+.2fi A\n', real(I2), imag(I2))
Solução
Exemplo 10.2
Correntes de malha:
I1 = -26.00 -52.00i A
I2 = -24.00 -58.00i A
60
que permitem uma fácil simplificação dos circuitos. Os circuitos equivalentes de
Thévenin e Norton são circuitos simplificados que têm mesmo funcionamento do
ponto de vista do par de terminais de interesse. Desta forma, pode-se afirmar que
qualquer circuito elétrico, composto por elementos lineares, pode ser representado
pelos seus respectivos circuitos equivalentes de Thévenin e Norton.
Para determinar o circuito equivalente de Thévenin, deve-se seguir o seguinte
procedimento:
1. Calcular a tensão de circuito aberto ThV entre os terminais “a” e “b” de
interesse;
2. Colocar uma fonte de corrente de 1A entre os terminais “a” e “b” e em
seguida calcular a tensão sobre esta mesma fonte ccV , curto-circuitando as
fontes de tensão e abrindo o circuito nas fontes de corrente;
3. Calcular a resistência de Thévenin através da expressão cccc
Th VV
Z ˆ1
ˆ ;
Assim, obtém-se o seguinte circuito equivalente de Thévenin:
Figura 10.3: Circuito equivalente de Thévenin Fonte: Circuitos Elétricos, Nilsson e Riedel, Fig. 9.25 pág. 295
O circuito equivalente de Norton é formado por uma fonte independente de
corrente NI em paralelo com uma resistência NR . Considerando que este circuito
equivalente pode ser obtido a partir do circuito equivalente de Thévenin, deve-se
seguir o seguinte procedimento para obtenção do circuito de Norton:
1. Calcular o circuito equivalente de Thévenin segundo o procedimento
especificado anteriormente;
61
2. Realizar transformação da fonte de tensão para fonte de corrente. Veja que
neste caso, a resistência de Thévenin é igual à resistência de Norton.
Assim, obtém-se o circuito equivalente de Norton mostrado a seguir:
Figura 10.4: Circuito equivalente de Norton Fonte: Circuitos Elétricos, Nilsson e Riedel, Fig. 9.25 pág. 295
Exemplo 10.3 - Determinar o circuito equivalente de Thévenin e em seguida, calcular a
corrente por um resistor de 1 Ω inserido entre os terminais “a” e “b”.
Figura 10.5: Circuito para análise de circuitos equivalentes Fonte: Circuitos Elétricos, Nilsson e Riedel, Fig 9.27 pág. 295 Exemplo 9.9
1atransformação(tensão - corrente): )(31,124ˆ ParalelojZAjI
Paralelo das impedâncias: 4,28,139//31 jjjZ
2a transformação de fonte(corrente-tensão): )(4,28,1,1236ˆ SériejZVjV
Série das impedâncias: 326,02,04,28,1 jjjZ
62
Assim:
Aj
jj
jI 08,156,1
191032
1236ˆ0
Calculando o circuito equivalente de Thévenin teríamos:
84,263,232//1910
84,1812,3608,156,11910ˆ1910ˆ0
jjjZ
VjjIjV
Th
Th
Então, adicionando o resistor de 1 , teríamos uma corrente de AjI 05,865,3ˆ1 .
No MATLAB®:
%--------------------------------------------------- %Mini-curso de Matlab %--------------------------------------------------- clear
clc
fprintf('\nExemplo 10.3\n') %Transformação de fonte: %Tensão - Corrente: If = Vf/Zf e Zf = cte %Corrente - Tensão: Vf = Zf*If e Zf = cte
Vf = 40; Zf = (1+3i); %Primeira transformação: If = Vf/Zf; %Paralelo das impedaâncias Zf = inv(inv(1+3i)+inv(9-3i)); %Segunda transformação: Vf = Zf*If; %Série das impedâncias Zf = Zf+(0.2+0.6i);
%Corrente: Io = Vf/(Zf+(10-19i)); %Circuito equivalente de Thévenin: Vth = (10-19i)*Io; Zth = inv(inv(Zf)+inv(10-19i)); %Adicionando o resistor de 1 Ohm: Zeq = Zth + 1; I = Vth/Zeq;
%Escrevendo as respostas: fprintf('Circuito equivalente:\n') fprintf('Vth = %.2f %+.2fi V\n', real(Vth), imag(Vth)) fprintf('Zth = %.2f %+.2fi Ohm\n', real(Zth), imag(Zth)) fprintf('Corrente:\n') fprintf('I = %.2f %+.2fi A\n', real(I), imag(I))
Solução
Exemplo 10.3
Circuito equivalente:
Vth = 36.12 -18.84i V
Zth = 2.63 +2.84i Ohm
Corrente:
I = 3.65 -8.05i A
63
10.6. O Princípio da superposição
Ao longo deste material, foram vistos diversos tipos de circuitos. Dentre os
circuitos apresentados, é possível perceber que o número de fontes de tensão e/ou
corrente que alimentam os circuitos varia bastante. Num sistema elétrico de potência,
por exemplo, existem vários geradores atuando na alimentação das cargas, fato este
que evidencia a necessidade do engenheiro de conhecer os melhores caminhos para
análise de um circuito com mais de uma fonte de alimentação.
Geralmente, a solução de circuitos com múltipla alimentação torna-se bastante
complexa, fato este que evidencia a necessidade de métodos que possam simplificar o
procedimento de análise do circuito.
De acordo com James W. Nilson e Susan A. Riedel, 2003, segundo o princípio da
superposição, nos casos em que um sistema linear é excitado ou alimentado por mais
de uma fonte de energia, a resposta total é a soma das respostas a cada uma das
fontes agindo separadamente. Entretanto, em alguns casos o uso do princípio da
superposição pode dificultar a solução do problema, de forma que é mais indicado
para circuitos que possuem fontes independentes de tipos distintos (CA e CC).
Exemplo 10.4 - Determinar as correntes indicadas no circuito a seguir através do
princípio da superposição.
Figura 10.6: Princípio da superposição Fonte: Circuitos Elétricos, Nilsson e Riedel, Fig. 4.62 pág. 106
64
Substituindo inicialmente a fonte de corrente por um circuito aberto, temos:
VV
VVV
30
04236
120
1
111
Aii
Ai
Ai
Logo
56
30
103
30
156
30120
:
43
2
1
Substituindo agora a fonte de tensão por um curto-circuito, temos:
VV
VVLogo
VVV
Também
VVVV
24
12:
01222
:
0263
4
3
434
4333
AV
i
AVV
i
AV
i
AV
i
Então
64
24
4
62
2412
2
43
12
3
26
12
6
:
44
43
3
3
2
3
1
Aiii
Aiii
Aiii
Aiii
165
1165
6410
17215
444
333
222
111
65
No MATLAB®:
clear clc
%-------------------------------------------------- %Mini-curso de Matlab %--------------------------------------------------
fprintf('\nExemplo 10.4\n')
%Tensão da fonte Vf = 120; %Tensões e correntes com fonte de corrente em aberto V1 = 30; I1i = (Vf-V1)/6; I2i = (V1)/3; I3i = (V1)/(2+4); I4i = (V1)/(2+4); %Tensões e correntes com fonte de tensão em curto %Sistema Linear: A = [1 -0.5; -0.5 (3/4)]; B = [0; -12]; V = A\B; V3 = V(1); V4 = V(2);
I1ii = (-V3)/6; I2ii = (V3)/3; I3ii = (V3-V4)/(2); I4ii = (V4)/(4);
%Superposição I1 = I1i + I1ii; I2 = I2i + I2ii; I3 = I3i + I3ii; I4 = I4i + I4ii;
%Escrevendo as respostas: fprintf('Correntes: (Forma de resolução 1)\n') fprintf('I1 = %.2f %+.2fi A\n', real(I1), imag(I1)) fprintf('I2 = %.2f %+.2fi A\n', real(I2), imag(I2)) fprintf('I3 = %.2f %+.2fi A\n', real(I3), imag(I3)) fprintf('I4 = %.2f %+.2fi A\n', real(I4), imag(I4))
Solução
Exemplo 10.4
Correntes: (Forma de resolução 1)
I1 = 17.00 +0.00i A
I2 = 6.00 +0.00i A
I3 = 11.00 +0.00i A
I4 = -1.00 +0.00i A
66
%Outro método para solucionar o Exemplo 10.4
%Tensão da fonte Vf = 120; %Tensões dos nós V1 = [30 -12]; V2 = [9999 -24];
for k = 1:2 if k == 1 I1(k) = (Vf-V1(k))/6; I2(k) = (V1(k))/3; I3(k) = (V1(k))/6; I4(k) = V1(k)/6; end if k == 2 I1(k) = (-V1(k))/6; I2(k) = (V1(k))/3; I3(k) = (V1(k)-V2(k))/2; I4(k) = V2(k)/4; end end
I1 = sum(I1); I2 = sum(I2); I3 = sum(I3); I4 = sum(I4);
%Escrevendo as respostas: fprintf('Correntes: (Forma de resolução 2)\n') fprintf('I1 = %.2f %+.2fi A\n', real(I1), imag(I1)) fprintf('I2 = %.2f %+.2fi A\n', real(I2), imag(I2)) fprintf('I3 = %.2f %+.2fi A\n', real(I3), imag(I3)) fprintf('I4 = %.2f %+.2fi A\n', real(I4), imag(I4))
Solução
Correntes: (Forma de resolução 2)
I1 = 17.00 +0.00i A
I2 = 6.00 +0.00i A
I3 = 11.00 +0.00i A
I4 = -1.00 +0.00i A
67
11. Respostas dos circuitos RL e RC a um degrau
Didaticamente, circuitos RL e RC alimentados por fontes contínuas são bastante
utilizados em disciplinas que envolvem o estudo de circuitos elétricos. Sendo assim,
neste tópico, explicitaremos a análise destes circuitos evidenciando seu
comportamento sempre visando uma implementação do modelo através do MATLAB®.
Cada circuito elétrico tem um comportamento distinto quando submetido à
aplicação brusca de uma tensão ou corrente. Este comportamento é conhecido como
resposta a um degrau.
Neste caso, no exame da resposta dos circuitos RL e RC a um degrau, é possível
verificar o comportamento destes circuitos durante a fase em que a energia está sendo
armazenada no indutor ou capacitor.
11.1. Resposta de um Circuito RL a um degrau
Para este caso, a energia inicial do circuito é expressa como um valor inicial da
corrente circulante pelo indutor, ou seja, 0i . Portanto, o objetivo desta análise é
obter expressões para a corrente no circuito e para as tensões entre os terminais do
indutor durante seu carregamento.
Então temos:
Figura 11.1: Resposta a um degrau de um circuito RL Fonte: Circuitos Elétricos, Nilsson e Riedel, Fig. 7.16 pág. 204
68
Logo:
dtR
Vi
L
Rdi
dtR
Vi
L
Rdt
dt
di
R
Vi
L
R
L
VRi
dt
di
dt
diLRiV
S
S
SS
S
t
L
R
RV
I
RV
ti
tdL
R
RV
i
id
dtL
R
RV
i
di
Assim
S
S
ti
I
t
S
S
0
0
ln
:
0
t
L
R
S
S
e
RV
I
RV
ti
Logo
0
:
t
LR
SS eR
VI
R
Vti
0
Considerando então que a tensão nos terminais do indutor é dada por
dt
diLv t
LR
S eR
VI
LRv
0
As equações acima demonstradas dão suporte para as análises do circuito
proposto.
11.2. Resposta de um Circuito RC a um degrau
Para o caso de um circuito RC, a energia inicial do circuito é expressa como um
valor inicial da tensão sobre o capacitor, ou seja, 0V . Sendo assim, o objetivo desta
análise é obter expressões para a corrente no circuito e para as tensões entre os
terminais do capacitor durante seu carregamento.
Então tomemos como exemplo:
69
Figura 11.2: Resposta a um degrau de um circuito RC Fonte: Circuitos Elétricos, Nilsson e Riedel, Fig. 7.21 pág. 207
Logo:
dtIRvRC
dv
IRvRCRC
v
C
I
dt
dv
C
I
RC
v
dt
dv
IR
v
dt
dvC
SCC
SC
CSC
SCC
S
CC
.1
.1
tRCIRV
IRtv
tdRCIRv
dv
Assim
S
SC
ttv
VSC
C
1
.
.ln
1
.
:
0
00
tRC
S
SC eIRV
IRtv
Então
1
0 .
.
:
t
RCSSC eIRVIRtv
1
0 ..
Considerando então que a corrente circulante pelo capacitor é dada por
dt
dvCi C
tRC
S eIRVCRC
ti
1
0 .1
t
RCS e
R
VIti
1
0
As equações acima demonstradas dão suporte para as análises do circuito
proposto.
70
12. Resposta natural e a um degrau de um circuito RLC série e paralelo
A compreensão do funcionamento de circuitos RLC série ou paralelo é de
grande relevância uma vez que seu comportamento apresenta características
semelhantes a inúmeros fenômenos abordados na engenharia elétrica. A resposta de
circuitos deste tipo apresenta oscilações até entrar em regime, oscilações estas
semelhantes às verificadas em fenômenos de desligamento de transformadores,
transitórios em sistemas de potência, controle de motores, entre outros.
As oscilações verificadas nas respostas destes circuitos a um degrau podem ser
classificadas como:
1. Super-amortecidas;
2. Sub-amortecidas;
3. Criticamente amortecidas.
A forma assumida pela resposta do circuito RLC, seja ele paralelo ou série,
depende dos valores da freqüência de Neper ( ), a qual reflete o efeito da resistência
no circuito, e da freqüência angular de ressonância ( 0 ). Assim, dependendo dos
valores destas freqüências, as soluções destes circuitos variam, apresentando
diferentes comportamentos de amortecimento. Portanto, a seguir, é apresentado um
procedimento simplificado para a obtenção da solução destes circuitos. Veja:
1. Verificar os valores de e de 0
2. Verificar as condições a seguir:
a. Se 2
0
2 Superamortecido - A tensão ou corrente chega ao
valor final sem oscilações;
b. Se 2
0
2 Subamortercido - A tensão ou corrente oscila antes
de chegar ao valor final;
c. Se 2
0
2 Criticamente amortecido - A tensão ou corrente
oscila antes de chegar ao valor final;
3. Dependendo da classificação do amortecimento a partir do tópico anterior,
utilizar as equações apresentadas na Tabela 1 como resposta do sistema.
71
Amortecimento Equação da Resposta Natural
Equações dos coeficientes -
Resposta Natural
Superamortecido tstseAeAtx 21
21 210 AAx
Subamortecido t
dd etBtBtx sincos 21
22
0
21
1
:
0
0
d
d
onde
BBdt
dx
Bx
Criticamente
amortecido teDtDtx 21
21
2
0
0
DDdt
dx
Dx
Amortecimento Equação da Resposta a um Degrau Equações dos coeficientes –
Resposta a um degrau
Superamortecido tsts
f eAeAXtx 21
21 210 AAXx f
Subamortecido t
ddf etBtBXtx sincos 21
22
0
21
1
:
0
0
d
d
f
onde
BBdt
dx
BXx
Criticamente
amortecido t
f eDtDXtx 21
21
2
0
0
DDdt
dx
DXx f
Equação característica:
RLC série e paralelo 02
2
0
2 ss
Raízes 2
0
2
21, ss
Tabela 1 – Equações das respostas de um circuito RLC em paralelo ou em série
72
Sendo assim, utilizando o procedimento descrito, é possível solucionar os circuitos a
seguir. No MATLAB®, as curvas podem ser evidenciadas.
Exemplo 12.1 - Determinar a expressão de tiL para R=400Ω, sabendo que a energia
inicial do circuito é zero e que em t=0s, uma fonte de corrente de I=24mA é ligada ao
circuito.
Figura 12.1: Resposta a um degrau de um circuito RLC paralelo Fonte: Circuitos Elétricos, Nilsson e Riedel, Exemplos 8.6, 8.7 e 8.8 pág. 256 e 257
Valor inicial de Li :
Energia inicial zero, então .00 AiL
Valor inicial de dt
diL :
Energia inicial zero, então .00
dt
diL
Verificando o tipo de amortecimento:
824
9
812
0
1025/105254002
10
2
1
/10162525
101
sradRC
sradLC
Então, temos uma resposta do sistema superamortecida, pois 2
0
2 .
73
Raízes:
srads
srads
/80000103105
/20000103105
44
2
44
1
Expressão:
tsts
fL eAeAIti 21
21
Mas:
mAA
mAA
AsAsdt
di
AAIi
L
fL
8
32
00
00
2
1
2211
21
Logo:
stmAeeti tt
L 0,83224 8000020000
No MATLAB®:
clear clc
%-------------------------------------------------------
%Mini-curso de Matlab - PET-Elétrica %-------------------------------------------------------
fprintf ('\nExemplo 12.1\n') %Valores dos componentes e fontes: If = 24e-3; %Fonte de corrente R = 400; %Resistência C = 25e-9; %Capacitância L = 25e-3; %Indutância
%Tempo máximo de simulação tmax = 0.002; dt = 10e-8; %Vetor tempo t = [0:dt:tmax]; %Numero de pontos TAM = length(t);
%Criando vetores: iL = zeros(1,TAM); didt = zeros(1,TAM);
%Verificando o tipo de resposta: alfa = 1/(2*R*C); w0 = sqrt(1/(L*C));
74
%Eq. Caracteristica: poly = [1 (2*alfa) (w0^2)]; S = roots(poly); s2 = S(1); s1 = S(2);
%Condições iniciais iL(1) = 0; didt (1) = 0;
%Obtendo coeficientes: a = [1 1; s1 s2]; b = [(iL(1)-If);didt(1)]; A = a\b; A1 = A(1); A2 = A(2);
%Simulação dos pontos for tempo = 1:TAM iL(tempo)= If+A1*exp(s1*t(tempo))+A2*exp(s2*t(tempo)); end
%Escrevendo as respostas: fprintf('Raizes:\n'); fprintf('s1 = %.3f\n', s1); fprintf('s2 = %.3f\n', s2); fprintf('Coeficientes:\n'); fprintf('A1 = %.3f\n', A1); fprintf('A2 = %.3f\n', A2);
%Plotar gráfico: plot(t, iL, 'k'), grid title('Gráfico da corrente no indutor versus tempo’) xlabel('Tempo (s)'), ylabel('Corrente no indutor (A)')
Solução:
Exemplo 12.1
Raízes:
s1 = -20000.000
s2 = -80000.000
Coeficientes:
A1 = -0.032
A2 = 0.008
75
Figura 12.2: Gráfico da corrente em função do tempo no indutor
76
13. Potência complexa
Existem inúmeros conceitos envolvidos no estudo de potência em circuitos
senoidais, porém, no intuito de facilitar o entendimento desta análise trataremos
apenas da potência complexa a qual traz informações suficientes sobre a potência dos
circuitos elétricos em análise.
A potência complexa, expressa em volt-ampère(VA), é dada pela soma entre a
potência ativa (unidade W) e a potência reativa (unidade var) multiplicada por j.
jQPS
Uma das vantagens de se utilizar a potência complexa nas análises, é que esta
permite uma análise geométrica, na qual é originado o triângulo de potência. Veja:
Figura 13.1: Triângulo de potência
A relação entre a potência útil do circuito (potência ativa) e a potência total do
circuito(potência aparente) é denominada fator de potência. Sendo assim, o cosseno
do ângulo é equivalente ao valor do fator de potência do circuito em questão.
Então, considerando que se trata de potências em circuitos senoidais, estas
serão dadas por:
22
:
sin
cos
QPS
onde
SQ
SP
Fasorialmente, temos que a potência aparente é dada por:
SS
77
Analiticamente, a potência pode ser demonstrada a partir das expressões da
corrente e da tensão a seguir:
im
vm
tIi
tVv
cos
cos
Então, desenvolvendo a expressão ivp , obtém-se que a potencia total é dada
por:
tQtPPp 2sin2cos
Portanto, no intuito de realizar o estudo da potência complexa em circuitos
elétricos, consideremos o seguinte exemplo:
Exemplo 13.1 - Uma carga elétrica é alimentada com 240 Vrms. A carga consome uma
potência média de 8kW com um fator de potência atrasado de 0,8.
a) Calcule a potência complexa da carga.
b) Calcule a impedância da carga.
Fonte: Circuitos Elétricos, Nilsson e Riedel, pág336
SOLUÇÃO:
a)
sin
cos
SQ
SP
6,0sin8,0cos
:
mas
var6sin10
108,0
8
cos
:
kQ
kVAkP
S
Logo
Logo:
kVAjS 68
78
b)
AI
Logo
WIP
IVIVP
eff
eff
effeffiveffeff
67,41
:
80008,0240
coscos
o
eff
eff
Z
I
VZ
Assim
87,3676,5
8,0cos
:
1
Exemplo 13.2 - Determinar as potências fornecidas pelas fontes de tensão do circuito
do EXEMPLO 9.2 para um circuito que opera com freqüência de 60Hz.
Já temos conhecimento dos valores das correntes de malha do circuito. Perceba que as
correntes que passam pelas fontes de tensão são 1I e 2I respectivamente.
5226ˆ1 jI A
5824ˆ2 jI A
Assim, temos que:
VAS
Ou
jS
jS
jS
IVS
o
indepfonte
indepfonte
o
indepfonte
o
indepfonte
indepfonteindepfonte
56,1167,8720
78003900
52260150
52260150
ˆˆ
_
_
_
*
_
*
1__
VAS
Ou
jS
jjS
jIIIMas
jIS
IVS
o
depfonte
depfonte
depfonte
x
xdepfonte
depfontedepfonte
91,4056,15482
1014011700
58246239
62ˆˆˆ:
5824ˆ39
ˆˆ
_
_
_
21
*
_
*
2__
79
Plotando os diagramas fasoriais no MATLAB®, temos:
clear clc
%--------------------------------------------------------
%Mini-curso de Matlab - PET-Elétrica %--------------------------------------------------------
fprintf ('\nExemplo 13.2\n')
t = [0:1e-4:.05]; Vindep = 150*exp(i*(0*pi/180)); I1 = -26-52*i; I2 = -24-58*i; Vdep = 39*(I1-I2);
Sindep = Vindep*conj(I1); Sdep = Vdep*conj(-I2);
subplot(2,2,1), plot([0 real(Vindep)], [0 imag(Vindep)], ... [0 real(I1)], [0 imag(I1)]), grid title('Diagrama fasorial: Fonte Independente'); legend('TENSÃO', 'CORRENTE', 'Location', 'Best'); xlabel('Real'), ylabel('Imaginario');
subplot(2,2,2), plot([0 real(Vdep)], [0 imag(Vdep)], ... [0 real(I2)], [0 imag(I2)]), grid title('Diagrama fasorial: Fonte Dependente'); legend('TENSÃO', 'CORRENTE', 'Location', 'Best'); xlabel('Real'), ylabel('Imaginario');
subplot(2,2,3), plot([0 real(Sdep)], [0 imag(Sdep)], ... [0 real(Sindep)], [0 imag(Sindep)]), grid title('Diagrama fasorial: Triangulo de potências'); legend('Sdep', 'Sindep', 'Location', 'Best'); xlabel('Potencia Ativa'), ylabel('Potencia Reativa');
80
Figura 13.2: Diagramas fasoriais do exemplo 13.2
81
14. Resolução de circuitos no ambiente MATLAB®
Exercício 14.1 -Determinar as potências associadas às três fontes do circuito.
Figura 14.1: -Método das tensões de nó Fonte: Circuitos Elétricos, Nilsson e Riedel, Exercício 4.7 pág. 83
RESPOSTAS: WPWPWP AiV 80,144,150 5350 1
Exercício 14.2 - Determinar tv para fontes de tvs sin100 V e tI s cos10 A, sendo
skrad /50 .
Figura 14.2: -Método das tensões de nó Fonte: Circuitos Elétricos, Nilsson e Riedel, Exercício 9.17 pág299
RESPOSTA: ottv 57,7150000cos62,31 V
82
Exercício 14.3 –Determinar as potência fornecidas pelas fontes de tensão.
Figura 14.3: Método das Correntes de Malha com fonte dependente Fonte: Circuitos Elétricos, Nilsson e Riedel, Fig. 4.12 pág. 89
RESPOSTA: ojI 95,307,29229ˆ A
Exercício 14.4 - Determinar I através do método das malhas.
Figura 14.4: Método das correntes de malha Fonte: Circuitos Elétricos, Nilsson e Riedel, Exercício 9.18 pág. 300
RESPOSTA: ojI 95,307,29229ˆ A
83
Exercício 14.5 - Determinar 0v através do método da superposição.
Figura 14.5: Princípio da superposição Fonte: Circuitos Elétricos, Nilsson e Riedel, Exemplo 4.13 pág. 107
RESPOSTA: 240 v V
Exercício 14.6 -Em t=0s, a chave passa da posição “a” para a posição “b”. Determinar e
plotar ti e tv em função de t.
Figura 14.6: Respostado circuito RL Fonte: Circuitos Elétricos, Nilsson e Riedel, Exemplo 7.5 pág.205 fig. 7.19
84
Exercício 14.7 -Em t=0s, a chave passa da posição “a” para a posição “b”. Determinar e
plotar ti e tvC em função de t.
Figura 14.7: Resposta a um degrau de um circuito RC Fonte: Circuitos Elétricos, Nilsson e Riedel, Exemplo 7.7 pág.209 fig. 7.25
Exercício 14.8 -Em t=0s, a fonte I=24mA é ligada. Determinar a expressão de tiL ,
para R=400Ω, 500Ω e 625Ω. Em seguida plotá-la no MATLAB®.
Figura 14.8: Resposta a um degrau de um circuito RLC paralelo Fonte: Circuitos Elétricos, Nilsson e Riedel, Exemplos 8.6, 8.7 e 8.8 pág. 256 e 257
RESPOSTAS: stpmAeeti tt
L 0/,83224 8000020000
stpmAeteti tt
L 0/,2496000024 4000040000
stpmAteteti tt
L 0/,24000sin3224000cos2424 3200032000
85
15. Resposta em Frequência no Domínio da Freqüência e Diagrama de
Bode
Resposta em freqüência em regime permanente senoidal consiste no estudo dos
efeitos da variação da freqüência da fonte sobre as tensões e correntes do circuito.
Matematicamente, esta análise é definida através de uma função de transferência.
A função de transferência (ou função do sistema), normalmente representada por
H(s), pode ser definida como a razão, no domínio da freqüência, da variável de saída
face a variável de entrada.
Como a função de transferência de um filtro define o efeito do filtro em termos de
freqüência, podemos usar esta função para definir o tipo de filtro. Por exemplo, um
filtro passa baixa irá deixar passar todas as freqüências abaixo da freqüência de corte
estabelecida. O passa faixa irá deixar passar a banda de freqüência especificada. E o
rejeita faixa irá remover a banda de freqüência especificada. Cabe ressaltar que os
filtros não são ideais, ou seja, a interrupção das frequências (o corte) não é
instantânea.
Como uma função de transferência é uma função complexa, a análise dos filtros
inclui gráficos de magnitude e fase. Para isso utilizam-se as funções abs, angle e
unwrap. Adicionalmente, as funções freqs, freqz e o estudo do diagrama de Bode para
analisar o comportamento das funções, como no exemplo a seguir.
Para fazer a análise gráfica dos filtros, é essencial primeiramente determinar a
função de transferência do circuito. Logo após, utiliza-se as funções do Matlab® para
obter os gráficos.
86
Exemplo 15.1:
Faça a análise do presente circuito:
Figura 15.1: Representação Filtro Passa Alta Fonte: Apostila do Laboratório de Circuitos Elétricos II.
É importante destacar que, caso deseje-se obter a freqüência de corte, é
preciso observar no gráfico em qual freqüência ocorre uma atenuação de 3dB , isto é,
uma redução de 70,7% do valor da faixa de passagem.
clear clc
%------------------------------------------------
%Mini-curso de Matlab - PET-Elétrica %------------------------------------------------
w = logspace(-2,6,500);
R = 50;
L = 0.02;
Xl = j*w*L;
H = Xl./(R+Xl);
figure(1);
subplot(121), semilogx(w,20*log10(abs(H))),grid
xlabel('omega', 'FontSize', 14)
ylabel('20log_1_0|H| (dB)', 'FontSize', 14)
subplot(122), semilogx(w,angle(H)*180/pi),grid
xlabel('omega', 'FontSize', 14)
ylabel('fi(graus)', 'FontSize', 14)
87
Figura 15.1: Diagrama de Bode