You are on page 1of 54

Programação Aplicada à

Engenharia
Curso Superior de Engenharia Mecatrônica

Ano 2010 - Versão 1.1

Professor : Luís Oscar de Araujo Porto Henriques

-1-
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

1 Introdução
1.1 O que é o MATLAB?

MATLAB é um "software" interativo de alta performance voltado para o cálculo numérico. O


MATLAB integra análise numérica, cálculo com matrizes, processamento de sinais e construção de
gráficos em ambiente fácil de usar onde problemas e soluções são expressos somente como eles são
escritos matematicamente, ao contrário da programação tradicional.

O MATLAB é um sistema interativo cujo elemento básico de informação é uma matriz que não requer
dimensionamento. Esse sistema permite a resolução de muitos problemas numéricos em apenas uma
fração do tempo que se gastaria para escrever um programa semelhante em linguagem C ou Java.
Além disso, as soluções dos problemas são expressas no MATLAB quase exatamente como elas são
escritas matematicamente.

1.2 Carregando o MATLAB

No Gerenciador de Programas do Microsoft Windows deve-se abrir o grupo de programas do


MATLAB for Windows, que contém o ícone do aplicativo MATLAB. Um duplo clique no ícone
MATLAB carrega o aplicativo MATLAB.

Quando o MATLAB é carregado, 3 janelas são exibidas: a Janela de Comando (Command Windows),
area de trabalho (Workspace) e Histórico (Command History). A Janela de Comando é ativada quando
se inicializa o MATLAB, e o "prompt" padrão (>>) é exibido na tela.

-2 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

1.3 Usando o Help

Uma vez que você está dentro do MATLAB, você pode pedir ajuda usando o comando help. Você
pode usar os seguintes comandos:

>> help

ou

>> help comando

Ao utilizá-lo, inúmeros tópicos irão ser apresentados, os mais importantes são: general(que
contempla os mais básicos comandos do matlab) e elfun (que contempla as funções matemáticas
elementares – Trigonometria, exponencial, complexo)

Para demonstrar as capacidades do MATLAB podemos utilizar o comando demo. O comando demo
irá abrir uma janela com inúmeros itens. Abra o item simulink/SimPowerSystems

1.4 Fazendo um exemplo simples

Suponha que temos dois pontos P1 e P2 cujas coordenadas são:

P1=(1,5) e P2=(4,7)

Queremos calcular a distancia entre dois pontos, que é a hipotenusa de um triângulo retângulo,
conforme mostra a figura abaixo. Usando o teorema de pitágoras, podemos calcular a distancia d com
a seguinte equação:

d = s12 + s 22
d = (4 − 1)2 + (7 − 5)2
d = 13
d = 3, 61

1 4

Como solucionaríamos este sistema no matlab?

-3 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Para isto devemos criar um arquivo texto com extensão *.m ( extensão do matlab).

Os comandos do MATLAB são normalmente digitados na Janela de Comando, onde uma única linha
de comando é introduzida e processada imediatamente. O MATLAB é também capaz de executar
seqüências de comandos armazenadas em arquivos.

Os arquivos que contêm as declarações do MATLAB são chamadas arquivos ".m", e consistem de uma
seqüências de comandos normais do MATLAB, possibilitando incluir outros arquivos ".m" escritos no
formato texto (ASCII).

Para editar um arquivo texto na Janela de Comando do MATLAB selecione New M-File para criar um
novo arquivo ou Open M-File para editar um arquivo já existente, a partir do menu File. Os arquivos
podem, também, ser editados fora do MATLAB utilizando qualquer editor de texto.

Uma nova janela será criada. Nela digite os comando abaixo:

%este programa calcula e imprime a distancia em linha reta, entre dois pontos

p1x=1; %ponto 1 – eixo x


p1y=5; %ponto 1 – eixo y
p2x=4; %ponto 2 – eixo x
p2y=7; %ponto 2 – eixo y
d=sqrt((p2x-p1x)^2+(p2y-p1y)^2) % calcula a distância

Salve o arquivo com seu nome na pasta work e o execute na linha de comando

Ao executarmos teremos o resultado:

d=3.6056

Observaçôes: 1) o sinal de percentagem serve como comentário no matlab

2)Salve o arquivo com um nome sem acentos, espaços, e sinais alternativos.

Esta saída coincide com o valor que calculamos no exemplo manual. Se a solução MATLAB não
coincidir com o exemplo manual, devemos rever ambas soluções a fim de encontrar o erro.

Testem o programa de vocês agora com outros pontos:

P3=(4,-2) e P2=(10,2). A resposta deve ser de: 7.2111

Percebe-se que todas as vezes que precisamos mudar os valores dos pontos temos que abrir o arquivo
salvo. Podemos fazer melhorias no programa com o objetivo de evitar a modificação do arquivo.

Façamos então:

%este programa calcula e imprime a distancia em linha reta, entre dois pontos

p1x=input('Entre com o valor de x do ponto 1:')

-4 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

p1y=input('Entre com o valor de y do ponto 1:')


p2x=input('Entre com o valor de x do ponto 2:')
p2y=input('Entre com o valor de y do ponto 2:')
d=sqrt((p2x-p1x)^2+(p2y-p1y)^2) % calcula a distância

Obs: Podemos incluir no fim deste programa o seguintes comandos também.

Distancia=['A distancia entre os pontos é:' num2str(d)];


Disp(Distancia)

1.5 Outro exemplo

Para entrar com uma matriz pequena, por exemplo usa-se

>> A = [1 2 3; 4 5 6; 7 8 9]

colocando colchetes em volta dos dados e separando as linhas por ponto e vírgula.. Quando se
pressiona a tecla <enter> o MATLAB responde com

1 2 3 
A = 4 5 6
7 8 9

Para inverter esta matriz usa-se

>> B = inv(A)

e o MATLAB responde com o resultado.

(colocar aqui o resultado obtido) O que achou do resultado?

 
 
 
 
 
 
 
B= 
 
 
 
 
 
 
 

-5 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

1.6- Funções especiais de matrizes no matlab

zeros(n) – Matriz quadrada de zeros de ordem n

ones(n) – Matriz quadrada de uns de ordem n

eye(n) – Matriz quadrada identidade de ordem n

size(A) – Retorna 2 valores: número de linhas e número de colunas da matriz A

length(A) – Retorna a maior dimensão da matriz A.

Exercicio: Responda às questões seguintes baseando na matriz abaixo:

1.1 − 3.2 3.4 


C = 0.6 1.1 − 0.6
1.3 0.6 5.5 

a)Qual o tamanho da matriz C?

b)qual o valor de C(2,3)?

c) Quais os indices de todos os elementos cujo valor é o móculo de 0.6

-6 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

2 - OPERAÇÕES COM MATRIZES


As operações com matrizes no MATLAB são as seguintes:

• · Adição;
• · Subtração
• · Multiplicação;
• · Transposta;

A seguir cada uma dessas operações é mostrada com mais detalhe.

