CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELTRICA
PROGRAMA DE EDUCAO TUTORIAL
Apostila de
Fortaleza CE
Maio / 2014
Page 2 of 132
1.
PREFCIO .......................................................................................................................................... 6
2.
APRESENTAO .............................................................................................................................. 7
2.1.
3.
FORMATAO.................................................................................................................................. 9
4.
MATRIZES ....................................................................................................................................... 10
5.
6.
7.
8.
4.1.
Declarao ................................................................................................................................ 10
4.2.
Soma ......................................................................................................................................... 10
4.3.
Multiplicao ............................................................................................................................ 11
4.4.
Matrizes pr-Definidas.............................................................................................................. 12
4.5.
4.6.
VETORES ......................................................................................................................................... 19
5.1.
Declarao ................................................................................................................................ 19
5.2.
Operaes.................................................................................................................................. 20
5.3.
M-FILE .............................................................................................................................................. 25
6.1.
Definio ................................................................................................................................... 25
6.2.
Organizao .............................................................................................................................. 26
6.3.
7.2.
7.3.
7.4.
7.5.
GRFICOS ........................................................................................................................................ 38
8.1.
8.2.
Page 3 of 132
Configurao ............................................................................................................................. 47
MATEMTICA SIMBLICA.......................................................................................................... 58
10.2.
Polinmios ................................................................................................................................ 60
10.3.
Limites ...................................................................................................................................... 64
11.2.
Diferenciao ............................................................................................................................ 64
11.3.
Integrao.................................................................................................................................. 65
11.4.
11.5.
11.6.
11.7.
11.8.
Somatrio .................................................................................................................................. 70
12.2.
13.2.
13.3.
Convoluo ............................................................................................................................... 80
13.4.
13.5.
13.6.
15.2.
15.3.
Page 4 of 132
16.2.
16.3.
16.4.
Page 5 of 132
Esta apostila foi desenvolvida por alunos do Programa de Educao Tutorial (PET) do curso de
Engenharia Eltrica da Universidade Federal do Cear (UFC) para a realizao do Curso de MATLAB.
Com o intuito de promover uma introduo ao MATLAB que viesse a facilitar o desempenho dos
estudantes da graduao na realizao de seus trabalhos e na sua vida profissional, o PET elaborou este
Curso de MATLAB que est atualmente na dcima quinta edio. Durante as quinze edies foram
contemplados aproximadamente 700 estudantes dos mais variados cursos de Engenharia do Centro de
Tecnologia da UFC.
Devido sua boa repercusso o Curso de MATLAB foi premiado no XVII Encontro de Iniciao
Docncia nos Encontros Universitrios de 2008.
Page 6 of 132
O MATLAB (MATrix LABoratory) uma linguagem de alto desempenho para computao tcnica.
Integra computao, visualizao e programao em um ambiente de fcil uso onde problemas e solues
so expressos em linguagem matemtica. Usos tpicos:
Matemtica e computao;
Desenvolvimento de algoritmos;
Aquisio de dados;
Outra forma pela tecla de atalho F1. Uma terceira forma pelo boto da barra de acesso rpido,
posicionado logo acima da barra de Menu, de acordo com a Fig. 2.
Page 7 of 132
Dando continuidade, quando se deseja obter informaes sobre uma dada funo, possvel
consultar diretamente no HELP ou pelo COMMAND WINDOW. Para isso, basta digitar help e em seguida
a funo requerida, de acordo com o exemplo abaixo:
>> help dirac
dirac Delta function.
dirac(X) is zero for all X, except X == 0 where it is
infinite.
dirac(X) is not a function in the strict sense, but rather a
distribution with int(dirac(x-a)*f(x),-inf,inf) = f(a) and
diff(heaviside(x),x) = dirac(x).
See also heaviside.
Veja que as informaes sobre a funo dirac aparecem no prprio COMMAND WINDOW. Se for
necessrio consultar a pgina do HELP, basta utilizar o comando doc e em seguida o nome da funo. Por
exemplo:
>> doc dirac
Depois de efetuado este comando, ir aparecer a janela do HELP com o seguinte, Fig. 3.
Page 8 of 132
Comando MATLAB
Varivel
Descrio
Format long
3.141592653589793
Com 16 dgitos
Format short
3.1416
Com 5 dgitos
Format short e
3.1416e+000
Format long e
3.141592653589793e+000
Format +
Format rat
355/113
Aproximao racional
Format hex
400921fb54442d18
Formato hexadecimal
Page 9 of 132
4.1. Declarao
A declarao de matrizes feita da seguinte maneira:
>> a = [1:10]
%cria o vetor linha [1 2 3 4 5 6 7 8 9 10]
>> b = [0:0.5:3]
%cria o vetor [0 0.5 1 1.5 2 2.5 3]
>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
%cria a matriz A no seguinte formato
%A =
%
16
3
2
13
%
5
10
11
8
%
9
6
7
12
%
4
15
14
1
>> A(1,2) %Elemento de linha 1 e coluna 2
>> A(:,3) %Elementos da coluna 3
>> A(1,:) %Elementos da linha 1
O MATLAB tambm aceita a concatenao de matrizes, por exemplo:
>>
>>
>>
%c
%
%
a = [4 1; 3 4];
b = [2 3; 4 5];
c = [a b]
=
4
1
2
3
4
4
3
5
Obs.: bom lembrar que o MATLAB tem como primeiro ndice do vetor o nmero 1, diferente de
outras linguagens que usam o primeiro ndice como 0.
4.2. Soma
A soma de todos os elementos de uma matriz com um nmero feita da seguinte maneira:
>> c = [4 1 2 3; 3 4 4 5];
>> c+1
%ans =
%
5
2
3
4
%
4
5
5
6
A soma de matrizes feita da maneira tradicional:
>> d = [ 1 2 7 8; 4 7 5 8];
>> e = [ 5 -4 7 0; 3 -1 6 -4];
>> d+e
%ans =
%
6
-2
14
8
%
7
6
11
4
Page 10 of 132
a = [1 4 2; 7 8 5; 9 5 4];
b = [4 2 -5; 0 1 3; 8 -2 1];
c = a*b
=
20
2
9
68
12
-6
68
15
-26
Obs.: Se for desejado realizar outra operao matemtica (exceto a soma e a subtrao) entre os
elementos com mesmo ndice das matrizes deve-se colocar um ponto antes do operador. Observe os
exemplos abaixo:
>> a = [1 4 2; 7 8 5; 9 5 4];
>> b = [4 2 -5; 0 1 3; 8 -2 1];
>> c = a.*b
%c =
%
4
8
-10
%
0
8
15
%
72
-10
4
>> b./a
%ans =
%
4.0000
0.5000
-2.5000
%
0
0.1250
0.6000
%
0.8889
-0.4000
0.2500
>> a.^2
%ans =
%
1
16
4
%
49
64
25
%
81
25
16
Exerccio 1 - Declare as matrizes A, B e C abaixo:
A 1 2 3 4 5 6 7
B 3 6 9 12 15 18 21
10 15 10 5
0
0 5
C
1 2 3 4 5 6 7
Atravs das matrizes acima, determine as matrizes a seguir utilizando os comandos j mencionados.
D 4 5 6 7
E 7 6 5 4
4 5 6 7
F
7 6 5 4
4
7
G
6
5
12
0
J
6
15
1
H
18
7
4
21 K 0
1
5
I
6
5
10
0 24 99
L
2 3
2 5 10
25 100
4 9
24 99
0
M
2 5 10
Page 11 of 132
ones
zeros
eye
0
1
vander
1
1
1
1
rand
0.6068
0.4860
(apstrofo)
Page 13 of 132
trace
Definio: Retorna um vetor com a soma dos elementos da diagonal principal de uma matriz.
Sintaxe:
trace(A) Retorna a soma dos elementos da diagonal principal da matriz A.
>> A = [1 4; 2 1];
>> trace(A)
%ans =
%
2
inv
eig
0.0000 + 0.4472i
-0.8944 + 0.0000i
0.0000 + 0.0000i
1.0000 - 2.0000i
Page 14 of 132
size
A = [1 1; 2 3];
[m,n]=size(A)
=
2
=
2
find
Definio: Procura os elementos em uma matriz de tal modo a respeitar a lgica fornecida, retornando os
ndices que descrevem estes elementos.
Sintaxe:
ind = find(X) Retorna os ndices de elementos no-nulos na matriz X.
[row,col] = find(X, ...) Retorna, em row, uma matriz coluna com os ndices das linhas dos elementos
da matriz X e, em col, a matriz coluna contendo os ndices correspondentes s colunas dos elementos da
matriz X.
[row,col,v] = find(X, ...) Retorna, em row, uma matriz coluna com os ndices das linhas dos elementos
da matriz X , em col, uma matriz coluna contendo os ndices que descrevem as colunas dos elementos da
matriz X e, em v, uma matriz contendo os elementos de X.
>> A=[1 0; 0 3];
>> find(A)
%ans =
%
1
%
4
>> X = [3 2 0; -5 0 7; 0 0 1];
>> [r,c,v] = find(X>2);
>> [r c]
%ans =
%
1
1
%
2
3
Veja no ultimo caso acima que r e c retornam os ndices das linhas e das colunas correspondentes aos
elementos que respeitam a expresso oferecida.
Obviamente, os elementos a11 e a23 so os nicos maiores que 2.
Page 15 of 132
sort
Definio: Retorna o vetor dado ou elementos de uma matriz em ordem crescente ou decrescente.
Sintaxe:
sort(A,dim) Retorna os elementos das colunas (dim = 1) ou da linha (dim = 2) da matriz A em ordem
crescente.
sort(A,mode) Retorna os elementos das colunas da matriz A em ordem crescente (mode = ascend) ou
em ordem decrescente (mode = descend).
>> A=[1 1; 0 3];
>> sort(A)
%ans =
%
0
1
%
1
3
fliplr
flipud
Definio: Espelha as linhas de uma matriz.
Sintaxe:
flipud(A) Espelha as linhas da matriz A.
>> A = [1 2;3 4];
>> fliplr(A)
%ans =
%
3
4
%
1
2
Exerccio 3 - Crie um vetor A de 50 elementos aleatrios e em seguida crie a partir deste, outro vetor B
obedecendo aos seguintes critrios:
a.
b.
Page 16 of 132
5 8 6
A 9 2 10
7 6 1
7
B 1
6
a.
E = det ( A .I ) com = 6
b.
F = A-1 . B
c.
A\B
d.
A.F
e.
BT . C
f.
D.BA/A
D 4 1 0
>>
>>
%G
%
%
>>
%v
%
%
i = [10/1; 2];
G=[1/1+1/5+1/2 -1/2; -1/2 1/2+1/10]
=
1.7000
-0.5000
-0.5000
0.6000
v = inv(G)*i
=
9.0909
10.9091
Page 17 of 132
Page 18 of 132
5.1. Declarao
possvel trabalhar com vetores no MATLAB, cuja representao feita baseando-se numa matriz
linha. Por exemplo, para obter o vetor (1,3,8), basta iniciarmos com:
>> R = [1 3 8]
%G =
%
1
3
Portanto, todas as operaes se tornam possveis a partir do uso de funes apropriadas. importante
salientar que certas funes exigem a declarao de vetores por matriz coluna, entretanto, nada que uma
consulta no help para ajudar.
Uma operao bsica com vetores na determinao do nmero de elementos, a partir da funo
length, assim como no clculo do seu mdulo, usando a funo norm, ambas definidas abaixo. Logo
depois, sero dadas algumas funes que trabalham com vetores.
length
Definio: Retorna o nmero de elementos que compem o vetor.
Sintaxe:
length(A) Calcula o numero de termos do vetor A
>> A = [8 9 5 7];
>> length(A)
%ans =
%
4
norm
Definio: Retorna o mdulo do vetor.
Sintaxe:
norm(A) Calcula o mdulo do vetor A.
>> x = [0 5 1 7];
>> sqrt(0+5^2+1^2+7^2) %Forma Euclidiana
%ans =
%
8.6603
>> norm(x) %Usando norm
%ans =
%
8.6603
Page 19 of 132
cross
Definio: Calcula o produto vetorial entre A e B.
Sintaxe:
C = cross(A,B) Retorna, em C, o produto vetorial dos vetores tridimensionais A e B.
De modo anlogo, define-se a funo dot como a responsvel pelo produto escalar de dois vetores
dados, conforme definio a seguir.
dot
Definio: Determina o produto escalar entre dois vetores.
Sintaxe:
C = dot(A,B) Retorna, em C, o produto escalar dos vetores n-dimensionais A e B.
>>
>>
>>
%c
%
>>
%d
%
a = [1 7 3];
b = [5 8 6];
c = cross(a,b)
=
18
9
-27
d = dot(a,b)
=
79
Alm disso, qualquer outra operao possvel, como soma e subtrao, mas se deve atentar-se ao
fato de que ambos os vetores devem possuir a mesma dimenso.
Dando continuidade, sero definidas algumas funes que podero ser teis quando se trabalha com
vetores ou at mesmo com matrizes.
min
Definio: Retorna os valores mnimos de um vetor ou o das colunas de uma matriz.
Sintaxe:
min(A) Retorna em um vetor linha os menores valores de cada linha da matriz A.
min(A,B) Retorna uma matriz com os menores valores de cada posio correspondente de ambas as
matrizes
Page 20 of 132
A=[0 3; 2 4];
[a,b]=min(A)
=
0
3
=
1
1
max
Definio: Retorna os valores mximos de um vetor ou o das colunas de uma matriz.
Sintaxe:
max(A) Retorna em um vetor linha os maiores valores de cada linha da matriz A.
max(A,B) Retorna uma matriz com os maiores valores de cada posio correspondente de ambas as
matrizes.
[a,b] = max(A) Retorna, em a, os maiores valores de cada coluna e, em b, a posio dos mesmos nas
suas respectivas colunas.
>>
>>
%a
%
%b
%
A=[0 3; 2 4];
[a,b]=min(A)
=
2
4
=
2
2
sum
Definio: Calcula o somatrio dos elementos de um vetor ou o somatrio das colunas de uma matriz.
Sintaxe:
sum(A) Retorna a soma dos elementos de um vetor ou a soma das colunas de uma matriz.
>> A=[0 3; 2 4];
>> sum(A)
%ans =
%
2
7
prod
Definio: Calcula o produtrio dos elementos de um vetor ou o produtrio das colunas de uma matriz.
Sintaxe:
prod(A) Retorna o produto dos elementos do vetor A ou o produto das colunas da matriz A.
Page 21 of 132
45
6 2
b.
c.
d.
cart2pol
Page 22 of 132
pol2cart
cart2sph
sph2cart
Page 23 of 132
[x,y,z] = meshgrid(-0.5:.012:0.5);
[teta,fi,r] = cart2sph(x,y,z);
v = (1e-9*0.2*cos(teta))./(4.*pi.*8.85e-12.*r.^2);
contourslice(x,y,z,v,[ -0.5:0.5],[-0.5:0.5],[-0.5:0.5]);
colormap hsv
grid on
Page 24 of 132
6.1. Definio
O M-File uma ferramenta do MATLAB que auxilia na criao de funes e scripts. Para criar um
novo M-File deve-se entrar na aba Home no menu New e escolher a opo script, Fig. 9, ou clicar em
New Script na aba Home:
Page 25 of 132
A outra opo usar o atalho F5. As conseqncias da execuo so as mesmas que seriam
observadas se os comandos tivessem sido executados na Command Window: as variveis declaradas
estaro todas disponveis no Workspace e os resultados de cada operao estaro presentes na tela.
O M-FILE um ambiente de programao, portanto existem algumas funes, bem parecidas com as
da linguagem C, por exemplo, que podem ser utilizadas.
6.2. Organizao
Para uma melhor organizao podemos fazer comentrios utilizando o smbolo %, ou selecionando
o texto inteiro e teclando Crtl+R, ou %{ para abrir o comentrio por bloco e %} para fechar.
Podemos ainda utilizar o smbolo %% para que, no mesmo M-File, o usurio possa rodar apenas
algumas partes do programa, Fig. 11. Para rodar somente a parte selecionada, tecle Ctrl+Enter e para
rodar o programa inteiro clique em F5 ou no cone da Fig. 12.
Page 26 of 132
if
Definio: Operao condicional. Executa as funes contidas no comando. Pode ser utilizado com else,
que executa caso a condio declarada for falsa, e com elseif, que executa a funo caso outra condio
posteriormente declarada for verdadeira.
Para mais de uma condio, utiliza-se para e, &&, e para ou, ||.
Sintaxe:
if <condio>
[Comandos]
elseif <condio>
Page 27 of 132
for
Definio: Comando de iterao. Permite que um conjunto de instrues seja executado at que a
condio seja satisfeita.
Sintaxe:
for <condio>
[Comandos]
end
while
Definio: Comando de iterao. Executa um bloco de instrues enquanto a condio for verdadeira.
Sintaxe:
while <condio>
[Comandos]
end
switch
Definio: Operao condicional. Testa sucessivamente o valor da expresso dada e direciona para o caso
especificado. Funciona como um bloco de ifs
Sintaxe:
switch <condio>
case caso1
[Comandos]
case {caso1, caso2, caso3, ...}
[Comandos]
Page 28 of 132
[Comandos]
end
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
a = 3;
switch a
case {2}
disp('Resposta
case {3}
disp('Resposta
case '5'
disp('Resposta
otherwise
disp('Resposta
end
um')
dois')
tres')
?')
disp
Definio: Escreve no command window um texto ou o valor de um vetor, sem escrever seu nome.
Sintaxe:
disp(x)
input
break
continue
Operadores Lgicos
Entradas
and
or
not
xor
A&B
A|B
~A
xor(A,B)
Funes em M-File
Page 30 of 132
Page 31 of 132
Funo
log(X)
Descrio
Determina o logartmo natural de X
log10(X)
log2(X)
exp(X)
Determina a exopresso de ex
sqrt(X)
gcd
lcm
factorial
nchoosek
primes
Definio: Devolve uma lista com uma quantidade desejada de nmeros primos.
Sintaxe:
p = primes(n) Devolve uma lista com n de nmeros primos.
mod
rem
perms
a = 5 +8i
=
5.0000 + 8.0000i
a = 5 + 8j
=
5.0000 + 8.0000i
H outra forma de definir um nmero complexo no MATLAB, atravs da funo complex. A sua
vantagem est na maior liberdade que se tem para alterar a parte imaginria, real, mdulo ou at mesmo a
fase do nmero, no ponto de vista computacional. A definio dessa funo descrita como:
complex
Definio: Retorna um nmero complexo a partir da sua parte real e da sua parte imaginria.
Sintaxe:
c = complex(a,b) Retorna, em c, o nmero complexo de parte real a e parte imaginria b.
Quando se deseja trabalhar com mdulo, ngulo de fase, conjugado, ou entre outros, tornam-se fceis
de serem calculados quando se utiliza a funo adequada. Na Tabela 4 sero denotadas algumas funes
que possibilitam isso.
Tabela 4 - Funes para nmeros complexos
Funo
abs(X)
Descrio
Retorna o mdulo do nmero complexo x
angle(X)
conj(X)
imag(X)
real(X)
Page 34 of 132
Funo
Descrio
cos(X)
sin(X)
tan(X)
sec(X)
csc(X)
cot(X)
Veja acima que estas funes retornam um valor correspondente a um argumento em radianos.
Quando for desejado entrar com um argumento em grau, basta utilizar o sufixo d em cada funo. Por
exemplo, o seno de 30:
>> sind(30)
%ans =
%
0.5000
Entretanto, quando deseja calcular o arco correspondente a um valor pra uma dada funo, basta
utilizar o prefixo a diante as funes. Como exemplo, determinemos o arco-tangente de 1 em radianos:
>> atan(1)
%ans =
%
0.7854
Caso queiramos saber em grau, faramos:
>> atand(1)
%ans =
%
45
Por fim, quando se deseja determinar a funo hiperblica, basta utilizar o sufixo h na funo dada.
Vejamos no comando a seguir:
>> cosh(3)
%ans =
%
10.0677
De fato, o resultado coerente, pois:
>> (exp(3)+exp(
%ans =
%
10.0677
Page 35 of 132
Prefixo
Sufixo
Descrio
Exemplo
atan
cosd
sinh
round
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro mais prximo desses
elementos. Tambm vlido para nmeros complexos.
Sintaxe:
Y = round(X) Retorna, em Y, os inteiros mais prximos dos elementos de X.
ceil
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro imediatamente maior que
os respectivos elementos.
Sintaxe:
B = ceil(A) Retorna, em B, os inteiros imediatamente maiores que os elementos de A.
floor
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro imediatamente menor
que os respectivos elementos.
Sintaxe:
B = floor(A) Retorna, em B, os inteiros imediatamente menores que os elementos de A.
Page 36 of 132
fix
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro mais prximo de tal
modo que esteja em direo ao zero.
Sintaxe:
B = fix(A) Retorna, em B, os inteiros mais prximos, em direo ao zero, dos elementos de A.
Page 37 of 132
ezplot
Definio: Plota a expresso simblica f(x) no domnio padro -2<x<2. Observe a Fig. 13.
Sintaxe:
ezplot(t) Plota a expresso f(x).
>> ezplot('sin(x)')
Page 38 of 132
plot
Definio: Plota as colunas de um vetor versus os ndices de cada elemento, se o vetor for real. Se for
complexo, plota a parte real pela parte imaginria de cada elemento. Observe a Fig. 14.
Sintaxe:
plot(X) Se X for real, plota as colunas de X pelos ndices de cada elemento.
plot(X) Se X for complexo, plota a parte real pela parte imaginria de cada elemento. equivalente a
plot(real(X),imag(X)).
plot(X,Y) Plota os elementos de X pelos de Y.
>> t = 0:pi/50:10*pi;
>> plot(t,sin(t
Page 39 of 132
line
Page 40 of 132
stem
Page 41 of 132
compass
Definio: Plota vetores de componentes cartesianas a partir da origem de um grfico polar. Observe a
Fig. 17.
Sintaxe:
compass(U,V) Plota o vetor de componentes cartesianas U e V partindo da origem do grfico polar.
>> compass(2,3)
Page 42 of 132
ezplot3
Definio: Plota uma curva espacial de trs equaes paramtricas no domnio padro 0 < t < 2. Observe
a Fig. 18.
Sintaxe:
ezplot3(x,y,z) Plota a curva paramtrica x = x(t) , y = y(t ) e z = z(t) .
>> ezplot3('cos(t)','sin(t)','t')
Page 43 of 132
plot3
Page 44 of 132
ezsurf
Definio: Plota a superfcie de um grfico de uma funo de duas variveis no domnio padro -2 < x <
2 e -2 < y < 2. Observe a Fig. 20.
Sintaxe:
ezsurf(X,Y,Z) Plota a superfcie paramtrica x = x (s, t) , y = y (s, t) e z = z (s, t) no domnio -2 < s <
2 e -2 < t < 2
>> ezsurf('1/sqrt(x^2 + y^2)')
Figura 20 - Superfcie
Page 45 of 132
meshgrid
surf
Definio: Plota a superfcie de um grfico de uma funo de duas variveis cujo domnio determinado
pelo usurio. Observe a Fig. 21.
Sintaxe:
surf(X,Y,Z) Plota a superfcie paramtrica de Z em funo de X e Y.
>> surf(X,Y,Z)
Figura 21 - Superfcie
Page 46 of 132
text
Definio: Cria objetos de texto em locais especficos do grfico. Observe a Fig. 22.
Sintaxe:
text(x,y,string) Escreve string no local (x,y). Pode-se modificar string das mais diversas formas.
>> plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))
>> text(pi,0,'\leftarrow sin(\pi)','FontSize',18)
Figura 22 - Grfico sin(x) gerado pela funo plot com texto gerado pela funo text.
Page 47 of 132
title
Figura 23 - Grfico polar gerado pela funo compass com ttulo gerado pela funo
Page 48 of 132
axis
Figura 24 - Grfico cos(t), sin(t), t gerado pela funo plot3 com eixos ajustados pela funo axis.
Page 49 of 132
grid
Figura 25 - Grfico cos(t), sin(t), t gerado pela funo plot3 com linhas de grade geradas pela funo grid.
Page 50 of 132
hold
x = -6:0.01:6;
y = sin(x);
plot(x,y)
hold on
t = -6:0.01:2;
k = exp(t);
plot(t,k)
Figura 26 - Grficos sin(x) e ex gerados pela funo plot e ezplot respectivamente e colocados na mesma janela de grfico pela
funo hold.
Page 51 of 132
legend
x=-6:0.01:6;
y=sin(x);
plot(x,y)
hold on
t=-6:0.01:2;
k=exp(t);
plot(t,k)
legend('Grfico 1: y=sen(x)','Grfico 2: y=exp(x)')
Page 52 of 132
t = 0:pi/50:10*pi;
plot3(cos(t),sin(t),t)
xlabel('x=cos(t)')
ylabel('y=sin(t)')
zlabel('z=t')
Figura 28 - Grfico cos(t), sin(t), t gerado pela funo plot3 com ttulos nos eixos coordenados.
Page 53 of 132
t = 0:pi/50:10*pi;
plot3(cos(t),sin(t),t)
xlim([-1.5 1.5])
ylim([-1.5 1.5])
zlim([-1 34])
Figura 29 - Grfico cos(t), sin(t), t gerado pela funo plot3 com eixos ajustados pelas funes xlim, ylim e zlim.
Page 54 of 132
figure
subplot
Definio: Divide a janela do grfico em uma matriz definida pelo usurio, podendo trabalhar com
qualquer um. Observe a Fig. 30.
Sintaxe:
h = subplot(m,n,p) (ou subplot(mnp)) Divide em m linhas, n colunas, plotando o grfico na posio p.
Caso tenha uma matriz retangular, a contagem inicia-se no sentido anti-horrio do grfico superior
esquerdo.
subplot(m,n,p,'replace') Se o grfico j existe, deleta o grfico especificado, substituindo por outro
grfico desejado.
>> subplot(2,1,1),ezplot('sin(x)')
>> subplot(2,1,2),ezplot('exp(x)')
Page 55 of 132
b.
c.
Page 56 of 132
Page 57 of 132
syms
sym
findsym
Page 58 of 132
subs
Page 59 of 132
10.1.
Expresses Numricas
Uma curiosidade que o MATLAB dispe de um conjunto de funes que contribuem para a
fatorao, expanso, simplificaes e entre outros. A Tabela 6 resume bem cada funo.
Tabela 6 - Funes de fatrao, expanso, simplificao entre outros
Funo
Definio
collect
expand
horner
factor
simplify
compose
finverse
f(g(x))
b.
g(f(x))
10.2.
Polinmios
Agora trataremos com os polinmios. Para definir um polinmio no MATLAB, basta entrar com
uma matriz linha, nos quais os elementos dela representam os coeficientes do maior para o menor grau.
Page 60 of 132
ou .
poly
Definio: Determina os coeficientes do polinmio a partir de suas razes. Caso a entrada seja uma
matriz, este calcula o polinmio caracterstico da matriz.
Sintaxe:
p = poly(A)
p = poly(r)
>> y = [-2 -1];
>> z = poly(y)
%z =
%
1
3
2
>> A = [1 5 3; 0 -2 9; 2 11 -1];
%Declara a matriz
>> poly(A)
%calcula o seu polinmio caracterstico
%ans =
%
1.0000
2.0000 -106.0000
-5.0000
roots
%x =
%
-2
%
-1
polyval
Definio: Determina o valor do polinmio para uma determinada entrada. Se a entrada for uma matriz, a
funo retorna o valor do polinmio para cada elemento.
Sintaxe:
y = polyval(p,X) y receber os valores do polinmio desenvolvido para cada elemento da matriz X.
Page 61 of 132
polyfit
Definio: Determina o polinmio interpolador com os pontos dados por x e y com o grau n. Os
coeficientes so retornados numa matriz linha.
Sintaxe:
p = polyfit(x,y,n)
>>
>>
>>
>>
>>
>>
>>
x=[0:0.1:2.5];
y = sqrt(x);
polinomio_interpolador = polyfit(x,y,3)
pontos_interpoladores = polyval(polinomio_interpolador,x)
plot(x,y,'color','r')
hold on
plot(x,pontos_interpoladores)
10.3.
Quando voc tiver um emaranhado de equaes, resultando em um sistema, o MATLAB poder ser
uma tima soluo. Ao utilizar a funo solve, voc ser capaz de economizar tempo e evitar resolver um
tedioso sistema braalmente. A declarao desta funo segue abaixo:
solve
Definio: Determina o valor do polinmio para uma determinada entrada. Quando a soluo
armazenada em uma varivel, o retorno dado em uma estrutura de dados.
Sintaxe:
solve(eq) Resolve a equao eq=0
solve(eq,var) Determina as solues de eq=0, em funo da varivel var.
Page 62 of 132
dsolve
= - ax .
Page 63 of 132
O MATLAB disponibiliza funes que facilitam a operao de certos clculos que so difceis para o
usurio. Por exemplo, a funo diff(), int() e limit() so algumas delas, nas quais diferenciam, integram ou
calculam o limite de uma funo de acordo com os parmetros oferecidos, respectivamente.
Vejamos essas e outras funes a seguir:
11.1.
Limites
limit
11.2.
Diferenciao
diff
Page 64 of 132
, faz-se:
>> syms x;
>> f = sqrt(log(x)+exp(x));
>> diff(f)
%ans =
%(exp(x) + 1/x)/(2*(exp(x) + log(x))^(1/2))
>> pretty(ans)
11.3.
Integrao
int
, calcule a integral:
Indefinida
>> syms x
>> y=sqrt(x^2+5);
>> f=int(y,x)
%f =
%(5*asinh((5^(1/2)*x)/5))/2 + (x*(x^2 + 5)^(1/2))/2
Definida de 2 a 5
>> g = int(y,x,2,5)
%g =
%(5*log(5^(1/2) + 6^(1/2)))/2 - (5*log(5))/4 + (5*30^(1/2))/2 - 3
Caso a visualizao de f no seja satisfatria, usa-se a funo pretty, que transforma a sada de
Page 65 of 132
11.4.
um mtodo utilizado quando a rea sob uma curva representada por trapzios entre um intervalo
[a,b] pr-definido, sendo o nmero de divises n. Em representao matemtica, tem-se:
em que xi representa o ponto no final de cada trapzio, sendo x0 = a e xn = b . No MATLAB a funo que
possibilita integrao a partir deste mtodo o trapz, definida abaixo:
trapz
11.5.
O mtodo de Simpson baseado, dado trs pontos sobre a curva da funo, na aproximao desses
pontos em uma parbola. Ento, tomados n subintervalos, onde n par, e cuja extremidade da curva
delimitada por f (a) e por f (b) , logo, a integral de uma funo denotada por:
A maioria das calculadoras programadas utiliza esta regra, que mais utilizada em termos
computacionais. No MATLAB, a funo encarregada para esse fim a quad, mostrada abaixo:
quad
Page 66 of 132
11.6.
Integrao Dupla
O MATLAB possui a funo dblquad que determina a integral dupla de uma funo, conforme
definio abaixo:
dblquad
11.7.
Integrao Tripla
Tambm possvel calcular a integral tripla de uma funo no MATLAB, utilizando neste caso a
funo triplequad, cuja definio segue abaixo:
triplequad
Page 67 of 132
11.8.
Outras funes
gradient
divergence
[x,y,z] = meshgrid(-1:0.3:1);
V = (18e-12)./(4.*pi.*8.85e-12.*sqrt(x.^2+y.^2+z.^2));
[px,py,pz] = gradient(V,0.3,0.3,0.3);
Ex = (-1).*px;
Ey = (-1).*py;
Ez = (-1).*pz;
quiver3(x,y,z,Ex,Ey,Ez)
axis([-1 1 -1 1 -1 1])
Veja que a funo quiver plota o que representaria o campo eltricodevido carga, Fig. 34.
Page 68 of 132
Page 69 of 132
12.1.
Somatrio
Uma funo muito utilizada em Sries Numricas a symsum, que encontra o somatrio simblico
de uma expresso. A sua descrio segue abaixo:
symsum
12.2.
Srie de Taylor
Considerando P(x) como sendo o polinmio de Taylor, de ordem n, em torno do ponto x0, ento P(x)
o nico polinmio de grau no mximo n que aproxima localmente f em volta de x0 de modo que o erro
E(x) tenda a zero mais rapidamente que (x-x0)n, quando x x0.
O MATLAB dispe da funo taylor , conforme pode ser visto abaixo:
taylor
, tem-se
>> syms x
>> f = 1/(5+4*cos(x))
%f =
%1/(5+4*cos(x))
>> T = taylor(f)
%T =
%1/9+2/81*x^2+5/1458*x^4+49/131220*x^6
>> pretty(T)
Exerccio 20 - Determine, pelo polinmio de Taylor de ordem 2, o valor aproximado de
Page 71 of 132
13.1.
x(t) x(t + )
|| < 1 Expanso
|| > 1 Compresso
< 0 Reflexo
0 Deslocamento
Deslocamento no tempo:
>>
>>
>>
>>
>>
>>
>>
>>
>>
Page 72 of 132
Reflexo:
>>
>>
>>
>>
>>
>>
>>
>>
Escalonamento:
>>
>>
>>
>>
>>
>>
>>
>>
>>
Page 73 of 132
13.2.
Funes Pr-definidas
Impulso
[n] = 0, n
1, n
0, t
1, t
(t) =
Page 74 of 132
Degrau
u [n] = 0, n < 0
1, n
u (t) =
0, t < 0
1, t
Page 75 of 132
>> n = -20:20;
>> y = degrau(n,-10)-2*degrau(n,-5)+degrau(n,6);
>> stem(n,y)
Page 76 of 132
y[n] =
- u[n-3]
>> n = -20:20;
>> y = ((1/2).^(n)).*degrau(n,3);
>> stem(n,y)
c.
>> n = -20:20;
>> y = cos(0.5*pi*n).*degrau(n,4);
>> stem(n,y)
Page 77 of 132
y[n] = e2sen(n)
>> n = -20:20;
>> y = exp(2*(sin(n)));
>> stem(n,y)
e.
y[n] = sen
>> x = -20:1:20;
>> y = sinc(x/2);
>> stem(x,y)
Page 78 of 132
dirac
Definio: Obtm a funo delta de dirac, ou seja, a funo impulso no intervalo determinado por x.
Sintaxe:
dirac(x)
>> x = -10:10;
>> y = dirac(x-5); %Impulso no instante 5
>> stem(x,y)
heaviside
Page 79 of 132
Exemplo 9 - Sabe-se que a funo impulso a derivada da funo degrau. Determina este fato utilizando
o MATLAB.
>> syms x
>> diff(heaviside(x),x)
%ans =
%dirac(x)
Exerccio 22 - Verifique a integral de sen(x). (x-5)
13.3.
Convoluo
A convoluo uma ferramenta matemtica que expressa a sada de um sistema de tempo, seja este
discreto ou contnuo, em funo de uma entrada pr-definida e da resposta ao impulso do sistema.
O MATLAB possui uma funo chamada de conv que realiza a convoluo de sinais de durao
finita. Por exemplo, sejam dois vetores x e h representando sinais. O comando y = conv(x, h) gera um
vetor y que denota a convoluo dos sinais x e y.
Page 80 of 132
conv
h = [1 2 1];
x = [2 3 -2];
y = conv(x,h)
=
2
7
6
-1
-2
a = [3 3 0];
b = [2 2];
y = conv(a,b);
=
6
12
6
h = ones(1,10);
x = ones(1,5);
n = 2:15;
y = conv(x,h);
stem(n,y);
Page 81 of 132
Exerccio 23 - Use o MATLAB para determinar a sada do sistema com entrada x[n] = 2{u[n + 2] - u[n 12]} sabendo que a resposta ao impulso desse sistema h[n] = 0,9n {u[n - 2] - u[n - 13]}.
13.4.
Equaes de Diferenas
As Equaes de Diferenas uma forma de expressarmos um sistema na forma recursiva que permita
que a sada do sistema fosse computada a partir do sinal de entrada e das sadas passadas.
Um comando que possvel realizar uma funo similar seria o filter, definida a seguir:
filter
Definio: Expressa a descrio em equao de diferenas de um sistema em uma forma recursiva que
permita que a sada do sistema seja computada a partir do sinal de entrada e das sadas passadas.
Sintaxe:
y = filter(b,a,X)
y = filter(b,a,X,zi)
Veja acima que apareceu o parmetro zi, que determina a condio inicial de y. Este zi uma matriz
com as condies iniciais, sendo os valores passados de y.
Page 82 of 132
a
b
x
y
=
=
=
=
impz
13.5.
A Transformada de Fourier leva uma funo no domnio do tempo para o domnio da freqncia, no
qual podemos analisar as freqncias mais importantes (com maior amplitude) de uma funo. A
transformada inversa de Fourier faz o processo inverso, passa uma funo do domnio da frequncia para
o domnio do tempo.
Page 83 of 132
Resoluo:
Clculo da resposta ao impulso:
Lei dos ns
i = iR + iC
i = iR + C
Em t = 0, i = (t) e iR = 0
Page 84 of 132
V(0) = V(0+) =
0= +C
i(t) = h(t) = C
=-
()h(t-)d =
d =
n = [0:0.08:81.84];
x = exp(-n);
h = -exp(-n/12)/12;
fftx = fft(x);
ffth = fft(h);
ffty = fftx.*ffth;
y = ifft(ffty);
plot(n,-abs(y)*0.08)
title('Convoluo');
xlabel('t(s)');
ylabel('i(A)');
%amostragem
%definio da entrada
%definio da sada
%clculo da fft
%multiplicao
%inversa
Page 85 of 132
13.6.
h(t) = cos(2,5t) t
Filtros Digitais
O MATLAB possui inmeras funes que permitem ao usurio descobrir a funo transferncia de
diferentes tipos de filtros digitais:
A funo de transferncia digital definida por H(z) onde forma geral a funo de transferncia H(z)
a seguinte:
H(z) =
H(z) =
butter
Definio: Determina os coeficientes de um filtro Butterworth. Esse filtro pode ser passa baixa, passa
alta, passa banda, rejeita banda.
Sintaxe:
Page 86 of 132
freqz
b.
c.
Filtrar o sinal.
d.
%Exemplo de filtros
>> fs=200;
%Freqncia de amostragem
>> t=0:1/fs:1;
%Tempo de amostragem
>> T=1/fs;
>> x=sin(2*pi*5*t)+sin(2*pi*80*t); %sinal de entrada
>> figure(4)
>> plot(t,x)
>> title('Sinal de Entrada')
>> xlabel('tempo (s)')
>> ylabel('amplitude')
>> [B,A]=butter(2,20/(fs/2));
%Determinar os coeficientes
>> B
%Mostrar coeficientes B
>> A
%Mostrar coeficientes A
%Plotagem da resposta em freqncia
>> h1 = freqz(B,A,100);
>> figure(1)
>> plot(abs(h1))
>> grid
>> title('Resposta em freqncia')
>> xlabel('freqnca (Hz)')
>> ylabel('amplitude')
% Filtragem
>> figure(2)
>> y = filter(B,A,x);
>> plot(t,y,'k-')
>> title('Sinal de Entrada')
>> xlabel('tempo (s)')
>> ylabel('amplitude')
Page 87 of 132
Page 88 of 132
Exerccio 26 - Projete um filtro passa-alta de Butterworth de ordem 6, com freqncia de corte de 10 Hz.
Use fs=400 Hz. Sinais a serem filtrados: senides de 1 e 20 Hz. Use as funes butter, filter e freqz.
Page 89 of 132
tf
ss
A
B
C
D
G
=
=
=
=
=
zpk
Definio: cria funes de transferncia de tempo contnuo na forma de zeros, plos e ganhos
Sintaxe:
zpk(z,p,k) z, p so vetores com os zeros e os plos, respectivamente, e k o ganho da funo de
transferncia.
>>
>>
>>
>>
z = -1;
p = -3;
k = 2;
zpk(z,p,k)
Page 90 of 132
tf2ss
num = [1 3];
den = [1 0 -3 2];
[A,B,C,D] = tf2ss(num,den);
G = ss(A,B,C,D)
ss2tf
zp2ss
z = -3;
p = [-2 1 1];
k = 1;
[A,B,C,D] = zp2ss(z,p,k);
G = ss(A,B,C,D)
ss2zp
Page 91 of 132
tf2zp
zp2tf
Definio: converte os zeros, plos e ganho nos coeficientes de uma funo de transferncia
Sintaxe:
[num,den] = zp2tf(z,p,k)
>>
>>
>>
>>
z = -3;
p = -5;
k = 5;
[num,den] = zp2tf(z,p,k)
tfdata
z = -1;
p = -3;
k = 2;
sys =zpk(z,p,k)
[num,den] = tfdata(sys)
zpkdata
num = [3 9];
den = [1 2];
sys = tf(num,den);
[z,p,k] = zpkdata(sys)
c2d
Definio: converte uma FT em tempo contnuo (s) para tempo discreto (z).
Sintaxe:
c2d(sys, Ts) Ts corresponde ao tempo de amostragem da FT em tempo discreto.
>>
>>
>>
>>
>>
num = [3 9];
den = [1 2];
sys = tf(num,den);
Ts = 0.1;
c2d(sys,Ts)
d2c
Definio: converte uma FT em tempo discreto (z) para tempo contnuo (s).
Sintaxe:
d2c(sys, metodo) Onde mtodo corresponde ao mtodo de converso de contnuo para discreto.
>>
>>
>>
>>
>>
num = [1 -2];
den = [1 -1];
Ts = 0.1;
sys = tf(num,den,Ts);
d2c(sys,'tustin')
impulse
Page 93 of 132
step
num = [1 2];
den = [1 1];
G = tf(num,den);
step(G)
figure
num = [1];
den = [1 0.5 1 0];
t = 0:0.1:10;
G = tf(num,den);
y = step(G,t)
plot(t,y,t,t)
Page 94 of 132
Page 95 of 132
series
parallel
Definio: calcula a funo de transferncia equivalente de duas FTs em paralelo. Equivalente a soma das
duas funes.
Sintaxe:
parallel(sys1,sys2)
>> G1 = tf(1,[1 1]);
>> G2 = tf(1,[0.5 1]);
>> G = parallel(G1,G2)
feedback
num = 10;
den = [0.5 1];
G1 = tf(num,den);
G = feedback(G1,1)
Page 96 of 132
lsim
t = 0:0.1:5;
u = ones(1,length(t));
G = tf(1, [0.5 1]);
lsim(G,u,t)
Page 97 of 132
pzmap
num = [1 2];
den = [1 1 0];
G = tf(num,den);
pzmap(G)
Page 98 of 132
rlocus
num = [1 2];
den = [1 1 0];
G = tf(num,den);
rlocus(G)
Page 99 of 132
nyquist
num = 1;
den = [0.5 1.5 1];
G = tf(num,den);
nyquist(G)
bode
num = [1 5];
den = [1 1.5 1];
G = tf(num,den);
bode(G)
sigma
num = [1 5];
den = [1 1.5 1];
G = tf(num,den);
sigma(G)
sigma
Definio: plota o diagrama de bode de uma funo de transferncia indicando as margens de ganho e de
fase.
Sintaxe:
marginsys)
>>
>>
>>
>>
num = [1 5];
den = [1 1.5 1];
G = tf(num,den);
margin(G)
stepinfo
SettlingTime:
SettlingMin:
SettlingMax:
Overshoot:
Undershoot:
Peak:
PeakTime:
4.6002
0.9023
0.9992
0
0
0.9992
7.7827
15.1.
Iniciando o Simulink
15.2.
Criando um modelo
Para a criao de um novo modelo necessrio abrir uma nova janela de modelo. Para isso basta
abrir o menu File e escolher a opo New Model, Fig. 63.
Uma janela ser ento aberta. Essa a janela de modelos do Simulink. Toda a montagem,
modificao e testes dos sistemas so feitas nessa janela. O MATLAB salva esse arquivo de simulao
com a extenso .mdl e, assim como no M-File, para que o sistema seja executado necessrio que ele
esteja salvo. Como um primeiro exemplo, pode-se mostrar na tela uma onda senoidal. Para montar esse
sistema so necessrios dois dispositivos: primeiro algum dispositivo que seja capaz de mostrar a onda e
tambm a prpria onda.
Para adicionar uma onda senoidal seleciona-se a biblioteca Source na janela de bibliotecas do
Simulink, Fig. 64. Quando selecionamos essa biblioteca, aparece no lado direito um conjunto de sinais
que podem ser usados como entrada do sistema, tais como sinal de Rampa, sinal de Degrau, onda
senoidal, etc. O bloco referente onda senoidal se chama Sine Wave. Para adicionar o bloco janela basta
clicar com o boto direito do mouse e escolher a opo Add to nome_da_janela.
O bloco ser adicionado na janela de modelos aberta. Tendo a forma de onda de entrada, basta ter o
dispositivo capaz de mostrar a onda na tela. Esse dispositivo est presente na biblioteca Sink, o nome do
bloco Scope. Para adicionar esse bloco o procedimento o mesmo. Depois dos blocos serem
adicionados necessrio interlig-los. Para isso basta clicar na seta presente na lateral de um dos blocos,
manter o boto pressionado e levar a linha tracejada at a seta presente no outro bloco. Se a cor da linha
que liga os dois blocos ficar preta e o tracejado se manter contnuo, a operao foi realizada corretamente.
O sistema est pronto, para execut-lo basta clicar no boto Start Simulation, na barra superior. Para
controlar o tempo de simulao, basta digitar o mesmo na janela Simulation stop time: 10.0, Fig. 65.
O sistema foi simulado. Para visualizar a onda, d-se um duplo clique no Scope. Surgir na tela a
forma de onda de Sine Wave. O resultado final pode ser visto na Fig. 66:
15.3.
Um das modificaes importantes que podem ser feitas a do prprio mtodo de resoluo das
equaes diferencias. O MATLAB oferece algumas opes de Mtodos:
ODE45 - Excelente mtodo de propsito geral de passo simples. baseado nos mtodos de
Dormand-Prince e de Runge-Kutta para Quarta/Quinta ordem. ODE45 o mtodo padro do Simulink.
ODE23 - Usa os mtodos Bogacki-Shampine e Runge-Kutta de Segunda ou Terceira ordem. Pode
ser uma melhor opo que o ODE45. Geralmente requer um passo menor do que o ODE45 para atingir a
mesma preciso.
ODE113 - Utiliza o mtodo de ordem varivel de Adams-Bashforth-Moulton. J que ODE113 utiliza
as solues de pontos em tempos anteriores para se determinar a soluo do tempo corrente, deve ento
produzir a mesma preciso dos mtodos ODE45 ou ODE23 com menor nmero de clculos e com isto
tendo uma melhor performace. No apropriado para sistemas com descontinuidades.
ODE15S - Sistema de ordem varivel de multi passos para sistemas inflexveis. baseado em
pesquisas recentes que utilizam frmulas numricas de diferena. Se a simulao executar lentamente
utilizando ODE45, tente ODE15S.
ODE23S - Ordem fixa de passo simples para sistemas inflexveis. Devido ao fato de ser um mtodo
de passo simples, em muitas das vezes mais rpido do que ODE15S. Se um sistema parecer inflexvel
uma boa idia tentar ambos os mtodos para este tipo de sistema para se determinar qual dos dois tem
melhor performace.
ODE23t - Implementao do mtodo trapezoidal utilizando uma interpolao livre. Usar quando se
quer soluo sem um amortecimento.
15.4.
Modelagem de Sistemas
Sistema Massa-Mola
O primeiro sistema fsico a ser modelado ser o sistema massa-mola apresentado na Fig, 69, que
a =
= -
x, foi achada ento uma relao entre a acelerao do sistema e o deslocamento. Essa
O bloco Gain, se no for modificado, ter o ganho 1. Para modificar o ganho deve-se clicar duas
vezes no bloco. Aparecer na tela a janela de configurao dos parmetros do bloco, onde o ganho pode
ser modificado, Fig. 72:
Como foi colocado um valor literal no ganho, quando a simulao for executada as variveis k e
m devem estar presentes no workspace. Antes de realizar a simulao pode-se definir as variveis no
command window:
>> k=500;
>> m=20;
Page 111 of 132
+ x0
Quando a condio inicial modificada para um valor maior que zero, estamos modificando o valor
do deslocamento da mola no instante inicial do sistema, assim o que aconteceu foi que aplicamos uma
entrada no sistema. Para modificar a condio inicial da integral da velocidade, necessrio se modificar
os parmetros da integral. O procedimento realizado o mesmo que o do bloco Gain: d-se um duploclique no bloco Integrator, o que far aparecer na tela uma janela onde os parmetros da integral possam
ser modificados. Em Initial condition, pode-se colocar a condio inicial 2, Fig. 73:
Para evidenciar o comportamento do sistema massa-mola clssico, pode ser traado tambm a curva
da energia potencial x energia cintica do bloco. Para isso tem-se que realizar outro equacionamento:
= kx2, energia potencial do bloco
= mv2, energia cintica do bloco
A energia potencial do sistema depender do deslocamento instantneo, assim ser necessria a sada
do sistema, que o prprio x. Como se observa na equao, o primeiro passo ser elevar o
deslocamento ao quadrado. Uma opo para realizar essa operao o bloco Product, presente em Math
Operations. Esse bloco tem como configurao padro, duas entradas e uma sada que resultante da
multiplicao das duas entradas. Assim ligamos a sada do sistema (deslocamento) simultaneamente s
Page 113 of 132
O procedimento para se obter a energia cintica anlogo. Primeiro preciso obter o sinal v2 e
depois preciso dar um ganho de m/2 nesse sinal, resultando assim na energia cintica, Fig. 76. Para
traar os dois sinais em um s grfico, utiliza-se apenas um Scope. Em conjunto utiliza-se tambm o
bloco Mux, presente na biblioteca Signal Routing, Fig. 77:
Atravs do grfico pode-se observar uma caracterstica tpica dos sistemas conservativos, que a
complementaridade das duas energias ao longo do tempo. Pode-se observar que no incio a energia
potencial (em amarelo) mxima, enquanto que a energia cintica (em roxo) nula, devido a ausncia de
movimento. Situao oposta quando o bloco passa pela origem, em que a energia potencial nula e a
cintica mxima.
Amortizao de Financiamento
O balano de um emprstimo ao fim de um ms equivale aos juros incidindo sobre o balano do
O que se conclui a partir desse smbolo que este bloco tem duas entradas e uma sada, que retorna a
soma das entradas. Se for dado um duplo-clique, pode-se perceber na configurao dos parmetros do
bloco o parmetro List of Sign, que conter |++. Estes smbolos definem as configuraes possveis para
o somador. Existem vria configuraes, mas a requerida no problema do petiano a diferena entre os
termos da entrada. Trocando |++ por |-+, o bloco ter um novo aspecto, Fig. 79.
O bloco Sum ser responsvel por retornar o balano equivalente do ms. Como observado na
equao so entradas sero o pagamento mensal e o balano do ms anterior. O pagamento, por ser de
uma quantia fixa, pode ser representado por uma constante. O bloco Constant, presente em Source pode
representar bem o pagamento. Ao se adicionar o bloco, d-se duplo modo a trocar o valor da constante, de
1 para 100000, Fig. 80.
O outro termo do somado ser o balano do incio do ms com os juros, ou seja, ser necessrio o
balano atrasado. Para se obter esse balano necessrio realizar uma operao de atraso no balano
atual. O bloco que define a operao de atraso denominado Unit Delay, est presente na biblioteca
Discrete. Esse bloco atrasa o sinal de entrada em uma unidade. Como o sinal a ser atrasado o prprio
balano, ento a entrada desse bloco tem que ser colocada na sada do somador, Fig. 81.
A outra entrada do somador ser o balano atrasado (sada de Unit Delay) multiplicado pelos juros,
Fig. 82. Como o juro mensal de 1%, ser usado um bloco Gain com ganho de 1,01:
Para uma melhor visualizao dos clculos feitos, ser utilizado um Scope e um bloco chamado
Display, presente na biblioteca Sinks. Esse bloco mostra o valor de uma determinada varivel no instante
em questo. A quantia inicial do financiamento posta no sistema atravs do valor inicial do Unit Delay,
que ser nesse caso de R$ 5.000.000,00. O sistema est ento pronto para ser simulado. Sempre
recomendvel verificar os parmetros de simulao em casos discretos. Primeiro verificar se a opo de
soluo escolhida discrete, para isso, na tela da Fig. 68, clique em Model Configuration Program e
modifique a opo Solver para discrete e o Max step size para 1. E segundo, verificar o tempo de
simulao, presente em Start Time e em Stop Time. Como se quer o valor ao final de dois anos, deve-se
escolher um Stop Time igual a 25 (devido ao atraso). O resultado ser o seguinte, Fig. 84:
O que mostra que ao final dos dois anos, o petiano endividado ter uma dvida de R$ 3.587.840,03
com o banco.
Page 117 of 132
16.1.
Introduo e Apresentao
Em computao uma GUI (Graphical User Interface) uma interface grfica que apresenta um
mecanismo mais atraente e mais amigvel ao usurio na utilizao do software. O MATLAB possui uma
ferramenta chamada GUIDE que permite construir interfaces grficas de interao com o utilizador. O
mecanismo auxilia o programador a implementar recursos grficos mais rpida e facilmente. A Fig. 85
mostra um exemplo de GUI.
Para inicializar a ferramenta GUIDE necessrio digitar guide na Command Window do MATLAB,
Fig. 86, posteriormente clicar em Blank GUI (default). A tela inicial mostrada na Fig. 87.
Em conjunto com a tela inicial criado um arquivo .m com o cdigo fonte da GUI criada. Todas as
possveis alteraes no modo de operao sero feitas nesse arquivo. O trabalho grfico ser todo feito
com o auxlio do mecanismo GUIDE.
16.2.
Ferramentas bsicas
Push Button
Com essa ferramenta possvel criar um boto que volta ao estado original aps ser ativado. Ao se
clicar no cone Push Button da GUI, aparecer na tela quadriculada uma pequena cruz preta que permite
definir o tamanho do boto retangular. Observe na Fig. 89 (a) como fica a criao de um simples boto.
Ao selecionar a funo desejada possvel realizar algumas configuraes utilizando o Inspector
sobre a ferramenta como ser explicado em seguida. Alm disso, o usurio pode fazer diversas
combinaes de ferramentas, como ser mostrado no exemplo do fim do captulo de GUI. Por enquanto,
basta saber que ao executar a ferramenta clicando no cone verde Run Figure aparecero uma opo para
salvar seu trabalho, um arquivo .m do cdigo utilizado para a criao da funo e, finalmente, a seguinte
tela de interface, Fig. 89 (b).
(a)
(b)
Radio Button
Essa ferramenta permite que o usurio selecione uma opo. Observe a criao de um Radio Button,
(a)
(b)
Edit Text
Campo que recebe textos inseridos pelo usurio. Observe, na Fig. 91 (a) , a insero de um desses
campos. Observe que antes de executar possvel alterar o texto dentro do quadro branco. Em geral, esse
quadro deixado vazio para que o usurio insira um texto. Aps a execuo, se o quadro tiver sido
deixado em branco, aparecer na interface, Fig. 91 (b), apenas uma pequena tela branca onde o usurio
poder inserir algo.
(a)
(b)
Pop-up Menu
Campo que, ao ser clicado, disponibilizada diversas opes criadas pelo programador. A insero de
um Pop-up feita como na Fig. 92 (a) e sua interface est disposta na Fig. 92 (b).
(a)
(b)
Toogle Buttons
Semelhante ferramenta Push Button, a Toggle Button tem como funo exibir um boto a ser
ativado. A diferena que o ltimo permanece pressionado depois que o usurio o ativa. Observe a
criao do Toogle Buttons na Fig. 93 (a) e sua interface na Fig. 93 (b).
(a)
(b)
Axes
Campo que permite a insero de grfico na GUI. Observe a criao do Axes na Fig. 94 (a) e sua
(a)
(b)
Slider
Campo que permite a insero de uma barra de rolagem. Observe a criao do Slider na Fig. 95 (a) e
(a)
(b)
Check Box
Boto que permite dentre vrias opes escolher quantas o usurio desejar. Observe a criao do
(a)
(b)
Static Text
Atravs dessa ferramenta, possvel fazer aparecer um texto que no pode ser modificado pelo
usurio. Observe a criao, Fig. 97 (a), e execuo, Fig. 97 (b), de uma ferramenta Static Text.
(a)
(b)
Listbox
Ferramenta que exibe uma lista de itens que o usurio pode selecionar. Observe a criao do Listbox
(a)
(b)
Table
Campo onde so inseridas tabelas na GUI. Observe a criao do Table na Fig. 99 (a) e sua interface
na Fig. 99 (b).
(a)
(b)
Panel
Campo que permite o agrupamento de ferramentas quaisquer. A utilidade organizar as ferramentas.
Observe a criao do Panel na Fig. 100 (a) e sua interface na Fig. 100 (b).
(a)
(b)
Button Group
Campo onde so agrupados botes diversos. Observe que a nica diferena dessa ferramenta para um
Panel que aqui apenas Toggle Buttons e Radio Buttons so organizadas. Observe a criao do Button
Group na Fig. 101 (a) e sua interface na Fig. 101 (b).
(a)
(b)
ActiveX Control
Permite que os controles da ActiveX sejam exibidos na GUI.
Uma vez criados os campos o usurio poder suas configurar suas propriedades. Para faz-lo bastar
dar um duplo clique em qualquer uma das ferramentas anteriormente apresentadas. A Fig. 102 mostra um
exemplo:
16.3.
O GUIDE cria uma funo no arquivo .m da aplicao para cada novo objeto adicionado na GUI.
Dentre essas funes a mais importante a callback. O callback um funo que escrita e associada a
um especfico componente da GUI e que controla seu comportamento e suas diversas funes no
programa. Dentro da rotina callback utilizaremos ainda duas importantes funes:
get
Definio: Recebe dados inseridos pelo usurio em determinado campo da GUI. Tem vrias utilizaes
sendo a mais utilizada da forma:
Sintaxe:
Page 127 of 132
set
Definio: Envia dados que so editveis para determinado campo da GUI. a funo complementar ao
get e tambm tem vrias utilizaes sendo a mais utilizada da forma:
Sintaxe:
get(handles.TagDoCampo.TipoDeVarivelUtizada,InformaoEnviada)
function botao_Callback(hObject, eventdata, handles)
display('Aprendi a fazer um SET no GUIDE!!!')
set(handles.texto,'string', 'Aprendi a fazer um SET no GUIDE!!!')
Interpretao da funo apresentada:
Aps o boto com tag boto ser clicado a funo acima recebe/ envia uma mensagem do tipo
string para um objeto com tag texto. Caso o objeto seja um Editable Text a tela da GUI ser similar a
da Fig. 104.
16.4.
1.
2.
4.
Manipule o m-file.
[ 1 ] CARNAHAN, Brice, LUTHER, H. A. & WILKES, James O. Applied numerical methods. John
Wiley & Sons, Inc. Nova Iorque 1969.
[ 2 ] GES, Hilder & TONAR, Ubaldo. Matemtica para Concursos. 6 Edio. ABC Editora. Fortaleza
CE. 2001.
[ 3 ] HAYKIN, Simon & VEEN, Barry Van. Sinais e Sistemas. Editora Bookman. Porto Alegre RS.
2001
[ 4 ] HAYT, William H. Jr. & BUCK, Jonh A. Eletromagnetismo. 6 Edio. Editora LTC. Rio de
Janeiro RJ. 2001.
[ 5 ] LEITHOLD, Louis. O Clculo com Geometria Analtica. 3 Edio. Volume I. Editora Habra. So
Paulo SP. 1994.
[ 6 ] NILSSON, James W & RIEDEL, Susan A. Circuitos Eltricos. 6 Edio. Editora LTC. Rio de
Janeiro RJ. 2003.