87
U NIVERSIDADE F EDERAL DE C AMPINA G RANDE - UFCG C ENTRO DE E NGENHARIA E LÉTRICA E I NFORMÁTICA - CEEI U NIDADE A CADÊMICA DE E NGENHARIA E LÉTRICA - UAEE P ROGRAMA DE E DUCAÇÃO T UTORIAL - PET MINICURSO: Análise de Circuitos no Matlab ® 3ª Edição Fevereiro de 2012

Apostila de MATLAB

Embed Size (px)

DESCRIPTION

Apostila de MATLAB. PET-Elétrica, 3a edição.

Citation preview

Page 1: Apostila de MATLAB

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

Page 2: Apostila de MATLAB

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

Page 3: Apostila de MATLAB

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

Page 4: Apostila de MATLAB

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

Page 5: Apostila de MATLAB

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.

Page 6: Apostila de MATLAB

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.

Page 7: Apostila de MATLAB

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

Page 8: Apostila de MATLAB

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

Page 9: Apostila de MATLAB

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:

Page 10: Apostila de MATLAB

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

Page 11: Apostila de MATLAB

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

Page 12: Apostila de MATLAB

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

Page 13: Apostila de MATLAB

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 " .‘ ").

Page 14: Apostila de MATLAB

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

Page 15: Apostila de MATLAB

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

Page 16: Apostila de MATLAB

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.

Page 17: Apostila de MATLAB

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.

Page 18: Apostila de MATLAB

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.

Page 19: Apostila de MATLAB

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.

Page 20: Apostila de MATLAB

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)

Page 21: Apostila de MATLAB

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)

Page 22: Apostila de MATLAB

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.

Page 23: Apostila de MATLAB

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)

Page 24: Apostila de MATLAB

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

Page 25: Apostila de MATLAB

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.

Page 26: Apostila de MATLAB

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')

Page 27: Apostila de MATLAB

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

Page 28: Apostila de MATLAB

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.

Page 29: Apostila de MATLAB

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);

Page 30: Apostila de MATLAB

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

Page 31: Apostila de MATLAB

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

Page 32: Apostila de MATLAB

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)

Page 33: Apostila de MATLAB

33

Figura 6.9: Gráfico plotado no exemplo 6.10

Figura 6.10: Gráfico plotado no exemplo 6.11

Page 34: Apostila de MATLAB

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 =

Page 35: Apostila de MATLAB

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.

Page 36: Apostila de MATLAB

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.

Page 37: Apostila de MATLAB

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

Page 38: Apostila de MATLAB

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.

Page 39: Apostila de MATLAB

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

Page 40: Apostila de MATLAB

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®.

Page 41: Apostila de 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

Page 42: Apostila de MATLAB

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;

Page 43: Apostila de MATLAB

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.

Page 44: Apostila de MATLAB

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

Page 45: Apostila de MATLAB

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

Page 46: Apostila de MATLAB

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

Page 47: Apostila de MATLAB

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

Page 48: Apostila de MATLAB

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

Page 49: Apostila de MATLAB

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.

Page 50: Apostila de MATLAB

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

Page 51: Apostila de MATLAB

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

Page 52: Apostila de MATLAB

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

Page 53: Apostila de MATLAB

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

Page 54: Apostila de MATLAB

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;

Page 55: Apostila de MATLAB

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

0

5

ˆ20ˆ

5

ˆ

21

ˆˆ

2

2212

xIV

j

V

j

VV

Page 56: Apostila de MATLAB

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ˆ

Page 57: Apostila de MATLAB

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

Page 58: Apostila de MATLAB

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

Page 59: Apostila de MATLAB

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

Page 60: Apostila de MATLAB

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;

Page 61: Apostila de MATLAB

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

Page 62: Apostila de MATLAB

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

Page 63: Apostila de MATLAB

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

Page 64: Apostila de MATLAB

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

Page 65: Apostila de MATLAB

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

Page 66: Apostila de MATLAB

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

Page 67: Apostila de MATLAB

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

Page 68: Apostila de MATLAB

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:

Page 69: Apostila de MATLAB

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.

Page 70: Apostila de MATLAB

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.

Page 71: Apostila de MATLAB

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

Page 72: Apostila de MATLAB

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 .

Page 73: Apostila de MATLAB

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));

Page 74: Apostila de MATLAB

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

Page 75: Apostila de MATLAB

75

Figura 12.2: Gráfico da corrente em função do tempo no indutor

Page 76: Apostila de MATLAB

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

Page 77: Apostila de MATLAB

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

Page 78: Apostila de MATLAB

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__

Page 79: Apostila de MATLAB

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');

Page 80: Apostila de MATLAB

80

Figura 13.2: Diagramas fasoriais do exemplo 13.2

Page 81: Apostila de MATLAB

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

Page 82: Apostila de MATLAB

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

Page 83: Apostila de MATLAB

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

Page 84: Apostila de MATLAB

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

Page 85: Apostila de MATLAB

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.

Page 86: Apostila de MATLAB

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)

Page 87: Apostila de MATLAB

87

Figura 15.1: Diagrama de Bode