2.1 Transposta

O caracter apóstrofo, " ' " , indica a transposta de uma matriz. A declaração

>> A = [1 2 3; 4 5 6; 7 8 0]
>> B = A'

que resulta em

1 2 3 
A = 4 5 6
7 8 0

1 3 7 
B = 2 5 8
3 6 0

e
>> x = [-1 0 2]'

Produz

− 1
x =  0 
 2 

Se Z é uma matriz complexa, Z' será o conjugado complexo composto. Para obter simplesmente a
transposta de Z deve-se usar Z. ', como mostra o exemplo

>> Z = [1 2; 3 4] + [5 6; 7 8]*i
>> Z1 = Z'

que resulta em:

-7 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

1 + 5i 2 + 6i 
Z=
3 + 7i 4 + 8i 
1 − 5i 3 − 7i 
Z1 = 
2 − 6i 4 − 8i 

2.2 Determinante

O determinante de uma matriz é obtido através do comando “det(A).

Portanto, se

1 2 3
A = 4 5 6
7 8 0

det(A) = 27

2.3 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 as mesmas dimensões. Por exemplo, a soma com as matrizes
mostradas acima, A + x, não é correta porque A é 3x3 e x é 3x1. Porém,

>> C = A + B

é aceitável, e o resultado da soma é

 2 6 10
C =  6 10 14
10 14 0 

A adição e subtração também são definidas se um dos operadores é um escalar, ou seja, uma matriz l x
l. Neste caso, o escalar é adicionado ou subtraído de todos os elementos do outro operador. Por
exemplo:

>> y = x - 1

resulta em:

-8 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

− 2
y =  − 1
 1 

2.4 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

é aceitável, e resulta em

Ans =
4

É evidente que o resultado da multiplicação y'*x será o mesmo. Existem dois outros produtos que são
transpostos um do outro.

>> x*y'
2 1 − 1

Ans =  0 0 0 
− 4 − 2 2 

>> y*x'
 2 0 − 4
Ans =  1 0 − 2
− 1 0 2 

2.5 Divisão

Existem dois símbolos para divisão de matrizes no MATLAB "\" e "/". Se A é uma matriz quadrada
não singular, 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. Em
geral,

X = A\B é a solução de A*X = B

X = B/A é a solução de X*A = B

Por exemplo, como o vetor B foi definido como A*x, a declaração

>> z = A\B

resulta em

-9 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

− 1
z =  0 
 2 

Agora vamos aplicar este conhecimento na resolução de um sistema de equações baseado no circuito
abaixo.

22Ω 15Ω

R1 R3
10Ω R2

20V E1 15V
10V E2
E3

R4 12Ω

2.6 Exponenciaçã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 exponenciação é computada como múltiplas multiplicações. Por
exemplo,

>> A^3

279 360 306


Ans = 684 873 684
738 900 441

OPERAÇÕES COM CONJUNTOS

O termo operações com conjuntos é usado 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 feitas como as operações usuais, utilizando-se dos mesmos caracteres ("*", "/", "\",
"^" e " ‘ ") precedidos por um ponto "." (".*", "./", ".\", ".^" e " .‘ ").

2.7 Adição e Subtração

Para a adição e a subtração, a operação com conjuntos e as operações com matrizes são as mesmas.
Deste modo os caracteres "+" e "-" podem ser utilizados tanto para operações com matrizes como para
operações com conjuntos.

-10 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

2.8 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];

então,

>> z = x .* y

resulta em

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

resulta em

z = [4 2.5 2]

2.9 Exponenciação

A exponenciação de conjuntos é indicada por ".^". A seguir são mostrados alguns exemplos usando os
vetores x e y. A expressão

>> z = x .^ y

resulta em

A exponenciaçã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]

-11 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

2.10 Operações Comparativas

Estes são os seis operadores usados para comparação de duas matrizes com as mesmas dimensões:

< menor

<= menor ou igual

> maior

>= maior ou igual

== igual

~= diferente

A comparação é feita entre os pares de elementos correspondentes e o resultado é uma matriz


composta dos números um e zero, com um representando VERDADEIRO e zero, FALSO. Por
exemplo,

>> 2 + 2 ~= 4

ans =
0

Pode-se usar, também os operadores lógicos & (e) e I (ou). Por exemplo,

>> 1= = 1 & 4 = = 3

ans =
0

>> 1 = = 1 | 4 = = 3

ans =
1

Exemplo de circuito lógico: Desenhe os blocos que representem a equação abaixo e mostre
matricalmente o resultado.

(A|B)&(C&D) &(~E)

MANIPULAÇÃO DE VETORES E MATRIZES

O MATLAB permite a manipulação de linhas, colunas, elementos individuais e partes de matrizes.

-12 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

2.11 Gerando Vetores

Os dois pontos, " : ", é um caracter importante no MATLAB. A declaração

>> x = 1 : 5

gera um vetor linha contendo os números de 1 a 5 com incremento unitário. Produzindo

x = [1 2 3 4 5]

Outros incrementos, diferentes de um, podem ser usados.

>> y = 0 : pi/4 : pi

que resulta em

y = [0.000 0.7854 1.5708 2.3562 3.1416]

Incrementos negativos também são possíveis.

>> z = 6 : -l : l

z = [6 5 4 3 2 1]

Pode-se, também, gerar vetores usando a função linspace. Por exemplo,

>> k = linspace (0, l, 6)

k = [0 0.2 0.4 0.6 0.8 1]

gera um vetor linearmente espaçado de 0 a 1, contendo 6 elementos.

2.12 Elementos das Matrizes

Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre parênteses. Por
exemplo, dada a matriz A:

1 2 3 
A = 4 5 6
7 8 9

a declaração

>> A(3,3) = A(1,3) + A(3,l)

resulta em

-13 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

1 2 3 
A = 4 5 6 
7 8 10

2.13 Funções Matemáticas e Lógicas

As funções lógicas e relacionais do MATLAB são:

any - condições lógicas


all - condições lógicas
find - encontra os índices da matriz de valores lógicos
exist - verifica a existência de variáveis
isnan - detecta se algum elemento da matriz é NaN
isinf - detecta se algum elemento da matriz é infinito
finite - verifica os valores finitos da matriz
isempty - detecta matrizes vazias
isstr - detecta variáveis string
isglobal - detecta variáveis globais
issparse - detecta matrizes esparsas

A funções trigonométricas incluídas no MATLAB são

sin - seno atan2 - arco-tangente para os quatro quadrantes


cos - cosseno sinh - seno hiperbólico
tan - tangente cosh - cosseno hiperbólico
asin - arco-seno tanh - tangente hiperbólica
acos - arco-cosseno asinh - arco-seno hiperbólico
atan - arco-tangente acosh - arco-cosseno hiperbólico
atanh - arco-tangente hiperbólico

MATLAB inclui como funções elementares

Abs(x) - valor absoluto ou módulo de um número complexo


