Você está na página 1de 43

MATLAB

Guia de utilizao
Motemt|co Computoc|ono|
Fro|. A|exondre Ferre|ro Sontos
Fro| Montserrot Fortuny Hered|o


























Mestrado em Lngenharia de Processos
Ncleo de Desenvolvimento 1ecnolgico Regional
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 2

CONTEDO

Prefcio _____________________________________________________________ 3
1. Conceitos Bsicos de Matrizes e Vetores ________________________________ 4
1.1. Operaes entre matrizes_____________________________________________ 5
1.2. Algumas propriedades fundamentais das matrizes _________________________ 6
1.3. Algumas propriedades fundamentais de operaes entre matrizes _____________ 9
1.4. Valores caractersticos e vetores caractersticos de matrizes quadradas _________ 9
2. Introduo ao Matlab_______________________________________________ 11
2.1. Utilizando strings__________________________________________________ 12
3. Utilizando funes matemticas elementares____________________________ 13
4. Trabalhando com vetores e matrizes __________________________________ 13
4.1. Construindo vetores________________________________________________ 14
4.3. Construindo matrizes_______________________________________________ 16
4.4. Manipulando vetores e matrizes ______________________________________ 16
4.5. Comparando vetores e matrizes_______________________________________ 18
4.6. Realizando operaes matriciais ______________________________________ 19
4.7. Utilizando matrizes especiais ________________________________________ 19
4.8. Ordenando matrizes________________________________________________ 20
4.9. Utilizando matrizes multidimensionais _________________________________ 20
4.10. Utilizando listas __________________________________________________ 21
4.11. Utilizando estruturas ______________________________________________ 22
4.12. Utilizando matrizes esparsas ________________________________________ 22
5. Analisando dados __________________________________________________ 23
6. Trabalhando com polinmios ________________________________________ 24
7. Confeccionando grficos ____________________________________________ 25
7.1. Grficos bidimensionais ____________________________________________ 25
7.2. Grficos tridimensionais ____________________________________________ 28
8. Trabalhando com tempo ____________________________________________ 30
9. Obtendo modelos empricos__________________________________________ 31
9.1. Regresso linear___________________________________________________ 31
10. Iniciando um programa ____________________________________________ 32
11. Utilizando comandos de fluxo e operadores lgicos _____________________ 33
11.1. Utilizando a funo for ___________________________________________ 33
11.2. Utilizando a funo while_________________________________________ 34
11.3. Utilizando a funo if-else-end _________________________________ 35
12. Resolvendo um sistema de equaes algbricas_________________________ 36
13. Resolvendo um sistema de equaes diferenciais _______________________ 37
14. Como saber mais sobre o MATLAB?_________________________________ 38
15. Exerccios resolvidos ______________________________________________ 39
Exerccios___________________________________________________________ 42


MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 3
Prefcio

O objetivo deste guia apresentar ao usurio iniciante do MATLAB noes bsicas de
utilizao deste aplicativo. Inicialmente, realizada uma rpida reviso dos conceitos de
lgebra Matricial. Em seguida, feita uma breve descrio do software, onde so
apresentadas as principais caractersticas e potencialidades do aplicativo.
Posteriormente, separados em itens, so descritos alguns comandos importantes para a
utilizao do MATLAB. Noes de programao em MATLAB tambm so
apresentadas neste guia, bem como os comandos empregados na resoluo de
sistemas de equaes no lineares e de equaes diferenciais ordinrias. Sugestes
para consultas futuras e alguns exerccios de fixao so apresentados ao final do texto.
MATLAB (MATrix LABoratory) um software interativo de alta performance voltado
para o clculo numrico e cientfico.. O MATLAB integra anlise numrica, clculo com
matrizes, processamento de sinais e construo de grficos em ambiente fcil de usar
onde problemas e solues podem ser expressos como eles so escritos na matemtica
ou na forma de uma linguagem de programao. No MATLAB o elemento bsico de
informao uma matriz que no requer dimensionamento, dispensando tarefas como
declarao de variveis, alocao de memria, utilizao de ponteiros, permitindo a
resoluo de muitos problemas numricos em apenas uma frao do tempo que se
gastaria para escrever um programa semelhante em linguagem Fortran, Basic ou C. A
potencialidade do software est muito alm do que ser mostrado neste guia. Trata-se
de um ambiente de alto nvel que possui ferramentas avanadas de anlise e
visualizao de dados. Mais do que um aplicativo, o MATLAB tambm possui
caractersticas de linguagem de programao.
As funes matemticas j existentes no MATLAB so otimizadas, programadas em
linguagem MATLAB e esto agrupadas de acordo com a rea de interesse em
toolboxes. Assim, o usurio tem acesso aos arquivos das funes matemticas o que
possibilita a realizao de alteraes nas rotinas j existentes. Todavia, vale ressaltar
que estas alteraes so desaconselhveis e s devem ser realizadas como ltima
alternativa.

Aracaju, 10 de Fevereiro de 2005


Alexandre F. Santos
Montserrat Fortuny
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 4

1. Conceitos Bsicos de Matrizes e Vetores