angle(x) - ângulo de fase
sqrt(x) - raiz quadrada
real(x) - parte real
imag(x) - parte imaginária
conj(x) - complexo conjugado
round(x) - arredondamento para o inteiro mais próximo
fix(x) - arredondamento para o inteiro mais próximo de zero
floor(x) - arredondamento para o inteiro mais próximo de -
ceil(x) - arredondamento para o inteiro mais próximo de +
sign(x) - função sinal

-14 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

rem(x,y) - remanescente ou módulo


gcd - máximo divisor comum
lcm - mínimo múltiplo comum
exp(x) - exponencial de base e
log(x) - logaritmo natural
log10(x) - logaritmo de base 10

3 FUNÇÕES
As funções matemáticas são representadas no MATLAB por arquivos ".m". Por exemplo, a função
está disponível no MATLAB como um arquivo ".m" chamado humps.m:

function y = humps(x)
y =1 ./ ((x-.3).^2 + .0l) + 1./((x-.9).^2 + .04) - 6;

1 1
humps( x) = + −6
( x − 0.3) + 0.01 ( x − 0.9) 2 + 0.04
2

O gráfico da função é:

>> x = -1:0.01:2;
>> plot(x,humps(x))

Devemos salientar que na primeira linha temos um vetor que começa em -1 e termina em 2 com
passo de 0.01.

-15 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

100

80

60

40

20

-20
-1 -0.5 0 0.5 1 1.5 2

3.1 Integração Numérica

A área abaixo da curva pode ser determinada através da integração numérica da função humps(x),
usando o processo chamado quadratura. Integrando a função humps(x) de -1 a 2:

>> q = quad ('humps',-1,2)

q=
26.3450

Os dois comandos do MATLAB para integração usando quadratura são:

quad Calcular integral numericamente, método para baixa ordem.

quadl Calcular integral numericamente, método para alta ordem.

3.2 Equações Não-Lineares e Otimização

Os dois comandos para equações não-lineares e otimização incluem:

fmin Minimizar função de uma variável.

-16 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

fmins Minimizar função de várias variáveis

fzero Encontrar zero de função de uma variável.

Continuando o exemplo, a localização do mínimo da função humps(x) no intervalo de 0.5 a 1 é obtido


da seguinte maneira,

>> xm = fmin('humps',0.5,1)

xm =
0.6370

>> ym = humps(xm)

ym =
11.2528

E o gráfico deste intervalo com o ponto de mínimo pode ser construído:

>> x = 0.5:0.01:1
>> plot(x, humps(x), xm, ym, ‘o’)

Pode-se ver que a função humps(x) apresenta dois "zeros" no intervalo de -1 a 2. A localização do
primeiro "zero" é próxima do ponto x = 0,

xzl = fzero('humps',0)

xzl =
-0.1316

-17 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

e a localização do segundo "zero" é próxima do ponto x= 1,

>> xz2=fzero('humps',1)

xz2 =
1.2995

O gráfico da função com os dois "zeros" é obtido através da expressão:

>> x = -1:0.01:2
>> plot(x, humps(x), xzl, humps(xzl),'*', xz2, humps(xz2), '+'),
grid

3.3 Equações Diferenciais

Os comandos do MATLAB para resolver equações diferenciais ordinárias são:

ode23 Resolver equação diferencial. método baixa ordem.

ode23p Resolver e plotar soluções.

ode45 Resolver equação diferencial. Método para alta ordem

Considere a equação diferencial de segunda ordem chamada de Equação de Van der Pol

x + (x2 - 1) . x + x = 0

Pode-se rescrever esta equação como um sistema acoplado de equações diferenciais de primeira ordem

x1 = x1 . (1-x22) - x2
x2 = x1

O primeiro passo para simular esse sistema é criar um arquivo ".m" contendo essas equações
diferenciais. Por exemplo, o arquivo vdp1.m:

-18 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

function dydt = vdp1(t,y)


%VDP1 Evaluate the van der Pol ODEs for mu = 1
% Jacek Kierzenka and Lawrence F. Shampine
% Copyright 1984-2002 The MathWorks, Inc.
% $Revision: 1.5 $ $Date: 2002/04/15 03:30:32
$

dydt = [y(2); (1-y(1)^2)*y(2)-y(1)];

Para simular a equação diferencial no intervalo entre 0 e 20, utiliza-se o comando ode23

>>[t,y]=ode23(@vdp1,[0 20],[2 0]);


>>plot(t,y(:,1));
>>plot(t,y(:,2));

3.4 Cálculo Diferencial e Integral

Antes de qualquer operação, onde se tem x, y, z ou qualquer outra como variável, é preciso definir sua
variável, para isso usa-se o comando:

syms x ,

dessa forma estará indicando que qualquer x que for colocado em funções é uma variável e não um
número.

-19 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

3.4.1 Limites

Para efetuar uma operação com limites no MATLAB, o comando que se deve dar é:

>>limit(f(x),x,a)

onde f(x) é a função que se quer achar o limite, x é a variável e a é o número no qual o x está tendendo
( x → a ).

Exemplo: Achar o limite abaixo:

resposta: -5/3

3.4.2 Limites à esquerda e à direita

Para calcular limites à esquerda e à direita, o comando é:

>>limit(f(x),x,a,’left’)
e
>> limit(f(x),x,a,’right’)

onde ‘left’ e ‘right’ são os comandos para calcular à esquerda e à direita, respectivamente.

resultado: inf e –inf

3.4.3 Derivadas

Para o cálculo de derivadas, o comando no MATLAB é:

>>diff(f(x)),

onde f(x) é a função que se quer determinar a derivada.

Exemplo: Derivar as funções abaixo:

-20 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

resposta: 4*x+3 e 1/(3-x)^2

3.4.4 Derivadas superiores

As derivadas superiores são simples de se calcular no MATLAB, o comando para tal operação é o
mostrado abaixo:

>> diff(f(x),2),

esse exemplo é para a derivada segunda da função f(x), para derivada terceira, coloca-se 3 no lugar do
número 2, para derivada quarta, o numero 4 e assim por diante.

Exemplo: Derivar as funções abaixo:

resposta:a) 2/(3-x)^3 e -2/x^3, 1+1/x^2

3.4.5 Derivadas Trigonométricas

resposta: cos(x), -2*sen(2*x) e 3+3*tan(3*x+5)^2

3.4.6 - Integrais

Na integração de funções, o comando que o MATLAB reconhece para tal operação é:

>> int(f(x)) ,

pode – se colocar a função dentro dos parênteses, ou então definir uma função f e simplesmente
escrever int(f).

Exemplo: Integrar as funções abaixo:

-21 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

3.4.7 Integrais definidas

Ao se calcular integrais definidas no MATLAB, o comando necessário fornecer o seguinte comando:

>> int(f(x),a,b),

onde a é o limite inferior e b, o limite superior da integral.

Exemplos:

-22 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

4 GRÁFICOS
A construção de gráficos no MATLAB é mais uma das facilidades do sistema. Através de comandos
simples pode-se obter gráficos bidimensionais ou tridimensionais com qualquer tipo de escala e
coordenada. Existe no MATLAB uma vasta biblioteca de comandos gráficos.

Se X e Y são vetores com dimensões iguais, o comando plot(X,Y) produz um gráfico bidimensional
dos elementos de X versos os elementos de Y, por exemplo

>> t = 0:0.05:4*pi;
>> y = sin(t);
>> plot(t,y)

resulta em

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 2 4 6 8 10 12 14

4.1 Gráficos Bidimensionais

Estes são os comandos para plotar gráficos bidimensionais:

plot Plotar linear.


loglog Plotar em escala loglog.
semilogx Plotar em semilog.
semilogy Plotar em semilog.
fill Desenhar polígono 2D.

-23 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

polar Plotar em coordenada polar.


bar Gráfico de barras.
stem Seqüência discreta.
stairs Plotar em degrau.
errorbar Plotar erro.
hist Plotar histograma.
rose Plotar histograma em ângulo.
compass Plotar em forma de bússola.
feather Plotar em forma de pena.
fplot Plotar função.
comet Plotar com trajetória de cometa.

Exemplos:

1) gráfico em polar

>> t=0:.01:2*pi;
>>r=sin(2*t).*cos(2*t);
>> polar(t,r)

2) grafico de barras

>> x=-2.9:0.2:2.9;
>> y=exp(-x*x);
>> bar (x,y)
>> figure
>> stairs(x,y)

3) gráfico de stem

>> y=randn(50,1); % cria dados aleatórios


>> stem(y,’:’)

4) gráfico com semilogx

plotar um gráfico com a distância entre dois pontos do planeta Terra que se movimentam com as
placas tectônicas e o tempo.

4.1.1 Números Complexos

Quando os argumentos para plotar são complexos, a parte imaginária é ignorada, exceto quando é dado
simplesmente um argumento complexo. Para este caso especial é plotada a parte real versos a parte
imaginária. Então, plot(Z), quando Z é um vetor complexo, é equivalente a plot(real(Z),imag(Z)).

4.1.2 Escala Logarítmica, Coordenada Polar e Gráfico de Barras

-24 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

O uso de loglog, semilogx, semilogy e polar é idêntico ao uso de plot. Estes comandos são usados
para plotar gráficos em diferentes coordenadas e escalas:

• polar(Theta,R) plota em coordenadas polares o ângulo THETA, em radianos, versos o raio R;


• loglog plota usando a escala log10xlog10;
• semilogx plota usando a escala semi-logarítmica. O eixo x é log10 e o eixo y é linear;
• semilogy plota usando a escala semi-logarítmica. O eixo x é linear e o eixo y é log10;

O comando bar(X) mostra um gráfico de barras dos elementos do vetor X, e não aceita múltiplos
argumentos.

Exemplo: plotar o seno(x), porém usando valores em polar

4.1.3 Escala Linear

Se Y é um vetor, plot(Y) produz um gráfico linear dos elementos de Y versos o índice dos elementos
de Y. Por exemplo, para plotar os números [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0,14], entre com o vetor e
execute o comando plot:

>> Y = [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0.14];


>> plot(Y)

e o resultado é mostrado na Janela Gráfica:

O MATLAB pode também plotar múltiplas linhas e apenas um gráfico. Existem duas maneiras, a
primeira é usado apenas dois argumentos, como em plot(X,Y), onde X e/ou Y são matrizes. Então:

Se Y é uma matriz e X um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas de Y versos o


vetor X.

-25 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Se X é uma matriz e Y é um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas de X versos o


vetor Y.

Se X e Y são matrizes com mesma dimensão, plot(X,Y) plota sucessivamente as colunas de X versos
as colunas de Y.

Se Y é uma matriz, plot(Y) plota sucessivamente as colunas de Y versos o índice de cada elemento da
linha de Y.

A segunda, e mais fácil, maneira de plotar gráficos com múltiplas linhas é usando o comando plot com
múltiplos argumentos. Por exemplo:

>> plot(t, sin(t), t, cos(t), t, sin(t + pi), t, cos(t + pi))

4.2 Anotações no Gráfico

O MATLAB possui comandos de fácil utilização para adicionar informações em um gráfico:

title Título do gráfico.


xlabel Título do eixo-X.
ylabel Título do eixo-Y.
zlabel Título do eixo-Z.
text Inserir anotação no gráfico.
gtext Inserir anotação com o "mouse".
grid Linhas de grade.
legend Cria legenda para os gráficos

Por exemplo:

Coloque titulo no gráfico, nos eixos e também legenda no gráfico anterior. Use o help para saber como
proceder.

-26 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

4.3 Estilos de Linha e Símbolo

Os tipos de linhas, símbolos e cores usados para plotar gráficos podem ser controlados se os padrões
não são satisfatórios. Por exemplo,

>> X = 0:0.05:1;
>> subplot(l,2,l), plot(X,X.^2,’k*’)
>> subplot(l,2,2), plot(X,X.^2,’k --‘)

Outros tipos de linhas, pontos e cores também podem ser usados:

TIPO DE LINHA CORES


_ _______________ y amarelo
-- -------------------- m lilás
-. -.-.-.-.-.-.-.-.-.-.-.-. c azul claro
. .............................. r vermelho
g verde
b azul escuro
w branco
k preto

TIPO DE PONTO
. .......................
* ********
° ° ° °° ° ° ° ° ° °
+ ++++++++++
x xx x x x x x x
v Triângulo para baixo
^ Triângulo para cima
d Losango

-27 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

s Quadrado
p Pentágono
h hexagono

Exercicio:

Fazer os gráficos referentes a relação peso X idade e altura X idade e uma criança baseado na tabela
abaixo:

idade altura peso


0 dias 50 3,25
2 meses 59 5,5
4 meses 63 6,9
6 meses 66 7,85
8 meses 70 8,7
10 meses 72 9,45
12 meses 75 10,1
18 meses 82 11,77
2 anos 87 13
3 anos 95 14,87
4 anos 101 16,63
5 anos 107 18,67
6 anos 114 21,04
7 anos 120 23,6
8 anos 126 26,1
9 anos 131 28,5
10 anos 135 30,9
11 anos 139 34
12 anos 144 38,8

4.4 Arquivos ".m" para gráficos

%Plota uma função y=ax^2 + bx + c no intervalo -5<x<5


clear
aux='s';
while aux== 's',
clc
a=input('a =');
b=input('b =');
c=input('c =');
x=-5:0.1:5;
y=a*x.^2+b*x+c;
plot(y)
figure(1)
pause
clc

-28 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

close
aux=input('Plotar outro ? (s/n) = => ','s');
end

O caractere % é usado para inserir um comentário no texto, o comando clear apaga todos os dados da
memória, o comando input é usado quando se deseja entrar com um dado a partir da Janela de
Comando, pause provoca uma pausa na execução do arquivo até que qualquer tecla seja digitada, clc
limpa a Janela de Comando, figure(1) mostra a Janela Gráfica número 1 e close fecha todas as Janelas
Gráficas.