Os clculos/operaes assim como conceitos envolvendo matrizes e vetores constituem
a base dos mtodos numricos que tratam da soluo de sistemas lineares e no
lineares de equaes algbricas ou diferenciais. A representao destes sistemas em
termos matriciais/vetoriais extremamente mais compacta e corrente na literatura
tcnica. Como visa-se neste captulo apresentar os conceitos bsicos deste assunto
especialmente relacionados com aplicaes em Engenharia de Processos, os
elementos de matrizes e vetores sero em princpio nmeros ou variveis reais a no
ser quando explicitamente especificados como complexos.
Uma matriz um arranjo retangular de nmeros em m linhas e n colunas, mxn, sendo
representada como A (letras maisculas em negrito) pertencente a ?
mxn
, isto :
A ?
mxn
. O elemento da linha i e coluna j de A representado por a
ij
(correspondente
letra minscula com o sub-ndice ij ) ou (A)
ij
. A matriz completa geralmente escrita na
forma: A=
(
(
(
(

mn m2 m1
2n 22 21
1n 12 11
a a a
a a a
a a a

, ou em forma mais compacta por A= (a


ij
), com
i=1,...,m e j =1,...,n.
Se duas matrizes A e B apresentam o mesmo nmero de linhas e o mesmo nmero de
colunas so ditas do mesmo tipo.
Se A= (a
ij
) tal que a
ij
= 0 para todo i e j ento a matriz A dita nula e representada
por 0.
Se n=m a matriz A dita quadrada.
Se n=m e a
ij
= a
ji
para i,j =1,...,n a matriz quadrada A dita simtrica.

Exemplo: M=
(
(
(

4 0 2
0 5 3
2 3 1

note que a matriz simtrica M tem sua prpria imagem refletida atravs da diagonal
principal.

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 5
Se n=1 tem-se um vetor coluna ou simplesmente vetor designado por v (letra minscula
em negrito) e representado por: v=
(
(
(
(

m
2
1
v
v
v

?
m
.
Se m=1 tem-se um vetor linha designado por v
T
(letra minscula em negrito com o
sobre-ndice T de transposto) e representada por: v
T
= (v
1
v
2
v
3
... v
n
) ?
1xn
.
Se m=n=1 tem-se um escalar (real) (letra minscula grega), ou seja: ?.
A matriz A ?
mxn
pode ser parcionada por:
a) colunas na forma:
A = ( )
n 2 1
a a a onde a
j
=
(
(
(
(
(

mj
2j
1j
a
a
a

?
m
para j=1,...,n so os n vetores colunas da
matriz A;
b) linhas na forma:
A=
(
(
(
(
(

T
m
T
2
T
1
a
a
a

onde
T
i
a = ( )
in i2 i1
a a a ?
1xn
, para i=1,...,m so os m vetores linhas
da matriz A.

1.1. Operaes entre matrizes
As operaes de adio ou subtrao so definidas apenas para matrizes do mesmo
tipo, assim se A e B so matrizes (m x n ) ento a matriz C , tambm (m x n ), soma ou
subtrao de A com B, representada por C = A B, tem como termo geral :
c
ij
= a
ij
b
ij
para i = 1, ... ,m e j = 1, ... ,n .
Se um escalar qualquer, a matriz A uma matriz cujo termo geral a
ij
.

A operao de multiplicao de matrizes A Bs definida se o nmero de colunas de A
(primeira parcela do produto) for igual ao nmero de linhas de B (segunda parcela do
produto). Assim, temos:
C=A B, onde A (m,n) , B (n,p) e C (m,p) que apresenta como termo geral:
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 6

=
=
n
1 j
jk ij ik
b a c , para i=1, ..., m e k=1,...,p.
importante ressaltar que a lei de comutatividade no satisfeita pelo produto entre
matrizes, ou seja, em qualquer caso temos a seguinte regra geral: A B B A.

A operao de transposio de uma matriz A (m,n) consiste em trocar as linhas pelas
colunas de A; esta nova matriz chamada de matriz transposta de A, representada por
A
T
, e uma matriz (n,m) cujo termo da linha j e coluna i a
ij
T
ij
a a = , para j=1,...,n e
i=1,...,m. Se a matriz A simtrica, ento: A = A
T
.

1.2. Algumas propriedades fundamentais das matrizes
As propriedades que sero descritas a seguir aplicam-se exclusivamente a matrizes
quadradas (n,n) e a vetores coluna (n,1) e a vetores linha (1,n).
Define-se como matriz unitria ou matriz identidade a matriz I cujo elemento geral :
( )

=
= =
j i que sempre 0
j i se apenas 1
ij ij
I , onde
ij
chamado de delta de Kronecker, deste
modo a matriz identidade uma matriz diagonal cujos termos da diagonal so todos
unitrios, assim: I=
(
(
(
(

1 0 0
0 1 0
0 0 1

, entendendo-se como matriz diagonal uma matriz


quadrada em que apenas os elementos da diagonal (tambm chamada de diagonal
principal) so no nulos. Uma matriz diagonal um caso particular de matrizes dita
esparsas, que so matrizes que apresentam um grande nmero de elementos nulos,
sendo os elementos no nulos mais a exceo do que a regra.
Geralmente, uma matriz diagonal D=
(
(
(
(

n
2
1
d 0 0
0 d 0
0 0 d

, representada na forma mais


compacta: D= diag( )
n 2 1
d d d .
Note que toda matriz diagonal simtrica.
Uma propriedade muito importante da matriz identidade : I A = A I = A, isto , a matriz
identidade pr-multiplicada ou ps-multiplicada por qualquer matriz quadrada de mesma
dimenso no altera o valor de elemento algum desta matriz.
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 7

As matrizes triangulares so matrizes que apresentam todos os elementos sob (ou
sobre) a diagonal nulos, podendo assumir as seguintes classificaes:
matriz triangular superior ou matriz U , com U
ij
=0 se i>j
matriz triangular inferior ou matriz L , com L
ij
=0 se j>i

Exemplo: U=
(
(
(


2 0 0
3 3 0
3 1 2
Exemplo: L=
(
(
(

2 1 7
0 3 9
0 0 5

Matriz U triangular superior Matriz L triangular inferior

O trao de uma matriz quadrada A a soma dos elementos de sua diagonal, isto :

=
=
n
1 i
ii
a ) ( r t A
Uma matriz quadrada A pode receber as seguintes classificaes quando inserida em
uma forma quadrtica como se segue: f(x) = x
T
Ax x x x
1- Positiva definida se x
T
A x xx x > 0 para todo vetor x 0 (isto , no nulo).
2- Positiva semidefinida se x
T
Ax x x x 0 para todo vetor x.
3- Negativa definida se x
T
Ax x x x < 0 para todo vetor x 0.
4- Negativa semidefinida se x
T
Ax x x x 0 para todo vetor x.
5- Indefinida se x
T
Ax x x x assume tanto valores positivos quanto negativos.

O determinante de uma matriz A um escalar obtido atravs da soma de todos os
produtos possveis envolvendo um elemento de cada linha e cada coluna da matriz, com
o sinal positivo ou negativo conforme o nmero de permutaes dos ndices seja par ou
mpar. Sua obteno e sua representao, apesar de ser um dos conceitos mais
preliminares envolvendo matrizes, no so tarefas triviais e o conceito de determinante
ser utilizado nestas notas apenas como base de outras propriedades de matrizes
quadradas. Assim, o determinante de A designado por det(A) pode ser representado
por:
n 2 1
i n, i 2, i 1,
a a a ) det( =

A ou ento atravs do conceito de cofator do
elemento ij da matriz A (representado por A
ij
) que o determinante da matriz obtida
cancelando a linha i e a coluna j da matriz A com o sinal mais ou menos conforme i+j
seja par ou mpar, assim:
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 8
) det( ) 1 ( A
ij
j i
ij
=
+

onde
ij
representa a matriz quadrada (n-1, n-1) obtida pela eliminao da linha i e a
coluna j de A. Tem-se ento:

=
=
n
1 j
ij ij
A a ) det(A
Na prtica, entretanto praticamente impossvel calcular o determinante de matrizes
atravs destas regras gerais por envolver um nmero muito grande de termos (na
realidade n!, assim mesmo com matrizes relativamente pequenas como com n=10 tem-
se 3 milhes de termos). Felizmente, para os nossos propsitos, apenas as regras a
seguir sero suficientes:
1- O determinante de uma matriz A mantm-se inalterado se somarem-se a todos os
elementos de qualquer linha (ou coluna) os correspondentes elementos de uma outra
linha (ou coluna) multiplicados pela mesma constante ;
2- se a
ij
o nico elemento no nulo da linha i ou da coluna j ento:
ij ij
A a ) det( = A
3- A=
(

d c
b a
ento: c b d a
d c
b a
) det( =
(

= A

Da regra (1)verifica-se que se det(A) = 0, ento A apresenta duas linhas (ou colunas)
proporcionais entre si. De uma forma mais geral, pode-se afirmar que uma linha (ou
coluna) de A pode ser escrita como combinao linear de alguma(s) linha(s) (ou
colunas) da mesma matriz. Da regra (2) demonstra-se que se A for uma matriz
triangular ento det(A) simplesmente o produto dos elementos de sua diagonal.
Se det(A) = 0 diz-se que a matriz A singular, e caso det(A) 0, ento A dita regular.
Se C=A B, ento det(C)= det(A) det(B).
Se B = A
T
ento det(B)= det(A), isto det (A
T
) = det (A).

A matriz adjunta de uma matriz A corresponde transposta da matriz obtida
substituindo cada elemento da matriz A pelo seu correspondente cofator, isto , se a
matriz adjunta de A ento o elemento da linha i e coluna j de A
ji
. A propriedade mais
importante da matriz adjunta diz respeito ao produto:
A = A = det(A) I.
Se det(A)0 (A regular) define-se a inversa de A como:
A
A
A
~
) det(
1
1
=

que tem como propriedade:


A A
-1
= A
-1
A = I que existe apenas se det(A) 0.
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 9
Note que
) det(
1
) det(
1
A
A =


Exemplo: Considere a seguinte matriz (2x2):
A=
(

d c
b a
, assim, seus cofatores so:

= =
= =
a A ; b A
c A ; d A
22 21
12 11
, permitindo determinar a
matriz adjunta: =
(

a c
b d
, note que:
A = A =
(


1 0
0 1
) c b d a ( = det(A) I.
(

a c
b d
) c b d a (
1
1
A , isto ,
para determinar a inversa de uma matriz (2x2) basta trocar os elementos da diagonal
principal, trocar o sinal dos elementos da diagonal secundria e dividir a matriz
resultante pelo determinante da matriz original.

Se A
-1
= A
T
, isto , a inversa da matriz igual a sua transposta, ento a matriz A
chamada de matriz ortogonal e neste caso o det(A)=+1 ou -1.

1.3. Algumas propriedades fundamentais de operaes entre matrizes
As leis de associao e de comutao so vlidas para as operaes de
adio/subtrao, assim:
(A+B)+C = A+(B+C) e A+B = B+A.
So vlidas tambm as leis de associao e de distribuio para a multiplicao, assim:
(AB)C = A(BC) ; A(B+C) = AB + AC e (A+B)C = AC + BC
Para a matriz transposta tem-se as seguintes propriedades:
(A+B)
T
= A
T
+ B
T
e (AB)
T
= B
T
A
T

e para a matriz inversa:
(AB)
-1
= B
-1
A
-1
e (A
-1
)
T
= (A
T
)
-1


1.4. Valores caractersticos e vetores caractersticos de matrizes quadradas
Dada uma matriz A pode-se determinar um escalar e um vetor v tal que a equao:
A v = v seja satisfeita, o escalar chamado de valor caracterstico ou autovalor da
matriz A e v chamado de vetor caracterstico ou auto vetor de A. A equao de
definio do valor e vetor caractersticos pode tambm ser escrita na forma:
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 10
(A I) v = 0, transformando-se assim em um sistema linear e homogneo de
equaes que apresenta soluo apenas se a matriz (A I) for singular, isto :
det (A I) =
(
(
(
(




nn n2 n1
2n 22 21
1n 12 11
a a a
a a a
a a a

=p()=0, que o polinmio de grau n em


chamado de polinmio caracterstico de A, cujas n razes so os valores
caractersticos ou autovalores de A.
Verifica-se, pela expanso deste determinante, que o nico termo de grau n e (n-1) em
o correspondente ao produto da diagonal principal de A I, isto :
(a
11
) (a
22
) (a
nn
) sendo todos os demais termos de grau inferior a (n-1), alm
disto como p(0)=det(A) o termo independente de em p() det(A), permirtindo assim
concluir que
p() = ()
n
+(a
11
+ a
22
+
. . .
+ a
nn
) (-)
n-1
+
. . .
+det(A)=0
Multiplicando-se membro a membro por (-1)
n
, tem-se:
p() =
n
(a
11
+ a
22
+
. . .
+ a
nn
)
n-1
+
. . .
+(-1)
n
det(A)=0
(note que apesar de ter-se multiplicado membro a membro da expresso por (-1)
n
,
manteve-se a notao p() para designar o polinmio caracterstico, j que o mesmo
est igualado a zero sendo assim irrelevante seu sinal). Pela expresso de p() deduz-
se que:
(a)
1
+
2
+
. . .
+
n
= a
11
+ a
22
+
. . .
+ a
nn
ou seja:

=
=
n
1 i
i
) ( tr A
(b)
1

2
. . .

n
= det(A) ou seja: ) det(
n
1 i
i
A =

=

(c) como p() = det (A I) = 0 se A for singular tem-se det(A)=0; desta forma
p(0)=det(A)=0, isto , se A for singular =0 necessariamente valor caracterstico de A.
Exemplo: Encontre todos os autovalores da matriz A=
(

3 1
1 3

Calculando p() = det (A I) = 0, temos:
det (A I) = det
(



3 1
1 3
= (3) (3) 1=
2

Soluo do polinmio: =2 e =4 (autovalores de A).

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 11
2. Introduo ao Matlab

No MATLAB os nomes das variveis devem ser palavras nicas, sem a incluso de
espaos e no devem conter acentos. As regras bsicas para nomes de variveis so
apresentadas na Tabela 2.1.

Tabela2.1: Regras bsicas para nomes de variveis no MATLAB.
As variveis so sensveis a letras maisculas e
minsculas
Itens, itens e ITENS
So entendidas como diferentes variveis.
As variveis podem possuir at 31 caracteres.
Os caracteres alm do 31 so ignorados.
Oquevoceachadestenomedevariavel
Pode ser usado como nome de varivel.

O nome da varivel deve comear com uma
letra, seguida de qualquer nmero, letra ou
sublinhado.

O_que_voce_acha_deste_nome e X51
podem ser utilizados como nome de
variveis.


Existem algumas variveis especiais que o MATLAB utiliza que so apresentadas na
Tabela 2.2. Se o usurio redefine estas variveis, o MATLAB passa a atribuir a nova
funo s mesmas.

Tabela 2.2: Variveis especiais utilizadas pelo MATLAB
Varivel Significado
Ans Varivel padro usada para resultados.
Pi Razo entre o permetro da circunferncia e seu
dimetro.
Eps Preciso relativa da mquina.
Inf Infinito
NaN nan No numrico
i j
1 j i = =
Nargin Nmero de argumentos de entrada de uma funo.
Nargout Nmero de argumentos de sada de uma funo.
Realmin Menor nmero real positivo utilizvel pela mquina.
Realmax Maior nmero real positivo utilizvel pela mquina.

Caso o usurio necessite apagar alguma varivel da memria do MATLAB, isto pode ser
realizado utilizando-se o comando clear. Por exemplo:
a=10;
a
a =
10
clear a
a
??? Undefined function or variable 'a'.

Se a necessidade do usurio for de apagar todas as variveis que esto sendo
utilizadas deve-se utilizar o comando clear all. Se por outro lado, o usurio deseja a
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 12
listagem de todas as variveis que esto sendo utilizadas, basta utilizar o comando
who. Por exemplo:
>> a=10; b=a;
>> who
Your variables are:
a b
>>
Todo o texto depois do sinal de porcentagem (%) considerado comentrio. Alm disso,
pode-se colocar mais de um comando em uma linha, separando-os por vrgula ou ponto
e vrgula. A vrgula diz ao MATLAB para mostrar o resultado aps executar o comando.
J o ponto-e-vrgula dispensa a visualizao. Por exemplo:

a=10; b=20, % isto um comentrio
b =
20
a
a =
10
Quando se deseja continuar o comando na prxima linha, o sinal utilizado pelo MATLAB
representado por 3 pontos (...). Isso s funcionar se os pontos estiverem entre nomes
de variveis e operaes. Este comando no funciona para comentrios. Ou seja:
>> a=10; b=20;
>> c=a+...
b
c =
30
>>
O usurio pode interromper a execuo do MATLAB, a qualquer momento,
pressionando o Crtl-c. Para limpar o workspace o usurio deve utilizar o comando
clc.

2.1. Utilizando strings
O MATLAB entende como strings o conjunto de caracteres (vetor de caracteres)
colocados entre aspas simples. Assim, para acessar uma parte da varivel necessrio
listar a localizao dos caracteres. Ou seja:
>> s='esta variavel e uma string'
s =
esta variavel e uma string
>>
>> s(6:13), % retirando a palavra variavel da string s
ans =
variavel
>>

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 13

3. Utilizando funes matemticas elementares

A Tabela 3.1 apresenta uma listagem das principais funes matemticas que o
MATLAB possui. Vale ressaltar que o MATLAB trabalha apenas com radianos (2
radianos = 360).

Tabela 3.1: Principais funes matemticas utilizadas pelo MATLAB.
Funo Significado
acos(x)
Arco coseno.
acosh(x)
Arco coseno hiperblico.
asin(x)
Arco seno.
asinh(x)
Arco seno hiperblico.
atan(x)
Arco tangente.
atanh(x)
Arco tangente hiperblico.
cos(x)
Coseno
cosh(x)
Coseno hiperblico.
exp(x)
Exponencial: ex
gcd(x,y)
Mximo divisor comum entre os inteiros x e y.
log(x)
Logaritmo natural.
log10(x)
Logaritmo na base 10.
rem(x,y)
Resto da diviso de x por y.
round(x)
Arredondamento para o nmero inteiro mais prximo.
sign(x)
Funo sinal. Retorna o sinal do argumento x.
sin(x)
Seno
sinh(x)
Seno hiperblico.
sqrt(x)
Raiz quadrada.
tan(x)
Tangente
tanh(x)
Tangente hiperblica.


4. Trabalhando com vetores e matrizes
O MATLAB foi desenvolvido especialmente para trabalhar com representaes
matriciais. Desta forma, o usurio deve dar preferncia para este tipo de representao
quanto estiver utilizando o MATLAB, j que isto significa a realizao de clculos com
maior eficincia.
O MATLAB manipula vetores de uma maneira simples e intuitiva. Considere que se
deseja calcular a funo y = sen(x) em 0 <x . O primeiro passo criar um vetor com
todos os valores de x para os quais se deseja calcular y. Uma vez definido o vetor,
calculam-se os valores correspondentes de y. Ou seja:
x=[0 0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pi 0.6*pi 0.7*pi .8*pi .9*pi pi]
x =
Columns 1 through 7
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850
Columns 8 through 11
2.1991 2.5133 2.8274 3.1416
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 14
y=sin(x)
y =
Columns 1 through 7
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511
Columns 8 through 11
0.8090 0.5878 0.3090 0.0000

Para se resgatar um determinado elemento do vetor, basta indicar entre parnteses a
localizao do mesmo. Ou seja:

x=[0 0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pi 0.6*pi 0.7*pi 0.8*pi 0.9*pi
pi];
x(1)
ans =
0
x(11)
ans =
3.1416


Para ter acesso a blocos de componentes ao mesmo tempo, o MATLAB utiliza a
notao de dois pontos. Ou seja:

componentes de x, do primeiro ao quinto elemento:
x(1:5)
ans =
0 0.3142 0.6283 0.9425 1.2566

componentes de x, iniciando do stimo e indo at o final:
x(7:end)
ans =
1.8850 2.1991 2.5133 2.8274 3.1416


componentes de x, iniciando do terceiro, contanto regressivamente de um em um e
parando no primeiro:
x(3:-1:1)
ans =
0.6283 0.3142 0


4.1. Construindo vetores
Existem formas para construo de vetores que dispensam a tarefa de digitar termo a
termo. So elas:

cria um vetor que comea em zero e vai at o valor , incrementado 0,1*:
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 15
x=(0:0.1:1)*pi
x =
Columns 1 through 7
0 0.3142 0.6283 0.9425 1.2566 1.5708
1.8850
Columns 8 through 11
2.1991 2.5133 2.8274 3.1416


cria um vetor que comea em zero e vai at o valor com 11 elementos
utilizando a funo linspace. Os argumentos desta funo so:
linspace(primeiro_valor, ultimo_valor, numero_de_valores).

linspace(0,pi,11)
ans =
Columns 1 through 7
0 0.3142 0.6283 0.9425 1.2566 1.5708
1.8850
Columns 8 through 11
2.1991 2.5133 2.8274 3.1416


cria um vetor em escala logartmica que comea em 10
0
e vai at o valor 10
2
com
11 elementos utilizando a funo logspace. Os argumentos desta funo so:
logspace(primeiro_expoente, ultimo_expoente, numero_de_valores).

logspace(0,2,11)
ans =
Columns 1 through 7
1.0000 1.5849 2.5119 3.9811 6.3096 10.0000
15.8489
Columns 8 through 11
25.1189 39.8107 63.0957 100.0000


At agora foram construdos apenas vetores linhas. Todavia, muitas vezes se faz
necessria a utilizao de vetores colunas.
A maneira mais direta de construo de um vetor coluna especificando elemento por
elemento e separando os valores com ponto e vrgula:
a=[1; 2; 3]
a =
1
2
3

Uma alternativa a esta proposta transpor um vetor linha, j especificado,
transformando-o em um vetor coluna:

a=1:3
a =
1 2 3
b=a'
b =
1
2
3

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 16

Alm da forma de transposio vista anteriormente ( ), o MATLAB tem o recurso de
transposio pontuada ( .). Este comando interpretado como a transposio sem a
operao de conjugao complexa. Isto porque quando um vetor complexo, o
operador de transposio ( ) nos d a transposio do complexo conjugado, isto , o
sinal da parte imaginria mudado como parte da operao de transposio. J o
operador de transposio pontuada ( .) transpe o vetor mas no o conjuga. Vale
ressaltar que para vetores reais estes operadores so equivalentes. Ou seja:

>> a=(-4)^.5; b=[a a a]
b =
0.00 + 2.00i 0.00 + 2.00i 0.00 + 2.00i
>> b=[a a a]'
b =
0.00 - 2.00i
0.00 - 2.00i
0.00 - 2.00i
>> b=[a a a].'
b =
0.00 + 2.00i
0.00 + 2.00i
0.00 + 2.00i
>>


4.3. Construindo matrizes
Para a construo de matrizes no MATLAB utilizam-se ponto e vrgula para separar os
elementos de uma linha da outra:

g=[1 2 3 4; 5 6 7 8]
g =
1 2 3 4
5 6 7 8


4.4. Manipulando vetores e matrizes
Considerando-se vetores ou matrizes, a adio, a subtrao, a multiplicao e a diviso
por um escalar simplesmente aplica a operao a todos os elementos do vetor. Ou seja:

g=[1 2 3 4; 5 6 7 8];
2*g-1
ans =
1 3 5 7
9 11 13 15
g/2+1
ans =
1.5000 2.0000 2.5000 3.0000
3.5000 4.0000 4.5000 5.0000


MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 17
J as operaes entre vetores e/ou matrizes no so to simples. Quando dois vetores
ou matrizes possuem a mesma dimenso, a adio e a subtrao so realizadas
elemento a elemento pelo MATLAB. Ou seja:

g=[1 2 3 4; 5 6 7 8];
h=[1 1 1 1; 2 2 2 2];
g+h
ans =
2 3 4 5
7 8 9 10
g-h
ans =
0 1 2 3
3 4 5 6


Quando se deseja multiplicar duas matrizes, elemento por elemento, deve-se utilizar o
smbolo de multiplicao escalar pontuada (.*). O ponto que precede o asterisco,
smbolo padro de multiplicao, diz ao MATLAB para fazer a multiplicao elemento
por elemento. A multiplicao sem o ponto significa multiplicao matricial. Ou seja:

g=[1 2; 5 6];
h=[1 1; 2 2];
g.*h
ans =
1 2
10 12
g*h
ans =
5 5
17 17


Para a diviso de matrizes, elemento por elemento, deve-se utilizar o smbolo de diviso
escalar pontuada ./. Novamente o ponto que precede o smbolo padro de diviso diz
ao MATLAB para fazer a diviso elemento por elemento. A diviso sem o ponto significa
diviso matricial. Ou seja:

g=[1 2; 5 6];
h=[1 8; 2 4];
g./h
ans =
1.0000 0.2500
2.5000 1.5000
g/h
ans =
0 0.5000
-0.6667 2.8333



possvel elevar cada elemento de uma matriz a uma dada potncia. Para isto aplica-
se o operador .^n, onde n potncia que se deseja aplicar a cada elemento da matriz.
Ou seja:

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 18
g=[1 2; 5 6];
g.^2
ans =
1 4
25 36



A Tabela 4.4.1 fornece ainda a listagem de alguns comandos teis de manipulao
matricial.

Tabela 4.4.1: Comandos teis de manipulao matricial utilizados pelo MATLAB.
Funo Significado Exemplo
Considere em todos os exemplos:
(

=
4 3
2 1
A ; r=1
A(r,:)
Fornece a submatriz de A cujas linhas so definidas pelo vetor r e
que inclui todas as colunas.
A(r,:)
ans =
1 2
A(:,r)
Fornece a submatriz de A cujas colunas so definidas pelo vetor r
e que inclui todas as linhas.
A(:,r)
ans =
1
3
A(:)
Fornece todos os elementos de A em um vetor coluna,
percorrendo as colunas de A pela ordem crescente de seus
ndices.
A(:)
ans =
1
3
2
4


4.5. Comparando vetores e matrizes
Os comandos mais utilizados para comparao entre vetores e matrizes so listados na
Tabela 4.5.1.

Tabela 4.5.1: Comandos teis de comparao entre vetores e matrizes.
Funo Significado Exemplo
Considere em todos os exemplos:
(

=
4 3
2 1
A ;
(

=
2 5
6 1
B ;
(

=
4 3
2 1
C
isequal(A,B)
Varivel lgica: verdadeira se A e B so
idnticos.
isequal(A,B)
ans =
0
isequal(A,C)
ans =
1

ismember(A,B)
Varivel lgica: verdadeira quando os
elementos de A so tambm elementos de B.
ismember(A,B)
ans =
1 1
0 0
ismember(A,C)
ans =
1 1
1 1


MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 19
4.6. Realizando operaes matriciais
A Tabela 4.6.1 fornece as principais funes matriciais existentes no MATLAB.

Tabela 4.6.1: Principais funes matriciais existentes no MATLAB.
Funo Significado Exemplo
Considere em todos os exemplos:
(

=
4 3
2 1
A

det(A)
Calcula o determinante da matriz A.
det(A)
ans =
-2

d=eig(A)
[V,D]=eig(A)

Determina os autovalores e autovetores de
A.

d=eig(A)
d =
-0.3723
5.3723
[V,D]=eig(A)
V =
-0.8246 -0.4160
0.5658 -0.9094
D =
-0.3723 0
0 5.3723

inv(A)
Calcula a matriz inversa da matriz
inv(A)
ans =
-2.0000 1.0000
1.5000 -0.5000

poly(A)
Calcula a equao caracterstica
de A.

poly(A)
ans =
1.00 -5.00 -2.00

rank(A)
Determina o nmero de linhas e colunas
linearmente independentes de A.

rank(A)
ans =
2

svd(A)
Calcula a decomposio em valores
singulares.
svd(A)
ans =
5.4650
0.3660


4.7. Utilizando matrizes especiais
A Tabela 4.7.1 fornece algumas matrizes especiais existentes no MATLAB.

Tabela 4.7.1: Matrizes especiais existentes no MATLAB.
Funo Significado Exemplo
eye
Matriz identidade.
eye(3)
ans =
1 0 0
0 1 0
0 0 1

ones

Matriz onde todos os elementos
so iguais a 1.

ones(2)
ans =
1 1
1 1

rand
Matriz com elementos aleatrios
distribudos entre 0 e 1.
rand(2)
ans =
0.9501 0.6068
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 20

0.2311 0.4860


randn
Matriz com elementos aleatrios
distribudos que seguem a
distribuio normal e tm mdia
zero e varincia igual a 1
rand(3)
ans =
0.8913 0.0185 0.6154
0.7621 0.8214 0.7919
0.4565 0.4447 0.9218

zeros
Matriz onde todos os elementos
so iguais a 0.
zeros(2)
ans =
0 0
0 0


4.8. Ordenando matrizes
A ordenao dos elementos de um vetor ou de uma matriz pode ser realizada utilizando
o comando sort. A utilizao deste comando possibilita ainda o armazenamento da
localizao original dos dados. Assim:

>> a=rand(1,3)
a =
0.04389532534714 0.02718512299667 0.31268504808015
>> sort(a)
ans =
0.02718512299667 0.04389532534714 0.31268504808015
>> a=rand(4,3)
a =
0.01286257467300 0.03533832396916 0.01635493355000
0.38396728849430 0.61239548137302 0.19007458907973
0.68311596780460 0.60854036122399 0.58691847188467
0.09284246174092 0.01575981791975 0.05758108987829
>> [a_ordenado_l,ord]=sort(a(1,:)), % ordena a linha 1 de "a"
a_ordenado_l =
0.01286257467300 0.01635493355000 0.03533832396916
ord =
1 3 2

>> [a_ordenado_c,ord]=sort(a(:,2)), % ordena a coluna 2 de "a"
a_ordenado_c =
0.01575981791975
0.03533832396916
0.60854036122399
0.61239548137302
ord =
4
1
3
2



4.9. Utilizando matrizes multidimensionais
Para a utilizao de matrizes multidimensionais so necessrios 3 ndices ao invs dos
2 adotados durante a utilizao de matrizes bidimensionais. A Figura 4.8.1 mostra a
forma visual de interpretar matrizes multidimensionais.

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 21

Figura 4.8.1: Forma visual de interpretar matrizes multidimensionais.

As matrizes multidimensionais podem ser construdas e manipuladas utilizando os
mesmos comandos apresentados para as matrizes bidimensionais, desta forma:

>> M = rand(2,4,3)
M(:,:,1) =
0.49655244970310 0.82162916073534 0.81797434083925 0.34197061827022
0.89976917516961 0.64491038419384 0.66022755644160 0.28972589585624
M(:,:,2) =
0.34119356941488 0.72711321692968 0.83849604493808 0.37041355663212
0.53407901762660 0.30929015979096 0.56807246100778 0.70273991324038
M(:,:,3) =
0.54657115182911 0.69456724042555 0.79482108020093 0.52259034908071
0.44488020467291 0.62131013079541 0.95684344844488 0.88014220741133
>> M(1,1,1)
ans =
0.49655244970310


4.10. Utilizando listas
As listas (ou disposio em clulas, cell arrays) so formas especiais de representar de
matrizes. Neste tipo de representao, cada elemento da matriz pode conter matrizes
com diferentes dimenses. O exemplo abaixo ilustra a criao de uma lista.

>> a=1:3; b=rand(2,2); c=1; d={a c};
>> lista={a b c d}
lista =
[1x3 double] [2x2 double] [1] {1x2 cell}
>>


Para a manipulao dos elementos de uma lista tambm so utilizadas chaves e
parnteses como exemplificado abaixo.

>> a=1:3; b=rand(2,2); c=1; d={a c};
>> lista={a b c d};
>> lista{1}
ans =
1 2 3
>> lista{1}(1,2)
ans =
2
>>
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 22


4.11. Utilizando estruturas
As estruturas so matrizes especiais utilizadas pelo MATLAB para armazenar dados de
naturezas diferentes. As estruturas diferem das listas por possurem nomes que
identificam a localizao dos dados. O exemplo abaixo evidencia a utilizao de
estruturas.
>> resultado.alunos='maria';
>> resultado.notas=[9 8.5];
>> resultado
resultado =
alunos: 'maria'
notas: [9 8.50000000000000]
>> resultado(2).alunos='joao';
>> resultado(2).notas=[10 7];
>> resultado
resultado =
1x2 struct array with fields:
alunos
notas
>> resultado.alunos
ans =
maria
ans =
joao
>>


Uma outra forma de gerar estruturas utilizando o comando struct.

>> resultado=struct('alunos','maria','notas',[9 8.5]);
>> resultado
resultado =
alunos: 'maria'
notas: [9 8.50000000000000]
>> resultado.notas
ans =
9.00000000000000 8.50000000000000
>>


4.12. Utilizando matrizes esparsas

As matrizes esparsas so aquelas onde apenas alguns de seus elementos possuem
valores diferentes de zero. Neste caso, o armazenamento de toda a matriz representa
um desperdcio de espao de armazenagem e de poder computacional em operaes
aritmticas com zeros. No MATLAB possvel considerar a esparticidade de uma matriz
utilizando os comandos sparse e full.
O comando sparse armazena os elementos no nulos da matriz original,
desconsiderando os elementos iguais a zero. J o comando full rescreve a matriz
esparsa original. Ou seja:
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 23

>> clear all
>> X=[1 0 5 6 0 0 0; 0 0 0 0 1 0 0]
X =
1 0 5 6 0 0 0
0 0 0 0 1 0 0
>>
>>
>> S = sparse(X)
S =
(1,1) 1
(1,3) 5
(1,4) 6
(2,5) 1
>> whos
Name Size Bytes Class
S 2x7 80 sparse array
X 2x7 112 double array
Grand total is 18 elements using 192 bytes

>> X2=full(S)
X2 =
1 0 5 6 0 0 0
0 0 0 0 1 0 0

>> whos
Name Size Bytes Class
S 2x7 80 sparse array
X 2x7 112 double array
X2 2x7 112 double array
Grand total is 32 elements using 304 bytes
>>
>>




5. Analisando dados

A anlise de dados no MATLAB feita utilizando-se matrizes orientadas por coluna. As
diversas variveis so armazenadas em diferentes colunas e cada linha representa uma
observao diferente de cada varivel. As principais funes de anlise de dados so
apresentadas na Tabela 5.1

Tabela 5.1: Principais funes de anlise de dados.
Funo Significado Exemplo
Considere em todos os exemplos:
(
(
(

=
9 8 7
6 5 4
3 2 1
A
corrcoef(A)
Coeficientes de correlao >>

corrcoef(A)
ans =
1 1 1
1 1 1
1 1 1

cumprod(A)

Produto acumulativo das colunas de A.

cumprod(A)
ans =
1 2 3
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 24
4 10 18
28 80 162

cumsum(A)
Soma acumulativa ao longo das
colunas de A.


cumsum(A)
ans =
1 2 3
5 7 9
12 15 18

max(A)
Mximo ao longo das colunas de A.

max(A)
ans =
7 8 9

mean(A)
Mdia ao longo das colunas de A.

mean(A)
ans =
4 5 6

min(A)
Mnimo ao longo das colunas de A.


min(A)
ans =
1 2 3

prod(A)
Produto ao longo das colunas de A.
prod(A)
ans =
28 80 162

std(A)
Calcula o desvio padro ao longo das
colunas de A.

std(A)
ans =
3 3 3


sum(A)
Soma os elementos ao longo das
colunas de A.

sum(A)
ans =
12 15 18



6. Trabalhando com polinmios

No MATLAB, um polinmio representado por um vetor linha contendo seus
coeficientes em ordem decrescente. Por exemplo, o polinmio x
4
12.x
3
+ 25.x + 116
representado da seguinte forma:
p=[1 -12 0 25 116]
p =
1 -12 0 25 116


Vale ressaltar que os termos com coeficientes iguais a zero devem ser includos.
Atravs do uso do comando roots possvel encontrar as razes de um dado
polinmio. Ou seja:
p=[1 -12 0 25 116];
r=roots(p)
r =
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 25
Dadas as razes do polinmio, tambm possvel construir o polinmio associado. Para
isto, utilizado o comando poly:
pp=poly(r)
pp =
1.0000 -12.0000 0 25.0000 116.0000


A multiplicao de polinmios realizada pelo comando conv. Desta forma,
considerando o produto de dois polinmios f
1
(x) = x
3
+ 2.x
2
+ 3.x + 4 e f
2
(x) = x
3
+ 4.x
2
+
9.x + 16 temos:

f1=[1 2 3 4]; f2=[1 4 9 16];
f3=conv(f1,f2)
f3 =
1 6 20 50 75 84 64


O resultado desta operao o polinmio f
3
(x) = x
6
+ 6.x
5
+ 20.x
4
+ 50.x
3
+ 75.x
2
+ 84.x
+ 64.
A funo deconv utilizada para dividir um polinmio por outro. Considerando-se as
funes f
3
(x) e f
2
(x) anteriores, temos:

[q,r]=deconv(f3,f2)
q =
1 2 3 4
r =
0 0 0 0 0 0 0


Como resultado, o comando retorna o polinmio resultante q, que neste caso a funo
f
1
(x), e o resto da diviso r.
O MATLAB possui a funo polyder que utilizada na obteno de derivadas de
polinmios. Ou seja:


f1=[1 2 3 4];
d=polyder(f1)
d =
3 4 3


7. Confeccionando grficos

7.1. Grficos bidimensionais

Uma das funes que o MATLAB possui para elaborao de grficos a funo
fplot. Este comando calcula a funo a ser representada e certifica-se de que suas
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 26
propriedades estejam bem representadas. Como entrada, o fplot precisa da funo
a ser representada (como varivel string) e do domnio do grfico. Ou seja:
f='2*exp(-x).*sin(x)';
fplot(f,[0 8])


Outra funo utilizada para confeccionar grficos bidimensionais, onde f = f(x), a
funo ezplot. Esta funo tambm tem como argumentos de entrada uma funo
string e um intervalo de variao. Se f = f(x,y), o comando ezplot representa a funo
considerando f(x,y)=0.
>> ezplot('x^3 + y^3 - 5*x*y + 1/5',[-3,3])

O comando mais comum utilizado para elaborao de grficos bidimensionais no
MATLAB o comando plot. Esse comando cria grficos de vetores de dados em
eixos adequados e conecta os pontos a linhas retas. Por exemplo:
x=linspace(0, 2*pi, 30);
y=sin(x);
plot(x,y)


possvel utilizar o comando plot para traar mais de um grfico no mesmo sistema
de eixos. Ou seja:
x=linspace(0, 2*pi, 30);
y=sin(x);
z=cos(x);
plot(x,y,x,z)


Durante a confeco de um grfico no MATLAB , o usurio pode escolher a cor e o
estilo das linhas bem como o marcador utilizado. A Tabela 7.1 mostra os cdigos
utilizados e o exemplo abaixo evidencia a utilizao dos mesmos.

x=linspace(0, 2*pi, 30);
y=sin(x);
z=cos(x);
plot(x,y,'b:p',x,z,'m+--')


O usurio pode ainda modificar a cor de fundo do grfico utilizando o comando
colordef. Neste caso, sugere-se ao usurio consultar o help na rea de trabalho do
MATLAB ( help colordef).
O comando grid on adiciona linhas de grade ao grfico nas posies dos eixos que
h marcadores. O comando grid off remove as linhas de grade. Vale ressaltar que
o MATLAB comea sempre com grid off.

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 27
Tabela 7.1: Cdigos para marcadores, cores e tipos de linha na confeco de grficos
no MATLAB.
Cores de linhas Marcadores Tipo de linha
smbolo cor Smbolo Marcador Smbolo Tipo de linha
B
azul
.
ponto
-
linha contnua
G
verde
O
crculo
:
linha pontilhada
R
vermelho
x
x
-.
traos e pontos
C
ciano
+
+
--
linha tracejada
M
magenta
*
estrela

Y
amarelo
s
quadrado

K
preto
d
Losango

W
branco
<
tringulo para a esquerda


>
tringulo para a direita


p
pentagrama


h
hexagrama


Para atribuir nomes aos eixos, pode ser utilizado os comandos comando xlabel e
ylabel. O comando title adiciona um ttulo ao grfico. Ou seja:
x=linspace(0, 2*pi, 30);
y=sin(x);
plot(x,y,'r-.>')
grid on
xlabel('x')
ylabel('seno(x)')
title('grfico')
grid off


Para criar legendas no grfico, o usurio pode utilizar os comandos legend ou
gtext. Ou seja:
x=linspace(0, 2*pi, 30);
y=sin(x);
z=cos(x);
plot(x,y,x,z)
legend('seno(x)','coseno(x)')
legend off % retira a legenda
gtext('seno(x)')
gtext('coseno(x)')



possvel criar uma janela com mais de um sistema de eixos. Para isto, utilizado o
comando subplot(m,n,p) . Este comando subdivide a janela de grficos em uma
matriz com m por n regies. A varivel p indica a localizao do grfico. Ou seja:
x=linspace(0, 2*pi, 30);
y=sin(x);
z=cos(x);
a=2*sin(x).*cos(x);
b=sin(x)./(cos(x)+eps);
subplot(2,2,1)
plot(x,y)
axis([0 2*pi -1 1]) % define os valores: mnimos e mximos p/ x e y
title('seno(x)')
subplot(2,2,2)
plot(x,z), axis([0 2*pi -1 1]), title('coseno(x)')
subplot(2,2,3)
plot(x,a), axis([0 2*pi -1 1]), title('2.seno(x).coseno(x)')
subplot(2,2,4)
plot(x,b), axis([0 2*pi -20 20]), title('seno(x)/coseno(x)')
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 28

Alm dos grficos j elaborados, outros recursos grficos bidimensionais so
disponveis no MATLAB. So eles:

grfico tipo torta:
a=[.05 .15 .5 .05 .05 .2]; pie(a)
pie(a, a==max(a)) % traa o grfico separando a maior fatia



grficos com escalas diferentes:

x=-2*pi:pi/10:2*pi;
y=sin(x); z=2*cos(x);
subplot(2,1,1),plot(x,y,x,z), title('escalas iguais'),
subplot(2,1,2),plotyy(x,y,x,z), title('escalas diferentes'),


grficos de barras:
x=-2.9:0.2:2.9;
y=exp(-x.*x);
subplot(2,2,1), bar(x,y),
subplot(2,2,2), bar3(x,y),
subplot(2,2,3), stairs(x,y),
subplot(2,2,4), barh(x,y),



grfico com barras de erros:
x=linspace(0,2,21);
y=erf(x); % y a funo erro de x
e=rand(size(x))/10; % contm valores de erros
aleatrios
errorbar(x,y,e)

grficos com pontos selecionados manualmente:
x=linspace(-2*pi, 2*pi,60);
y=sin(x).^2./(x+eps);
plot(x,y)
[a,b]=ginput(5) % toma 5 pontos
hold on % Para escrever por cima do grfico anterior
plot(a,b,'mo')
hold off % Libera o grfico anterior para ser eliminado



7.2. Grficos tridimensionais
O comando plot para grficos bidimensionais estendido para os tridimensionais
com o comando plot3. Este comando cria grficos de linhas tridimensionais.
t=linspace(0,10*pi,1000);
plot3(sin(t),cos(t),t)



MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 29
O comando meshgrid utilizado para gerar matrizes x e y, contendo linhas e colunas
repetidas. Esse par de matrizes, x e y, pode ser ento usado para calcular funes de
duas variveis usando os recursos do MATLAB de matemtica vetorial. Uma vez
estabelecidos os valores dos pontos a serem representados em um grfico
tridimensional, o comando mesh pode ser utilizado para gerar um grfico de rede e o
comando surf pode ser utilizado para gerar uma superfcie. J os comandos
contour e contour3 geram as curvas de nvel. Uma forma similar do comando
contour o comando pcolor onde so utilizadas cores distintas para delimitar
regies de alturas diferentes. Ou seja:

>> x=-3:0.1:3; y=x; [X,Y]=meshgrid(x,y); Z=X.^3 + Y.^3 - 5*X.*Y + 1/5;
>> mesh(X,Y,Z)
>> surf(X,Y,Z)
>> contour(X,Y,Z,40)
>> contour3(X,Y,Z,40)
>> pcolor(X,Y,Z)


possvel para o usurio trocar as cores padro utilizadas pelo MATLAB na confeco
de grficos. Para isto, utiliza-se dos mapas de cores que so matrizes com trs colunas.
Cada linha define uma cor particular, usando os nmeros 0 a 1.
>> x=-3:0.1:3; y=x; [X,Y]=meshgrid(x,y); Z=X.^3 + Y.^3 - 5*X.*Y + 1/5;
>> surf(X,Y,Z), colormap([1 1 1]) % branco
>> surf(X,Y,Z), colormap([.5 .5 .5]) % cinza
>>


O usurio pode ainda escolher um dos mapas de cores j existente no MATLAB (Tabela
7.2.1).

Tabela 7.2.1: Mapas de cores utilizadas pelo MATLAB.
Funo Descrio do mapa de cores
Hsv
Escalar com cores saturadas.
Hot
Preto-vermelho-amarelo-branco
Gray
Escalar linear de tons de cinza.
Bone
Escala de tons de cinza levemente azulados.
Copper
Escala linear de tons acobreados.
Pink
Tons pastis de rosa.
White
Mapa de cores totalmente branco.
Flag
Vermelho, branco, azul e preto alternados.
Jet
Uma variante do mapa hsv
Prism
Mapa de cores denominado prisma.
Cool
Tons de ciano e magenta.
lines
Mapa de cores que usa as mesmas cores do comando plot.
colorcube
Mapa de cores denominado cubo colorido.
summer
Tons de amarelo e verde.
autumn
Tons de vermelho e amarelo.
winter
Tons de azul e verde.
spring
Tons de magenta e amarelo.


MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 30
>> x=-3:0.1:3; y=x; [X,Y]=meshgrid(x,y); Z=X.^3 + Y.^3 - 5*X.*Y + 1/5;
>> surf(X,Y,Z), colormap([summer])
>> surf(X,Y,Z), colormap([hot])


Para acrescentar uma legenda no grfico tridimensional, o usurio deve utilizar o
comando colorbar.
>>
>> x=-3:0.1:3; y=x; [X,Y]=meshgrid(x,y); Z=X.^3 + Y.^3 - 5*X.*Y + 1/5;
>> surf(X,Y,Z), colormap([winter]), colorbar
>>



8. Trabalhando com tempo


O MATLAB possui vrias funes para manipular datas e horas. A funo clock , por
exemplo, fornece a data e a hora atuais em um vetor.

>> T=clock
T =
1.0e+003 *
2.003 0.001 0.009 0.010 0.031 0.057
>>


Os elementos que retornam no vetor T ao se aplicar o comando clock so: ano,ms,
dia do ms, hora, minutos e segundos. J a funo date fornece a data atual como
um texto no formado dia-ms-ano. Ou seja:
>> date
ans =
09-Jan-2003


Os comandos tic e toc podem ser utilizados para cronometrar uma operao. Ou
seja:
>> tic; plot(rand(5)); toc
elapsed_time =
0.11000000000000


A funo cputime fornece o tempo, em segundos, da Unidade Central de
Processamento (CPU) usado pelo MATLAB desde o incio da sesso corrente. Ou seja:
>> to=cputime; plot(rand(5)); cputime-to
ans =
0.11000000000058



MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 31
9. Obtendo modelos empricos

O MATLAB possui funes que possibilitam a obteno de diferentes modelos empricos
tais como: modelos ARX, ARMAX, redes neuronais e ainda modelos obtidos via
regresso linear e no linear. Nesta apostila, a utilizao da regresso linear
exemplificada.

9.1. Regresso linear
O comando utilizado pelo MATLAB para a realizao de regresso linear denominado
regress. Para utilizar este comando o usurio deve fornecer a matriz com as
variveis independes e um vetor com a varivel dependente. Cada linha da matriz ou do
vetor deve corresponder a uma observao. Caso o modelo linear possua uma
constante, a matriz com as variveis independentes deve possuir uma ltima coluna
com valores iguais a 1. O exemplo abaixo ilustra a utilizao deste comando:

>> clear all
>> x=[(100:200)'+randn(101,1) (300:400)'+randn(101,1) ones(101,1)];
>> % matriz com variaveis independentes
>> P1=2; P2=1; P3=100; y=P1*x(:,1)+P2*x(:,2)+P3; y=y+randn(101,1);
>> % vetor com variaveis dependentes
>> [P,Pin,R,Rin,stat]=regress(y,x,0.05);
>> P % parametros do modelo
P =
1.93344230551157
1.06793100944515
86.20341131968449

>> Pin % intervalo de confiana para os parametros
Pin =
1.0e+002 *
0.01813296312069 0.02053588298954
0.00947622221814 0.01188239797076
0.62069772941691 1.10337049697678
>> stat
stat =
1.0e+005 *
0.00000999899004 4.85119348155784 0
>>

Os intervalos de confiana para os parmetros do modelo foram calculados
considerando um nvel de confiana igual a 95%. Isto porque usamos o valor 0,05 como
terceiro argumento de entrada para a funo regress.
O 5
o
argumento de sada, neste caso denominado stat, fornece respectivamente: o
valor de R
2
, o resultado do teste de hiptese F (testa-se se todos os coeficientes do
modelo obtido so iguais a zero) e o p-valor associado a este teste. Durante a realizao
do teste F assume-se a existncia de uma constante no modelo. Neste caso, o modelo
obtido consegue descrever cerca de 99,9899% da variabilidade experimental e podemos
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 32
considerar, com grande segurana, que todos os coeficientes do modelo no so iguais
a zero.
Os erros verificados entre os valores preditos pelo modelo e os reais, bem como o
intervalo de confiana para estes valores so fornecidos atravs do 3
o
e do 4
o

argumento de sada da funo regress. Neste caso: R e Rin. Uma melhor
visualizao desta informao pode ser obtida atravs do comando rcoplot como
exemplificado abaixo.
>> rcoplot(R, Rin)


Neste caso, todos os resduos que no atingirem o valor zero so considerados outliers.
O MATLAB tambm possui funes destinadas realizao de regresses no lineares.
Neste caso, a soma dos quadrados dos resduos, verificados entre os valores reais e
preditos pelo modelo, minimizada utilizando um mtodo de otimizao Quasi Newton
(Levenberg-Marquardt). Para mais detalhes sugere-se a consulta ao comando
nlinfit. (help nlinfit).

10. Iniciando um programa

Todos os comandos descritos anteriormente podem ser utilizados durante a elaborao
de um programa em MATLAB.
Antes de comear a programar, voc deve escolher qual o diretrio de trabalho. A
programao em MATLAB realizada atravs da elaborao de arquivos tipo m.
Sendo assim, uma vez escolhido o diretrio de trabalho, voc deve abrir um arquivo m
seguindo o seguinte caminho: File New M-file. Neste arquivo deve ser escrito o
programa.
Uma vez escrita a rotina a ser executada, deve-se salvar o arquivo. Para rodar a rotina,
deve-se digitar o nome do arquivo tipo m no workspace do MATLAB.
O MATLAB possui diversas funes que so particularmente apropriadas para o uso em
arquivos tipo m. Estas funes so apresentadas na Tabela 10.1.

Tabela 10.1: Principais funes utilizadas em arquivos tipo m.
Varivel Significado
Disp(texto)
Mostra o texto escrito entre as aspas.
Input
Solicita ao usurio que fornea algum dado de entrada.
Pause
Suspende a execuo at que o usurio pressione alguma tecla.
Pause(n)
Suspende a execuo por n segundos.

Exemplo:
1. Abra um arquivo novo tipo m;
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 33

2. Digite:
% Primeiro programa
clear all %limpa toda a memria
disp('Rodando programa ...');
n=input('Qual o valor final de x desejado?');
x=0:n;
y=x.^2;
plot(x,y);
pause(2)
xlabel('x'); ylabel ('y');


3. Salve o programa com o nome prog1;
4. V rea de trabalho do MATLAB e digite prog1.
A(s) primeira(s) linha(s) comentada(s) existente(s) no arquivo .m (so) exibida(s) caso
o usurio utilize o comando help + nome do arquivo. Ou seja:

>> help prog1
Primeiro programa
>>


11. Utilizando comandos de fluxo e operadores lgicos

11.1. Utilizando a funo for

Os loops for possibilitam que uma srie de comandos seja repetida por um nmero de
vezes fixo e predefinido. Vale ressaltar que o comando for no pode ser encerrado
atribuindo-se valores ao contador (no exemplo n) dentro do loop.

Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:
clear all
for n=1:10
x(n)=n/2;
n=10; % ao final do primeiro clculo de x n = valor maximo
end
x


3. Salve o programa com o nome prog2;
4. V rea de trabalho do MATLAB e digite prog2.
5. A resposta obtida ser:
prog2
x =
Columns 1 through 7
0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 34
Columns 8 through 10
4.0000 4.5000 5.0000



Naturalmente, possvel a utilizao de mais de uma estrutura for.


Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:

clear all
for n=1:5
for m=5:-1:1
A(n,m)=n^2+m^2;
end
disp(n)
end
A


3. Salve o programa com o nome prog3;
4. V rea de trabalho do MATLAB e digite prog3.
5. A resposta obtida ser:

prog3
1
2
3
4
5
A =
2 5 10 17 26
5 8 13 20 29
10 13 18 25 34
17 20 25 32 41
26 29 34 41 50


11.2. Utilizando a funo while
Os loops while executam um grupo de comandos um nmero indefinido de vezes.


Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:
clear all
n=1;
while n<10
x(n)=1;
n=n+1;
end
x


MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 35
3. Salve o programa com o nome prog4;
4. V rea de trabalho do MATLAB e digite prog4.
5. A resposta obtida ser:
prog4
x =
1 1 1 1 1 1 1 1 1


11.3. Utilizando a funo if-else-end
Quando aes devem ser executados condicionalmente, com base em um teste
relacional, so utilizados comandos if-else-end. Como no comando for, possvel
utilizar vrios comandos if-else-end simultaneamente.
Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:
clear all
macas=10; custo=macas*10;
if macas>5
custo=0.8*custo; % desconto de 20%
end
custo


3. Salve o programa com o nome prog5;
4. V rea de trabalho do MATLAB e digite prog5.
5. A resposta obtida ser:
prog5
custo =
200


Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:
clear all
m=5
if m==10;
disp('m igual a 10');
elseif m<10;
disp('m menor que 10');
else m~=10;
disp('m diferente de 10');
end

3. Salve o programa com o nome prog6;
4. V rea de trabalho do MATLAB e digite prog6.
5. A resposta obtida ser:
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 36
>> prog6
m =
5
m menor que 10
>>


Observao importante: Como j mencionado anteriormente, o MATLAB um
programa desenvolvido para trabalhar com matrizes. Sendo assim, quando se deseja
um loop onde o objetivo calcular uma expresso diversas vezes, mais eficiente
trabalhar utilizando notao matricial. Por exemplo: o prog2.m seria mais eficiente se o
loop fosse eliminado e a varivel x fosse definida da seguinte forma: x=0.5*(1:10).

12. Resolvendo um sistema de equaes algbricas

No MATLAB a funo utilizada para resolver sistemas de equaes algbricas no
lineares denominada fsolve e se localiza no toolbox de otimizao. Para mais
detalhes a respeito desta funo, sugere-se consultar o help digitando help fsolve na
pgina principal do MATLAB.
O mtodo padro, utilizado para resoluo do sistema pelo comando fsolve, o
Gauss-Newton com um mtodo misto (quadrtico e cbico) de busca em linha. Caso o
usurio prefira, pode ser utilizado o mtodo de Levenberg-Marquardt em alternativa ao
Gauss-Newton.

Exemplo:
Considere o sistema de equaes algbricas no lineares apresentado abaixo (12.1):

= +
=

0 e x 2 x
0 e x x 2
2
1
x
2 1
x
2 1
(12.1)

Para resolver este sistema no MATLAB, realize as seguintes tarefas:

1. abra um novo arquivo m e escreva:
function F=fun1(x)
F(1)=2*x(1)-x(2)-exp(-x(1));
F(2)=-x(1)+2*x(2)-exp(-x(2));


2. salve o arquivo como fun1;
3. abra um segundo arquivo m e escreva:
clear all
x0=[-5 -5]; % estimativas iniciais para x(1) e x(2)
options(1)=1; % p/ mostrar detalhes sobre o clculo que ser realizado
x=fsolve('fun1',x0,options) % chamada da rotina que resolve o sistema


4. salve este segundo arquivo como teste1;
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 37
5. v rea de trabalho do MATLAB e digite teste1. O programa retornar o seguinte
resultado:
teste1
f-COUNT RESID STEP-SIZE GRAD/SD
3 47071.2 1 -9.41e+004
8 966.828 1 -1.81e+003
15 1.99465 3.85 5.6
20 0.000632051 0.895 -0.0867
25 1.39647e-015 0.998 -1.89e-009
Optimization Terminated Successfully

x =
0.5671 0.5671


13. Resolvendo um sistema de equaes diferenciais

O MATLAB possui diversas funes destinadas resoluo de sistemas de equaes
diferenciais ordinrias. Nesta apostila utilizaremos a funo ode23. Para mais detalhes
a respeito destas funes, sugere-se consultar o help digitando help ode23 na rea de
trabalho do MATLAB.
O mtodo padro utilizado para resoluo do sistema de equaes diferenciais pelo
comando ode23 o Runge Kutta.

Exemplo:

Considere o sistema de equaes diferenciais apresentado por Simmons (1988)
descrito em 13.1:

+ =
+ =
y 2 x 3
dt
dy
y 2 x
dt
dx
(13.1)
Assuma as condies iniciais apresentadas pela equao (13.2):
t = 0: x = 2 y = 3 (13.2)

Para resolver este sistema no MATLAB, realize as seguintes tarefas:
1. abra um novo arquivo m e escreva:
function [dy]=fun2(t,y)
dy(1)=y(1)+2*y(2);
dy(2)=3*y(1)+2*y(2);
dy=[dy(1);dy(2)];


2. salve o arquivo como fun2;
3. abra um segundo arquivo m e escreva:
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 38
clear all
yo=[2 3]; % condio inicial
tspan=[0 1]; % intervalo no qual ser realizada a integrao [de 0 1]
[t,y]=ode23('fun2',tspan,yo);
plot(t,y);
xlabel('tempo');
ylabel('variveis x e y');
legend(['x(t)';'y(t)'])


4. salve este segundo arquivo como teste2;
5. v rea de trabalho do MATLAB e digite teste2. O programa retornar como
resultado um grfico apresentando a evoluo das funes x(t) e y(t) de 0 a 1.

De acordo com Simmons (1988) o sistema apresentado (13.1) possui a soluo analtica
descrita pela equao 13.3. Esta soluo confere com a soluo numrica apresentada
pelo programa.

=
=

t 4
t 4
e 3 y
e 2 x
(13.3)
SIMMONS, G. F., Clculo com Geometria Analtica, Vol. 2, 1 ed. So Paulo,McGraw-Hill, 1988




14. Como saber mais sobre o MATLAB?

O MATLAB possui uma biblioteca com vrios arquivos tipo pdf. Cada um destes
arquivos diz respeito a um toolbox do MATLAB. A seguir apresentada uma listagem
com a indicao de qual arquivo deve ser consultado pelo usurio, se o mesmo
necessitar aprofundar seus conhecimentos sobre os tpicos apresentados nesta
apostila. Alm disso, buscou-se adicionar alguns assuntos de interesse para
profissionais da engenharia que no so tratados neste material. Parte da literatura
citada foi utilizada para a confeco desta apostila.

Tabela 14.1: Arquivos pdf recomendados.
Assunto Arquivo pdf
Comandos bsicos de utilizao, descrio do
programa
getstart.pdf The Language of Technical
Computing, Getting Started with
MATLAB, 136 pginas, 6a verso,
2000
Tratamento estatstico de dados (regresso
linear, ANOVA, regresso no linear, matriz
de correlao, planejamento fatorial, PCA)
stats_tb.pdf

Statistics Toolbox,
560 pginas, 3
a
verso, 2000
Controle de processos usingcontrol.pdf Control System Toolbox,
591 pginas, 1a verso, 2000
Controle preditivo de processos mpc.pdf Model Predictive Control Toolbox,
250 pginas, 1a verso, 1998
Resoluo de sistemas de equaes
diferenciais parciais
pde.pdf Partial Differential Equation Toolbox,
284 pginas, 1997
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 39

Redes neuronais nnet.pdf Neural Networks Toolbox,
846 pginas, 4a veso, 2000

Identificao de processos (modelos ARX,
ARMAX,)
ident.pdf System Identification Toolbox,
368 pginas,5a verso, 2000

Otimizao optim_tb.pdf Optimization Toolbox,
330 pginas, 2a verso, 2000
Utilizao simultnea do Excel e do MATLAB exlink.pdf Excel Link ,
74 pginas, verso 1.1.2, 1999


15. Exerccios resolvidos

Exerccio 1 - Dinmica de Populaes

Os arquivos-m a seguir contm os comandos necessrios para solucionar o problema
de dinmica de populaes. Para fcil utilizao o cdigo do arquivo deve ser gravado
no diretrio do MATLAB com o nome runpop.m
Primeiramente vamos criar o que chamaremos de programa principal
(runpop.m),utilizaremos este nome pois este arquivo chamar o arquivo subseqente
(pop.m) que funciona neste caso como funo.
Programa principal
% leitura dos dados iniciais para um sistema de edo 2x2
%initial = [0 0.25];
clg
%axis;
initial(1) = input('Primeiro dado inicial da presa ');
initial(2) = input('Segundo dado inicial do predador ');
% Intervalo de tempo usado [ti,tf]
ti = input('Tempo inicial ');
tf = input('Tempo final ');
% Constantes referentes a presa e ao predador
%k1 = input('Taxa de nascimento da presa ');
%k2 = input('Taxa de mortandade da presa ');
%k3 = input('Taxa de nascimento do predador ');
%k4 = input('Taxa de mortandade do predador ');

k1 = 3.
k2 = 0.002
k3 = 0.0006
k4 = 0.5
[x, num_y] = ode23('pop',ti,tf,initial);
subplot(211), plot(x,num_y(:,1),'- g'),...
title('Populacao da Presa'),xlabel('t'),grid,...
subplot(212),plot(x,num_y(:,2),'- g'),...
title('Populacao do Predador'),xlabel('t'),grid

Funo pop (Salvar como pop.m )

function xf = pop (t,x)
global k1 k2 k3 k4
k1=3.;
k2=0.002;
k3=0.0006;
k4=0.5;
xf(1)= k1*x(1)-k2*x(1)*x(2);
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 40
xf(2)= k3*x(1)*x(2)-k4*x(2);

Visualizando a soluo
Agora que j criamos os arquivos necessrios para a soluo do problema, s digitar
no prompt do MATLAB

>> runpop

sero pedidos alguns dados como populao inicial de presa, predadores, tempo inicial
e final. Para os dados
Populao inicial da presa = 0,8
Populao inicial do predador = 0,2
Tempo Inicial = 0
Tempo Final = 50

O resultado ser exibido graficamente, apresentando a relao entre crescimento da
presa em relao ao predator e vice-versa.

Exemplo 2 - Trajetria de uma bola de tnis com top spin
Os arquivos-m a seguir contm os comandos necessrios para solucionar e
disponibilizar visualmente o problema da trajetria de tnis em diferentes casos.
Veja o cdigo do programa principal que ser salvo com o nome tenis.m (Preste
ateno no diretrio onde esto sendo gravado os arquivos; se no quiser ter
problemas, salve todos os arquivos no diretrio do MATLAB).
Programa Principal
% Problema para a trajetria de uma bola de tnis viajando no vcuo,
% e no ar na presena de um spin (rotao)
% tenisV = caso no vcuo
% As 4 funes tenisA = caso no ar sem spin
% utilizadas so : tenisAsp = caso no ar com rotao positiva
% tenisAfs = caso no ar com rotao
negativa
% Variveis que sero usadas pelas funes com os campos vetoriais
global g alpha w etha
% Inicializando as variveis
% Constantes bsicas em unidades MKS
clg
g = 9.81; d = 0.063; m = 0.05; rho = 1.29;
alpha = pi*d^2/(8*m)*rho;
etha = 1;
w = 20;
% Condies iniciais
h = 1; v0 = 25; theta = pi/180*15;
xin = [0, h, v0*cos(theta), v0*sin(theta)];
% Tempo de vo no vcuo
tmaxid = (xin(4) + sqrt(xin(4)^2 + 2*g*xin(2)))/g;
% soluo no vcuo
[tV, xV] = ode23('tenisV',0,tmaxid,xin);
% soluo no ar sem spin

[tA, xA] = ode23('tenisA',0,tmaxid,xin);
% soluo com spin
[tAsp, xAsp] = ode23('tenisAsp',0,tmaxid,xin);
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 41
% Preparando a sada grfica do problema
N = max(xV(:,1)); x =0:N/100:N;
axis([0, max(xV(:,1)), 0 , max(xV(:,2))])
hold % comando que permite sobrepor os trs grficos (plots) seguintes
%1 plot(x, spline(xV(:,1), xV(:,2), x), ':g');
%2 plot(x, spline(xA(:,1), xA(:,2), x), '-- g');
%3 plot(x, spline(xAsp(:,1), xAsp(:,2), x), '-w');
plot(xV(:,1), xV(:,2), ':g');
plot(xA(:,1), xA(:,2), '-- g');
plot(xAsp(:,1), xAsp(:,2), '-w');

Funo tenisV.m
Funo que calcula o campo vetorial para a bola no vcuo.
function xdot = tenisV(t,x)
global g
g=9.81;
xdot(1) = x(3);
xdot(2) = x(4);
xdot(3) = 0;
xdot(4) = -g;

Funo tenisA.m
Funo que calcula o campo vetorial para a bola no ar sem rotao.

function xdot = tenisA(t,x)
%sem spin a constante de Magnus CM e ZERO.
global g alpha
v = sqrt(x(3)^2+x(4)^2);
xdot(1) = x(3);
xdot(2) = x(4);
xdot(3) = -alpha*0.508*x(3)*v;
xdot(4) = -g -alpha*0.508*x(4)*v;

Funo tenisAsp.m
Funo que calcula o campo vetorial para a bola no ar com rotao.
function xdot = tenisAsp(t,x)
global g alpha w etha
v = sqrt(x(3)^2+x(4)^2);
% clculo do campo levando em conta as constantes de arraste CD
% e a de Magnus CM
aux1 = (0.508 +1/(22.503 + 4.196*(v/w)^0.4))*alpha*v;
aux2 = etha*w/(2.022*w + 0.981*v)*alpha*v;
xdot(1) = x(3);
xdot(2) = x(4);
xdot(3) = -aux1*x(3) + aux2*x(4);
xdot(4) = -g -aux1*x(4) - aux2*x(3);

Visualizando a soluo
Agora que j criamos os arquivos necessrios para a soluo do problema, s digitar
no prompt do MATLAB
>> tenis

Ento obteremos um grfico que ilustra a trajetria da bola de tnis nos 3 casos que
foram estudados:
1- A linha pontilhada indica a trajetria da bola no vcuo.
2- A linha tracejada indica a trajetria da bola no ar com rotao.
3- A linha contnua indica a trajetria da bola no ar com rotao.

MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 42

Exerccios

Srie A

1) Considere os resultados experimentais apresentados na Tabela A:

Tabela A: Resultados experimentais.
Experimento Concentraes: Ca e Cb
1 0,5 0,8
2 0,4 0,75
1.1) armazene os dados da Tabela A em uma matriz bidimensional;
1.2) armazene os dados da Tabela A em uma matriz multidimensional.


2) Crie uma matriz de dimenso 4x4 e a chame de A. (Sugesto: crie uma matriz com nmeros
aleatrios).
2.1) apague a 2 linha de A;
2.2) apague a 3 coluna de A.


Srie B

1) Represente graficamente as seguintes funes:
1. z = -x
2
+ 2
.
y
2
onde 10< x <10, 10< y <10
2. z = -x
2
+ 2
.
y
2
+ 5
.
x
.
sen(y) onde 10< x <10, 10< y <10

Srie C

1) Considere o seguinte problema:

Uma indstria produtora de alumnio deseja conhecer a influncia das variveis razo
Al
2
O
3
/NaOH e temperatura de reao sobre o teor de Na
2
O presente na alumina. Utilizando os
dados operacionais disponveis na Tabela C proponha um modelo linear que descreva o
processo.
Tabela C: Dados operacionais.
Teor de Na2O (p/p) Al2O3/NaOH Temperatura de reao (oC)
0,43 0,647 77,1
0,39 0,638 78,3
0,44 0,651 76,0
0,42 0,648 77,9
0,43 0,640 74,1
0,42 0,643 74,6
0,41 0,643 76,0
0,46 0,651 73,3
0,42 0,650 78,6
0,40 0,639 78,7
Este problema originalmente apresentado por: WERKEMA, M. C. C., AGUIAR, S., Anlise de
Regresso: Como entender o relacionamento entre as variveis de um processo, 1 ed. Belo Horizonte,
Fundao Christiano Ottoni, 1996. Nesta apostila utilizada uma verso simplificada do problema original.
MATLAB Programa de Engenharia de Processos/NDTR/UNIT pg. 43

Srie D

1) Considere o reator bioqumico descrito na Figura D, onde x
1
representa a biomassa presente
no reator e x
2
o substrato. O reator possui um volume constante (Vr) uma vez que as vazes de
alimentao e de sada so iguais (F). A corrente de alimentao possui concentrao de
substrato igual a x
2i
e uma concentrao de biomassa igual a zero.

Figura D: Representao esquemtica do reator bioqumico.

Bequette (1998) prope o modelo descrito pela equao (D.1) para o processo:

( )
( )

=

=
=
r
1
2 i 2
2
1
1
V
F
D
Y
x
x x D
dt
dx
x D
dt
dx
(D.1)
onde Y a relao constante entre as taxas de gerao de biomassa e o consumo de
substrato e o coeficiente de taxa de crescimento descrito pela equao (D.2).
2
2 1 2 m
2 max
x k x k
x
+ +

= (D.2)

Descreva o comportamento das concentraes de biomassa e de substrato considerando um
tempo de integrao de 30 horas (0<t<30), as condies iniciais descritas pela equao (D.3) e
os valores para os parmetros descritos na Tabela D.

t = 0: x
1
= 1 x
2
= 1 (D.3)

Tabela D: Valores para os parmetros do modelo (Bequette, 1998)
Parmetro Valor

max
0,53 h
-1

k
m
0,12 g/L
k
1
0,4545 L/g
Y 0,4
x
2i
4 g/L
D 0,3 h
-1

BEQUETTE, B. W., Process Dynamics: Modeling, Analysis and Simulation, 1
a
ed. USA, Prentice- Hall
PTR, 1998.