4.5 Plotando Gráficos Tridimensionais e Contornos

Estes são alguns comandos para plotar gráficos tridimensionais e contornos.

Plot3 Plotar em espaço 3D.


fill3 Desenhar polígono 3D.
comet3 Plotar em 3D com trajetória de cometa.
contour Plotar contorno 2D.
contour3 Plotar contorno 3D.
clabel Plotar contorno com valores.
quiver Plotar gradiente.
mesh Plotar malha 3D.
meshc Combinação mesh/contour.
surf Plotar superfície 3D.
surfc Combinação surf/contour.
surfil Plotar superfície 3D com iluminação.
slice Plot visualização volumétrica.
cylinder Gerar cilindro.
sphere Gerar esfera.
waterfall Superficie de queda d´agua.

O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os elementos da matriz Z em


relação ao plano definindo pelas matrizes X e Y. Por exemplo,

>> [X,Y] = meshgrid(-2:.2:2, -2:.2:2);


>> Z = X.* exp(-X.^2 - Y.^2);
>> mesh(X,Y,Z)

-29 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

0.5

-0.5
2
1 2
0 1
0
-1 -1
-2 -2

e o comando contour(Z,10) mostra a projeção da superfície acima no plano xy com 10 iso-linhas:

20

18

16

14

12

10

2 4 6 8 10 12 14 16 18 20

Exemplos:

>> t=0:0.1:6*pi;
>> x=sqrt(t).*sin(2*t);
>> y=sqrt(t).*cos(2*t);
>> z=0.5*t;
>> plot3(x,y,z,'k','linewidth',1)
>> grid on
>> xlabel('x');ylabel('y');zlabel('z')

>> t=linspace(0,pi,20);
>> r=1+sin(t);
>> [X,Y,Z]=cylinder(r);
>> surf(X,Y,Z);
>> axis square

>> t=0:0.04:10;
>> x=t;

-30 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

>> y=sin(x);
>> z=t.^1.5;
>> stem3(x,y,z,'fill');

>> X=[5 9 14 20];


>> explode=[0 0 1 0];
>> pie3(X,explode)

4.6 Superfícies de Revolução

Para se obter uma superfície de revolução a partir de uma função os comandos necessários são:

x=[0:0.1:1]; pontos de discretização do eixo ox


rad=f(x); (obs: ao se multiplicar um número por x colocar um . no
comando)
n=length(rad);
cylinder(rad,n)
xlabel(‘eixo x’)
ylabel(‘eixo y’)
zlabel(‘eixo z’)
[X,Y,Z]=cylinder(rad,n);
h=surf(X,Y,Z);
rotate(h,[0,1,0],90)
xlabel(‘eixo x’)
ylabel(‘eixo y’)
zlabel(‘eixo z’)
view(15,15)

Exemplo: Construir a superfície de revolução ao girar a curva y=x^2+1:

Substitui f(x) no programa acima por x^2+1.

-31 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

5 Controle de Fluxo ( Programação com loop e repetição)

Os comandos que controlam o fluxo especificam a ordem em que a computação é feita. No MATLAB
estes comandos são semelhantes aos usados na linguagem C, mas com uma estrutura diferente.

5.1 Laço for

O laço for é o controlador de fluxo mais simples e usado na progração MATLAB. Analisando a
expressão

>> for i=1:5,


X(i)=i^2;
end

pode-se notar que o laço for é dividido em três partes:

• A primeira parte (i=1) é realizada uma vez, antes do laço ser inicializado.
• A segunda parte é o teste ou condição que controla o laço, (i<=5).
• Esta condição é avaliada; se verdadeira, o corpo do laço (X(i)=i^2) é executado.

A terceira parte acontece quando a condição se torna falsa e o laço termina.

O comando end é usado como limite inferior do corpo do laço.

É comum construções em que conjuntos de laços for são usados principalmente com matrizes:

for i= 1:8
for j= 1:8,
A(i,j)= i+j;
B(i,j)= i-j;
end
end

C=A+B;

5.2 Laço while

No laço while apenas a condição é testada. Por exemplo na expressão

a = 1; b = 15;
while a<b,
clc
a = a+1
b = b-1

-32 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

pause(1)
end
disp('fim do loop')

a condição a<b é testada. Se ela for verdadeira o corpo do laço, será executado.

Então a condição é retestada, e se verdadeira o corpo será executado novamente. Quando o teste se
tornar falso o laço terminará, e a execução continuará no comando que segue o laço após o end.

5.3 Declarações if e break

A seguir, é apresentado um exemplo do uso da declaração if no MATLAB.

for i = 1:5,
for j = 1:5,
if i == j
A(i,j) = 2;
else if abs(i-j) == 1
A(i,j) = -1;
else
A(i,j) = 0;
end
end
end
end

Os valores de i e j variam de 1 a 5, varrendo toda a matriz A. Se (if) i for igual a j, A(i,j)=2, ou se


(elseif) o valor absoluto de i-j for igual a 1, A(i,j)=-1, ou (else) A(i,j)=0, se nenhuma das condições
anteriores forem satisfeitas.

Vejam que estas declarações também podem conter o comando ELSE que executa outro conjunto de
comandos se o resultado do IF for falso.

É conveniente, às vezes, controlarmos a saída deu m laço de outro modo além do teste, no início ou no
fim do mesmo. O comando break permite uma saída antecipada de um for ou while. Um comando
break faz com que o laço mais interno seja terminado imediatamente.

Exemplos;

1-Um trabalhador é pago de acordo com sua jornada semanal de trabalho de 40h, ,mais 50% sobre as
horas extras trabalhadas. Escrever uma rotina que calcule o salário deste trabalhador. O programa deve
solicitar ao usuário a quantidade de horas trabalhadas e o valor pago por hora. No fim o programa deve
retornar o salário final.

-33 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

2- Construa um laço for-end em uma rotina para determinar a soma dos n primeiros termos da série:
n
(−1) k k

k =1 2k . Execute a rotina para n=4 e n=20

3) Um aposentado depositou R$300.000,00 em uma caderneta de poupança que para taxa anual de 5%.
Ele planeja sacar o dinheiro da conta uma vez ao ano, começandocom um saque de R$25,000,00 no
primeiro ano e incrementando a quantia anual de acordo com a inflação. Caso a inflação seja fixa em
2%, Obtenha os valores a serem sacados anualmente pelo aposentado e quanto tempo demorará para o
dinheiro acabar.

4)Determine o número de números inteiros consecutivos que somados obteremos um valor igual ou
superior a 210.

-34 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

5 - Simulink
5.1 O que é Simulink?

Simulink é um pacote de software para modelar, simular, e analisar sistemas dinâmicos. Suporta os
sistemas lineares e não-lineares, modela sistemas contínuos e discretos, ou um híbrido dos dois.

Para modelar, Simulink fornece uma interface gráfica (GUI) para modelagem com diagrama de blocos,
usando arraste do mouse. Simulink inclui uma biblioteca detalhada do bloco dos dissipadores, as
fontes, componentes lineares e não-lineares, e conectores. Você pode também customize e criar seus
próprios blocos.

5.2 Rodando um modelo de demonstração

Um exemplo interessante de sistema no Simulink é o modelo termodinâmico de uma casa. Para rodar
esta demonstração sigam os passos:

1- Inicie o Matlab

2 - Rode o sistema digitando thermo na janela de comando do MATLAB. Este comando inicia o
Simulink e cria a janela de modela que contém a demonstração.

-35 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

3- Duplo clique no bloco de plotagem chamado de Thermo Plots.

4- o bloco de plotagem mostra 2 gráficos chamados “labeled Indoor vs. Outdoor Temp and Heat Cost
($)” respectivamente.

5- Para começar a simulação, clique no menu SIMULATION e escolha o comando START, ou então
clique o botão Start na barra de ferramenta do Simulink.

6- Enquanto a simulação roda, a temperatura interna e externa aparece mo gráfico de temperatura e o


preço cumulativo do sistema de aquecimento aparece no gráfico de Custo de temperatura (Heat Cost
($) plot)

7- Para parar a simulação, escolha o comando stop no menu do simulink.

5.3 Descrição da demonstração

O modelo usado nesta demonstração é bem simples. O termostato é ajustado a 70 graus de Fahrenheit
e afetado pela temperatura exterior, que varia aplicando uma onda do seno com amplitude de 15 graus
a uma temperatura baixa de 50 graus. Isto simula flutuações diárias da temperatura.

5.4 - Fazendo um modelo simples no Simulink

Este exemplo mostra-lhe como construir um modelo bem simples. O modelo multiplica a onda do seno
por 2 e indica o resultado junto com a onda do seno. O diagrama de blocos é como este:

-36 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Para criar o modelo, primeiro entre no Simulink dentro da janela de comando MATLAB. Assim, a
Biblioteca de blocos do Simulink aparece.

Para criar um novo modelo novo no Windows, selecione a tecla NEW na biblioteca de blocos. O
Simulink abrirá uma janela nova em branco.

-37 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Para criar este modelo, você precisará de copiar para dentro do seu modelo os seguintes blocos das
bibliotecas:

• Sources library (the Sine Wave block)


• Sinks library (the Scope block)
• Math operations library (the Gain block)
• Signal routing library (the Mux block)

Como exemplo apresentamos a busca do bloco seno.

Entra-se em simulink-Sources-Sine Wave

Arrasta-se o bloco da fonte senoidal para dentro da nova area.

-38 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Faz-se o mesmo para todos os outros blocos. Temos agora todos os componentes na nossa área de
trabalho.

O próximo passo é conectar todos os blocos. Colocando-se o mouse sobre a saída da fonte senoidal e
segurando o botão arrasta-se o fio até o multiplexador.

-39 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Agora termine de conectar os blocos.

Após montarmos o circuito devemos mexer nos parâmetros da simulação. Vá em Simulation>>


Configuration Parameters

Mexeremos somente no tempo de simulação: escolha STOP TIME com o valor de 20 segundos

Feche a caixa de dialogo Configuration Parameters clicando no botão OK

Escolha Start no menu Simulation e olhe a curva que sairá no bloco de gráfico

-40 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Exercicio: 1)Dadas 3 fontes senoidais equilibradas de amplitude 1 e defasados de 120°. Desenhar


as 3 curvas e a soma delas.

2) Dada a função abaixo obtenha a sua derivada e sua integral. Obs: Usar os blocos
integrator e derivative

1
Sine Wave Constant

5.5 – Comunicação entre Matlab e Simulink

Como vimos nos capitulos anteriores, o Matlab é o motor matemático que executa cálculos
necessários para a simulação demodelos do Simulink.

Este capítulo apresenta os conceitos básicos e principaios mecanismos de interação entre estes dois
ambientes.

Para levar dados do simulink para o matlab usamos o bloco [To Workspace]
Para levar dados do matlab para o simulink usamos o bloco [From Workspace]

Há também a forma de enviar dados do simulink para arquivos *.mat [From File] ou de arquivo *.mat
para o simulink [To File]

untitled.mat untitled.mat

From File To File

simin simout

From To Workspace
Workspace

Exercicio:

-41 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

1)Monte o circuito abaixo e faça o gráfico no matlab

Sine Wave Scope

simout

To Workspace

2) incluir a variável A no matlab e depois obter o resultado abaixo:

Aceleração
A
Aceleração
Constant 1 Velocidade
s Velocidade
Integrator 1
s Espaço
Integrator1 Scope

5.6 – Funções no SIMULINK

Existe 3 tipos de blocos de funções no Simulink:

-[Fcn]
-[MATLAB Fcn]
-[Embedded MATLAB Fcn]

O bloco [Fcn] executa uma expressão genérica do Matlab tendo com variável o sinal u, de entrada no
bloco.
Por Exemplo: sin(u)*exp(u)

sin(u)*exp(u)

Ramp Fcn Scope

O bloco [Matlab Fcn] executa funções do matalb, incluisve funções criadas pelo usuario.

MATLAB
Function
Ramp MATLAB Fcn Scope

exemplo: Crie uma função com o conteudo abaixo e utilize-a no sistema acima:

% Funcao chamada pelo bloco [MATLAB Function]

-42 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

%
% u: sinal de entrada
% y: sinal de saída
%
% y = u , para u entre [0,2[
% y = -u+4 , para u entre [2,4[
% y = u-4 , para u >= 4
%
function y = Tutorial_Funcao(u)
if u < 2
y = u;
elseif u < 4
y = -u+4;
else
y = u-4;
end

O bloco [Embedded Matlab Fcn] faz a mesma coisa que o bloco [Matlab Fcn] , porém ele abre uma
janela para o usuário colocar o arquivo da função dentro.

5.6 – Subsistemas e Máscaras

O Simulink permite agrupar vários blocos em um único bloco denominado subsistema ( subsystem)

-43 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

6 - Sistema de Potência
O Power System Blockset (PSB) permite você construir e similar circuitos elétricos contendo
elementos lineares e não lineares. Durante as próximas aulas, você será capaz de construir, similar e
analisar o circuito da figura abaixo.

Nesta sessão você vai:

• Explorar as bibliotecas “powerlib”do PSB


• Aprender a construir um circuito simples com a biblioteca “powerlib”
• Interligar blocos do Simulink com o seu circuito.

O primeiro trabalho que desenvolveremos será montagem de um circuito elétrico.

22Ω 15Ω

R1 R3
10Ω R2

20V E1 15V
10V E2
E3

R4 12Ω

Figura 6.1 – Circuito Elétrico

Devemos obter as correntes e tensões em cada resistor do circuito.

a)Primeiro devemos resolver por maxwell este circuito.

b)Depois vamos resolver usando o power system blockset

6.1 - Construindo um circuito elétrico com a biblioteca Powerlib

Abra a biblioteca PSB digitando o seguinte comando no pronpt do matlab:

powerlib

Este comando abre a janela do Simulink mostrando inúmeros blocos diferentes.

-44 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Estas bibliotecas devem ser abertas para copiarmos os blocos necessários para a utilização em nosso
circuito. Cada componente é representado por ícones que podem ter uma ou mais entradas e saídas
correspondendo ao diferentes terminais do componente.

Montando o sistema:

1- No menu File da janela powerlib, abra uma nova janela na qual irá conter seu primeiro circuito
e salve-o como: sep_seunome.
2- Abra a biblioteca de fontes elétricas (DC Voltage Source) e copie o bloco de tensão DC para
dentro da janela sep_seunome

Abra a caixa de diálogo fonte de tensão DC com um duplo clique e entre com a amplitude, de acordo
com os valores mostrados na figura 6-1.

Duplique esta fonte pelo numero de fontes necessários ao circuito. E nomei as fontes segundo a figura

Cole o bloco RLC series Branch, que pode ser encontrado na biblioteca de elementos. Especifique R
de acordo com a figura a seguir. Quando a caixa de diálogo é fechada, você irá perceber que os
componentes L e C desapareceram e somente R está visível.

Duplique também os resistores. E nomei os resistores segundo a figura.

Copie também o bloco de terra.

Abaixo apresentamos como deve estar nosso diagrama de blocos

-45 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

22 ohm 15 ohm

15V

10 ohm
20V

10V

12 ohm

Precisamos agora de medidores (voltímetros ou amperímetros) para medirmos os valores de tensão e


corrente em alguns pontos do circuito.

Devemos colocar um voltímetro para medir a tensão nas resistências R1, R2,R3 e R4. Este bloco pode
ser encontrado na biblioteca de medições (measurements library). Copie-o e duplique-o. Conecte sua
entrada em cada lado dos resistores.

Para observar a tensão em cada um deles, necessitamos de usar um sistema de plotagem. Podemos usar
os dispositivos disponíveis na biblioteca de saída do Simulink ( Sinks library).

Abra o sinks library e copie o bloco de scope para a sua janela. Se o scope for conectado diretamente a
saída do voltímetro, ele irá apresentar a saída em volts.

6.3 Simulando o circuito

Agora você pode começar a simulação clicando no botão start.

O que encontramos?

Exercício:

1) No o circuito abaixo: Dado: e(t) 100.sen(40t+pi/6)

fonte C=2.5uF

-46 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

a) plote i(t) e e(t)


b) obtenha a potência ativa e a potência reativa ( existe um bloco que calcula P e Q tendo entradas
U e I.)

Obs: Para que o modelo rode é necessário colocar uma resistência adicional bem pequena em série
com o capacitor ( R=1e-10 ohms)

2) Corrigir o f.p. de um motor de 2HP com tensão de 127V, fator de potência 0.8 atrasado para fator
0.92

Obs: Calcular na mão o valor do capacitor e montar os dois circuitos ( com e sem o capacitor) Usar o
bloco “FCN” para pegar P e Q e calcular o F.p.

3) Montar os 4 circuitos básicos de eletrônica de potência: retificador Monofásico de meia onda, retif.
monofásico de onda completa, retif. trifásico de onda completa sem filtro e retif. trifásico de onda
completa com filtro.

Dados: tensão da fonte: 100V, freqüência 1Hz, R=1Kohm , capacitor filtro 10mF, Rsnubber=500kohm,
Max step size=10e-5 e simular 2 segundos.

-47 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

7 - Eletrônica de Potência
Nesta sessão você vai aprender:

• Como usar componentes de eletrônica de potência.

7.1 - Exercício:

Considere o circuito dado na figura abaixo. Ele representa um retificador trifásico senoidal

Three-phase diode rectifier


+
v
-
Vd

i
+
-
Id
L 200 mH

<Diode current> Mux


I diodes 2 & 3
<Diode current>

<Diode v oltage>
m

m
k

Diode1 Diode2 Diode3 Scope


a

L1 L2 L3 Load
10 Ohms

v1 v2 v3

Uma carga de 10 ohm é alimentada por um retificador trifásico que possui um reator (5mH, 120V
rms).
A corrente do retificador é filtrada por uma indutância de 200mH.
Os diodos são conectados em paralelo com os snubber (1000 ohms-0.1uF)
A medição das saidas dos Diodos 2 e 3 é usado para observar a tensão do diodo e corrente do diodo.
Clique no menu de parâmetros de simulação e escolha passo variável e algoritmo ode23tb com
parâmetros default
Comece a simulação e observe as formas de onda no bloco de scope. Após um período de transitório a
corrente Id estabiliza em 12,7A.
Apresente as curvas encontradas usando o scope.

-48 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

8 – Circuitos Trifásicos

Obter as correntes de fase e de neutro de um circuito trifásico com fonte em Y e carga em Y com
neutro conectado.

Z = 10∠ − 30
VBA = 208∠0
Dados:
VCB = 208∠120
V AC = 208∠240

Calcule:

2 ohm -j2 ohm 5 angulo 30

AC

10 angulo 0
AC

j5 ohm 10 ohm
5 ohm

2 ohm -j2 ohm

10 ohm

a) Fazer o sistema de equações e obter as 3 correntes de malha (usar A\B)

b) montar no simulink e comparar resultados

-49 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Outro exercicio:

Three-Phase Two-Level PWM Voltage Source Converters

+
v
-
g
Three-Phase Two-Level + Vab-inv1
Single Bridge A A a
Vdc = 400 V
B B b
Vab fundamental inverter: -
C C c
= m/2**Vdc*sqrt(3) Volts peak + Scope1
Universal Bridge 208V /208V 1kVA v
= 0.85*0.866*400 -
3 arms Transformer
= 294 V Vab_load1
Pulses

C
A
B
1 kW
Discrete
0.5 kvar
PWM Generator
@ 208V
6 pulses

Construindo e simulando o sistema:

1. Abrir uma janela nova e salva-la com um nome.


2. Abra a biblioteca de eletrônica de potência e copie o bloco da ponte universal em seu modelo .
3. Abra o menu universal da ponte e ajuste seus parâmetros como segue:

Power Electronic device =IGBT/Diodes; Port configuration= ABC as output terminals;


Snubber Rs=10000 ohms, Cs=inf; Ron=1e-4 W; Tail: Tf=1e-6s; Tt=2e-6 s).

Observe que o circuito de snubber é parte integrante de diálogo da ponte universal.

4. Abra a biblioteca de transformadores e coloque os parâmetros indicados.


5. Coloque um three phase RLC load e complete com os parâmetros da figura.

Busque o Discrete PWM generator e assuma os seguintes parametros: Modulation index m = 0.85;
Frequency of output voltage = 60 Hz; Phase of output voltage = 0 degrees; carrier
frequency Fs = 1080 Hz; Time step =10e-6 s

Você está agora pronto para começar a simular o motor. Selecione o algoritmo da integração em passo
fixo. Ajuste a tolerância relativa a 1e-4, a tolerância absoluta e o tamanho de etapa máximo em auto, e o
tempo de parada em 0.1 s.

-50 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

9 - Simulando um acionamento.
Nesta sessão você vai:

• Usar máquinas elétricas e eletrônica de potência para simular um simples acionamento.


• Aprender a usar o bloco de ponte universal.
• Aprender a usar o bloco multímetro.

O controle variável da velocidade de máquinas elétricas da C. A. emprega chaves eletrônicos tais como
IGBTs, mOSFETs e GTOs. As máquinas assíncronas alimentadas por inversores da modulação de largura
de pulso (PWM) estão agora substituindo gradualmente os motores CC e as pontes de tiristor. Com o
PWM associado com as técnicas modernas do controle tais como o campo orientado controle ou controle
direto de torque, é possível agora obter a mesma flexibilidade no controle da velocidade e de torque do
que é obtido com máquinas CC.

Nesta sessão você construirá um acionamento simples da C.C. de malha aberta que controla uma máquina
assíncrona.

O circuito do sistema de potência que deve ser simulado é mostrado abaixo. Usa-se blocos das bibliotecas
de maquinas e de eletrônica de potência.

A biblioteca das máquinas contem três modelos das máquinas trifásicas mais usadas: máquinas síncronas,
assíncronas ou de indução e a síncrona de ima permanente. Cada máquina pode ser usada na modalidade
do gerador ou do motor. Combinado com os elementos lineares e não-lineares tais como transformadores,
linhas, cargas, disjuntores, etc., podem ser usados para simular transitórios eletromecânicos em uma rede
elétrica. Podem também ser combinados com os dispositivos eletrônicos do poder para simular
acionamentos.

A biblioteca de eletrônica de potência contém blocos reservando para simular diodos, tiristores, GTOs,
MOSFETs, e IGBTs. Você poderia interconectar diversos blocos junto para construir uma ponte trifásica.
Para o exemplo, uma ponte inversora de IGBT requereria seis IGBTs e 6 diodos em antiparalelo. A fim
facilitar a execução das pontes, o bloco universal da ponte executa automaticamente estas interconexões
para você.

-51 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Circuito 5: Controle PWM de um motor de Indução

9.1 -Construindo e simulando um acionamento:

4. Abrir uma janela nova e salva-la como circuit5.


5. Abra a biblioteca de eletrônica de potência e copie o bloco da ponte universal em seu modelo
circuit5.
6. Abra o menu universal da ponte e ajuste seus parâmetros como segue:

Power Electronic device =IGBT/Diodes; Port configuration= ABC as output terminals;


Snubber Rs=1e5 W Cs=inf; Ron=1e-3 W; Tail: Tf=1e-6s; Tt=1e-6 s).

Observe que o circuito de snubber é parte integrante de diálogo da ponte universal.

6. Abra a biblioteca das máquinas. Copie o bloco da máquina assíncrona com unidade em SI, assim
como o bloco de Demux de medida de máquinas em seu modelo circuit5.
7. Abra o menu da máquina assíncrona e olhe seus parâmetros. Os parâmetros são ajustados para 3
HP, 220 V, 60 hertz, dois pares de pólos. Sua velocidade nominal é consequentemente ligeiramente
inferior a velocidade síncrona de 1800 RPM ou w = 188.5 rad/s.
8. Observe que os três terminais a, b e c do rotor estão acessíveis. Durante a operação normal do
motor, estes terminais devem ser curto circuitados juntos. Abra a biblioteca dos conectores. Copie o
barramento vertical com duas entradas e uma saída em seu modelo circuit5.
9. Abra o menu da barramento e mude o número das entradas para três e o número de saídas para
zero. Conecte suas três entradas aos três terminais do rotor como mostrado em figura 1-13.
10. Abra o menu do bloco de Demux de medida das máquinas. Quando este bloco é conectado na
saída de medida do motor assíncrono, é permitido que você tenha sinais internos específicos do motor
assíncrono. Deselecione todos os sinais exceto os seguintes três sinais: : is_abc (três correntes do estator),
wm (velocidade do rotor) e Te (torque eletromagnético).

-52 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

11. Você executará agora a característica torque-velocidade carga do motor. Vamos supor uma
característica quadrática da torque-velocidade (tipo carga do ventilador ou da bomba). O torque T é então
proporcional ao quadrado da velocidade:

O torque nominal deste motor é:

Portanto, a constante K deve ser:

Abra a biblioteca funções & tabelas do Simulink e copie o bloco de Fcn em seu modelo circuit5. Abra o
menu do bloco e incorpore a expressão do torque como a função da velocidade:

3.34e-4*u^2

12. Conecte a entrada do bloco Fcn de Simulink à saída da velocidade wm que sai do bloco Demux da
máquina e a sua saída à entrada do torque do motor nomeado de Tm.
13. Abra a biblioteca de medição e copie um bloco da medida da tensão em seu modelo circuit5. Mude
o nome de bloco para Vab.
14. Usando os blocos de terra da biblioteca de conectores, termine de conectar os elementos de
potência e as interconexões do sensor da tensão como mostrado na figura.
15. A fim controlar a ponte inversora, você necessita de um gerador de pulso. Tal gerador está
disponível na biblioteca extras do powerlib. Abra a biblioteca dos blocos de Extras/Control e copie o
bloco “ Discrete 3-Phase PWM Pulse Generator” em seu modelo circuit5. Conecte sua saída dos pulsos à
entrada dos pulsos do bloco ponte universal.
16. Abra o menu Discrete 3-Phase PWM Pulse Generator e ajuste os parâmetros como segue:

Modulation index m = 0.90; Frequency of output voltage = 60 Hz; Phase of output


voltage = 0 degrees; Switching frequency Fs = 1080 Hz; Time step =10e-6 s

17. Finalmente, adicione scopes a seu modelo. Copie um bloco de scope em seu circuito. Este scope
será usado para indicar a tensão instantânea do motor, correntes, velocidade e torque
18. nas propriedades do scope, ajuste os seguintes parâmetros:

Number of axes=4; Time range =0.05 s; Tick labels: bottom axis only.

19. Conecte as quatro entradas conforme a figura

-53 -
IFSUDESTE – Instituto Federal Educação, Ciência e Tecnologia do Sudeste Minas Gerais – Juiz de Fora
Programação Aplicada a Engenharia

Você está agora pronto para começar a simular o motor. Selecione o algoritmo da integração de ode23tb.
Ajuste a tolerância relativa a 1e-4, a tolerância absoluta e o tamanho de etapa máximo em auto, e o tempo
de parada em 1 s.

Acionamento PWM - Simulation Results for Motor Starting at Full Voltage

-54 -