Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila MATLAB PDF
Apostila MATLAB PDF
em MATLAB
APRESENTAO
comandos para
tridimensionais,
plotagem
de
grficos
bidimensionais
Boa aprendizagem!
SUMRIO
1. INTRODUO.............................................................................................................................4
1.1 O ambiente MATLAB............................................................................................................5
2. COMANDOS BSICOS.................................................................................................................6
2.1 Operaes Bsicas...............................................................................................................6
2.1.1 Comandos para utilizao de Funes:...............................................................7
2.2 Comandos de ajuda...8
2.2.1 O comando help.................................................................................................8
2.2.2 O comando lookfor.............................................................................................9
3. MANIPULAO DE MATRIZES...................................................................................................10
3.1 Matrizes elementares........................................................................................................10
3.2 Operaes com matrizes....................................................................................................10
4. ZEROS DE FUNES...................................................................................................................12
5. MXIMOS E MNIMOS DE FUNES.................................................................................................12
6. CLCULO ............................................................................................................................................13
6.1 Construindo funes com variveis simblicas.................................................................13
6.2 Limites ..............................................................................................................................13
6.2.1 Limite lateral esquerda...................................................................................14
6.2.2 Limite lateral direita.......................................................................................14
6.3 Derivadas............................................................................................................................14
6.4 Integrao.........................................................................................................................14
6.4.1 Integrais Indefinidas..........................................................................................14
6.4.2 Integrais Definidas.............................................................................................15
7. PLOTANDO GRFICOS NO MATLAB..........................................................................................15
7.1 O comando plot ...............................................................................................................16
7.1.1 Comando subplot.............................................................................................22
7.2 Comando fplot...................................................................................................................23
7.3 Coordenadas Polares.........................................................................................................24
7.4 Curvas Paramtricas..........................................................................................................25
7.5 Diagramas Bidimensionais.................................................................................................26
8. ALGORITMOS...........................................................................................................................31
8.1 Representao de Algoritmos..........................................................................................32
8.1.1 Linguagem Natural..........................................................................................33
8.1.2 Fluxograma Convencional...............................................................................33
8.1.3 Pseudo-Cdigo.................................................................................................35
9. M-FILES: CRIANDO SEUS PRPRIOS PROGRAMAS E FUNES..................................................36
9.1 Sada de dados - Comando format....................................................................................39
9.2 Sada de dados - Funo Disp............................................................................................40
9.3 Sada de dados - Sada fprintf............................................................................................40
9.4 Sada de dados - Interao com o usurio atravs do comando input..............................42
9.5 Sada de dados - Operadores lgicos................................................................................43
10. CONDICIONAIS E LAOS.........................................................................................................44
10.1 A estrutura condicional if-end.........................................................................................44
10.2 A estrutura condicional if-else-end..................................................................................45
10.3 A estrutura condicional if-elseif-else-end........................................................................45
10.4 O lao for.........................................................................................................................47
10.5 O lao while.....................................................................................................................51
10.6 O comando break............................................................................................................54
10.7 O comando switch...........................................................................................................56
11. VETORIZAO........................................................................................................................57
12. RESERVA DE ESPAO PARA VARIVEIS...................................................................................58
13. CAIXAS DE DILOGOS.............................................................................................................58
14.MTODOS NUMRICOS...........................................................................................................61
14.1 Bisseo............................................................................................................................61
14.2 Newton.............................................................................................................................63
14.3 Secante.............................................................................................................................65
1. INTRODUO
O MATLAB (do ingls Matrix Laboratory) um software de computao
numrica de anlise e visualizao de dados. Embora seu nome signifique Laboratrio
de Matrizes, seus propsitos atualmente so bem mais amplos. Ele nasceu como um
programa para operaes matemticas sobre matrizes, mas ao longo dos anos
transformou-se em um sistema computacional bastante til e flexvel.
Seu ambiente de trabalho fcil de ser utilizado, pois os problemas e solues
so escritos em linguagem matemtica e no na linguagem de programao
tradicional, como muitos outros softwares utilizam.
Assim o MATLAB uma ferramenta e uma linguagem de programao de alto
nvel, e tem como principais funes: construo de grficos e compilao de funes,
manipulao de funes especficas de clculo e variveis simblicas.
Alm disso, o MATLAB possui uma grande quantidade de bibliotecas auxiliares
(Toolboxes) que otimizam o tempo gasto para realizar tarefas, uma vez que, o
usurio poder utilizar muitas funes j definidas, poupando o tempo de cri-las. Por
outro lado, infelizmente, os programas feitos so difceis de serem executados num
ambiente fora do MATLAB.
1.1
O ambiente MATLAB
2. COMANDOS BSICOS
Operao
Smbolo
Exemplo
Adio
5+3
Subtrao
23 - 12
Multiplicao
3,14 * 0,85
Diviso
Potenciao
/ ou \
56/8=8\56
5^2=25
Comando
Descrio
abs(x)
acos(x)
Arco cosseno
acosh(x)
angle(x)
asin(x)
Arco seno
asinh(x)
atan(x)
Arco tangent
atan2(x,y)
atanh(x)
ceil(x)
conj(x)
Conjugado complex
cos(x)
Cosseno
cosh(x)
Cosseno hiperblico
exp(x)
Exponencial
fix(x)
floor(x)
imag(x)
log(x)
Logaritmo natural
log10(x)
Logaritmo na base 10
real(x)
rem(x,y)
round(x)
sign(x)
sin(x)
EX:
sign(1.2)=1 e sign(-1.2)=-1, sign(0)=0
Seno
sinh(x)
Seno hiperblico
sqrt(x)
Raiz quadrada
tan(x)
Tangente
tanh(x)
Tangente hiperblica
O comando help funciona muito bem se voc sabe exatamente o tpico sobre o qual
necessita de ajuda. J que isso no sempre o caso, o help pode tambm lev-lo ao
tpico exato que deseja digitando help, sem especificao do tpico.
3. MANIPULAO DE MATRIZES
O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz
numrica retangular podendo conter elementos complexos. Observa-se que um
escalar uma matriz de dimenso 1x1 e que um vetor uma matriz que possui
somente uma linha ou uma coluna.
O mtodo mais fcil de introduzir pequenas matrizes no MATLAB utilizando uma lista
explcita. Os elementos de cada linha da matriz so separados por espaos em branco
ou vrgulas e as colunas separadas por ponto e vrgula, colocando-se colchetes em
volta do grupo de elementos que formam a matriz com o objetivo de limit-la.
Tipo de Matriz
Comando
Matriz Identidade
eye(n)
Matriz Nula
zeros(m,n)
ones(m,n)
Matriz Aleatria
rand(m,n)
Operao
Comando
At
10
K*A
A.*B
A.^2
A+B
DESCRIO
eig
Autovalores e Autovetores;
chol
Fatorizao de Cholesky;
svd
inv
Inversa;
lu
qr
hess
Forma de Hessenberg;
schur
Decomposio de Schur;
expm
Matriz Exponencial;
sqrtm
poly
Polinmio caracterstico;
det
Determinante;
size
Tamanho;
norm
cond
rank
triu(A)
tril(A)
diag(A)
11
diag(diag(a))
flipud(A)
fliplr(A)
rot90(A)
reshape(A,m,n)
4. ZEROS DE FUNES
O MATLAB encontra zeros de funes usando o comando fzero. A funo, da
qual deseja-se encontrar os zeros, deve ser ento escrita:
com
chute inicial.
( )
12
( ):
6. CLCULO
6.2 Limites
Para calcularmos
( ) utilizamos o comando
13
( ( )
).
6.3 Derivadas
Para calcularmos derivadas utiliza-se o comando
indica a ordem da derivao.
( ( )
), onde
6.4 Integrao
6.4.1 Integrais Indefinidas
14
utiliza-se o comando
( ( ) ).
( )
utiliza-se o comando
( ( )
).
Comando
Descrio
plot
Plotar linear
loglog
semilogx
semilogy
fill
polar
bar
Grfico de barras
stem
15
stairs
Grfico em degrau
hist
Histograma.
rose
Histograma em ngulo
compass
feather
fplot
Grfico da funo
comet
16
Como resultado o MATLAB nos retorna a uma janela denominada Figure No. 1
com o seguinte grfico:
possvel desenhar mais que uma funo no mesmo grfico. Existem dois
modos: um atravs do comando plot, e outro atravs do comando hold
Por exemplo, podemos gerar no mesmo grfico as funes sen(x), cos(x) e
sen(2x).
x= 0:PI/100:6*pi;
y1=sin(x);
y2=cos(x);
y3=sin(2*x);
plot(x,y1,x,y2,x,y3);
title(Grafico das funes sem(x),cos(x),sem(2x))
xlabel(x)
ylabel(x)
17
Alm de ttulos e designao dos eixos (funes title, xlabel e ylabel) podemos
definir outras propriedades grficas como legendas, cores e estilos de linhas, estilos
de marcadores, incluir grade.
18
Cor
Marcadores
Estilo de Linha
amarelo
Ponto
Slido
rosa(magenta)
Crculo
Pontilhado
azul (ciano)
-.
Ponto-trao
vermelho
Mais
--
Tracejado
verde
Asterisco
azul
Quadrado
branco
preto
Pentgono
Legendas podem ser criadas por meio da funo legend, utilizando a seguinte
estrutura:
legend('texto1', 'texto2,...,posio)
Valor
Significado
-1
direita do desenho
O Comando axis
possvel controlar as propores e a aparncia dos eixos horizontal e vertical
dos grficos gerados pelo MATLAB atravs do comando axis.
Alguns modos principais de configurao desse comando seguem na tabela a
seguir:
20
Comandos
Descrio
axis square
axis equal
axis normal
axis off
axis on
21
subplot(m,n,p)
subplot(2,1,1)
x=-pi:pi/20:pi;
y= sin(x);
plot(x,y)
title('Subdiagrama 1');
subplot(2,1,2);
x=-pi:pi/20:pi;
y= cos(x);
plot(x,y)
title('Subdiagrama 2');
22
23
Exemplo:
Cardiide
A Cardiide pode ser expressa atravs de coordenadas polares:
r 2(1 cos )
Utilizando o comando polar, plote a Cardiide.
theta = 0:pi/50:2*pi;
r=2*(1+cos(theta));
polar(theta,r,'r-');
title('Cardioide em Coordenadas Polares');
24
A forma paramtrica de uma curva plana pode ser descrita atravs do seguinte
par de funes:
x = f(t)
y =g (t)
a,ya
cu
b,yb
Exemplo:
Crculo
t = -6*pi:pi/100:6*pi;
x = cos(t);
y = sin(t);
plot(x,y);
axis square
25
Funo
Descrio
bar(x,y)
barh(x,y)
compass(x,y)
26
pie(x,y)
pie(x,explode)
stairs
hist
Grficos de Barras
um grfico no qual cada ponto representado por uma barra vertical ou
horizontal.
Tem a seguinte sntese:
bar(x,y), para barras verticais
barh(x,y) para barras horizontais.
O vetor x representa o rtulo ou posio da barra, e o vetor y representa a
altura ou comprimento da barra.
Exemplo:
Barras verticais
x = [1 2 3 4 5 6];
y = [5 4 6 7 2 5];
barh(x,y);
axis([0 10 0 7]);
title(Grafico de barras horizontais);
27
Exemplo:
Construir um grfico do tipo Pizza, onde as fatias representam 32%, 20%,
20%, 12%, 16%. Separe a fatia maior das demais fatias. Utilize tambm o comando
legend.
x = [32 16 12 20 20];
explode= [1 0 0 0 0];
pie(x,explode);
title('Exemplo de grafico de Pizza');
legend('Um','Dois','Tres','Quatro','Cinco',4);
28
Histogramas
Um histograma um diagrama que mostra a distribuio de valores em um
conjunto de dados. Para criar um histograma, a faixa de valores em um conjunto de
dados dividida em grupos regularmente espaados, e o nmero de valores de dados
que caem em cada grupo determinado. A contagem resultante pode ser
representada em um diagrama como funo do nmero do grupo.
Algumas das snteses para gerar histogramas so:
hist(y), cria um histograma com 10 grupos igualmente espaados.
hist(y,n), cria um histograma com n grupos igualmente espaados.
29
Exemplo:
Esse exemplo cria um conjunto de dados com 10.000 valores aleatrios
gaussianos e gera um histograma dos dados usando 15 grupos igualmente espaados.
y = randn(1000,1);
hist (y,15);
30
8. ALGORITMOS
Finitude:
Um algoritmo deve sempre terminar aps um nmero finito de passos.
Definio:
Cada passo de um algoritmo deve ser precisamente definido. As aes devem
ser definidas rigorosamente e sem ambiguidades.
Entradas:
Um algoritmo deve ter zero ou mais entradas, isto quantidades que so lhe
so fornecidas antes do algoritmo iniciar.
Sadas:
Um algoritmo deve ter uma ou mais sadas, isto quantidades que tem uma
relao especfica com as entradas.
Efetividade:
Um algoritmo deve ser efetivo. Isto significa que todas as operaes devem ser
suficientemente bsicas de modo que possam ser em princpio executadas com
preciso em um tempo finito por um humano usando papel e lpis.
Para mostrar um exemplo de algoritmo considere o seguinte problema:
31
32
Algoritmo de domingo.
o Acordar.
o Tomar o caf.
o Se estiver sol vou praia seno leio o jornal.
o Almoar.
o Ir ao cinema.
o Fazer uma refeio.
o Ir dormir.
Final do domingo.
33
34
8.1.3 Pseudo-Cdigo
Algoritmo: Cumprimento
Variveis: hora: Numrico
Incio algoritmo
Escreva Que horas so?
Ler hora
Se 6<=hora<12
Escreva Bom Dia
Fim Se
Se 12<=hora<18
Escreva Boa Tarde
Fim Se
Se 18<=hora<6
Escreva Boa Noite.
Fim Se
Fim algoritmo
35
temp = (p(1)-q(1))^2+(p(2)-q(2))^2+(p(3)-q(3))^2
distancia = sqrt(temp)
Esse arquivo pode ser criado com qualquer editor de texto e deve ter extenso
.m (M-Files). Por exemplo, o script acima poderia estar no arquivo distancia_p_q.m.
Para cham-lo basta entrar com o nome do arquivo na janela de comandos (Command
Window):
temp =
2
distancia =
1.44142
36
EXEMPLO:
function distancia=calcula_distancia(x,y)
% Calcula a distancia euclidiana entre os pontos x e y (vetores do Rn)
diferena=x-y;
distancia=sqrt (diferena*transpose (diferenca));
Exemplo 1:
Exemplo 2:
>> p=[1 0 0];
distancia=calcula_distancia([3 4], [0 0])
>> q=[0 1 0];
distancia=
>> d=calcula_distancia(p,q)
5
Ou:
>> d=calcula_distancia([1 0 0], [0 1 0])
d=
1.4142
Salienta-se que essa funo determina a distncia entre dois vetores quaisquer,
independentemente do nmero de componentes dos mesmos (desde que ambos
vetores sejam de mesma dimenso).
O arquivo tipo function tambm tem que ter extenso .m e deve ter o mesmo
nome usado na definio da funo, no exemplo anterior o nome do arquivo deve ser
calcula_distancia.m. Usamos o Command Window para executar essa funo.
A seguir, tem-se uma lista com alguns comandos de programao para o
controle de fluxo, bem como comandos de programao geral e interfaces com o
usurio.
Break
clc, home
Clear
continue
Display
Disp
IF
37
Else
Elseif
End
Error
errordlg
Eval
Feval
For
Fprintf
Fscanf
function
Global
Helpdlg
Input
keyboard
Lasterr
Menu
margchk
Pause
pause(n)
questdlg
Rbbox
Return
Sprintf
38
switch e
case
uigetfile
uiputfile
warndlg
While
RESULTADO
EXEMPLO: e*
Format short
4 dgitos depois de
vrgula
23.2134
Format long
14 dgitos depois da
vrgula
23.21340435736339
Format short e
5 dgitos com
exponencial
2.321e+001
Format long e
15 dgitos com
exponencial
2.321340435736330e+001
Format short g
5 dgitos totais
23.213
Format long g
15 dgitos totais
23.2134043573634
Format hex
Formato hexadecimal
4037361aaffb31c
39
Format bank
Valores bancrios
23.21
Format rat
Aproximao por
racionais
3807/164
Format +
O comando fprintf um dos mtodos mais simples de sada de dados. Com ele
possvel combinar frases com variveis numricas de dimenso 1, ou seja, um escalar
ou um elemento da matriz. Vejamos como ele funciona com o seguinte exmplo:
40
x=1;
y=7;
fprintf(O x vale %d, enquanto y vale %d,x,y)
Acima, o que est entre aspas aparecer para o usurio, os itens onde aparece
%d sero substitudos pelas variveis, respeitando-se a ordem em que aparecem.
Ainda, %d significa que s aparecer a parte inteira de x e y. Existem, ainda, os
seguintes comandos:
%d
%e
%f
%g
41
42
E lgico
OU lgico
xor
~
OU exclusivo lgico
NO lgico
43
44
Se a expresso lgica <condio > for verdadeira ento a lista <comandos 1>
ser executada. Se <condio> for falsa ento ser executada a lista <comandos 2>.
EXEMPLO: Faa um programa que leia o ano de nascimento de uma pessoa e o ano
atual e diga a idade da pessoa. O programa deve verificar se o ano de nascimento
vlido ou no.
an=input('Digite o ano de nascimento da pessoa:');
aa=input('Digite o ano atual:');
if ((an<0)|(an>2010))
fprintf('Ano de nascimento invalido.');
else I=aa-an;
fprintf('A idade da pessoa eh %d anos.',I);
end
45
if <condio 1>
<comandos 1>
elseif<condio 2>
<comandos 2>
elseif <condio 3>
<comandos 3>
.
.
.
else
<comandos 0>
end
A lista <comandos 1> ser executada se a <condio 1> for verdadeira, j a lista
<comandos 2> ser executada se a <condio 2> for verdadeira e assim para as outras
condies. Se nenhuma das condies for verdadeira ento <comandos 0> ser
executada.
Quando a primeira <condio> for satisfeita e os <comandos> executados, a
estrutura if-elseif-else-end ser abandonada, ou seja, o controle do processamento
ser transferido para o comando imediatamente aps o end.
EXEMPLO: Faa um programa tal que o usurio insira um valor para a varivel x e em
seguida mostre se x maior, menor ou igual a zero.
46
f(x) = {
function a=program1(x)
x=input('Digite um valor x para o qual se deseja avaliar a funao:');
if x<-1
a=1;
elseif (x>=-1)&(x<=1)
a=x^2;
else
a=-x+2;
end
47
for <varivel>=<arranjo>
<comandos>
end
A primeira parte (i=1) realizada uma vez, antes de o lao ser inicializado.
48
Observao: Veja que aqui ocupa muito espao se usarmos o comando input 15
vezes.
EXEMPLO: Faa um programa que pergunte ao usurio quantas linhas e quantas
colunas ele quer que uma matriz A tenha. Em seguida, pedir que ele insira cada valor
da matriz. Alm disto, verificar quantos elementos menores que zero tem nesta
matriz.
for d1=0:6
for d2=0:6
if (d1+d2==7)
fprintf('\n O valor do 1 dado pode ser %d e o valor do 2 dado pode ser %d pois,
%d+%d eh 7',d1,d2,d1,d2);
end
end
end
49
EXEMPLO: Faa um programa que plote uma funo retangular f(n) tal que 0<n<2 e
f(n)=1, se 0<n< e f(n)=-1, se <n<2.
).
for x=1:360
y(x)=sin(2*pi*x/360);
end
plot(y)
xlabel('x em graus');
ylabel('f(x)');
50
EXEMPLO: Faa um programa que construa duas matrizes A e B dadas pela lei A ij=i+j e
Bij=i-j e calcule a soma das duas.
for i=1:8
for j=1:8
A(i,j)=i+j;
B(i,j)=i-j;
end
end
C=A+B;
A, B, C
51
i=1;
a=1;
while a==1
fprintf('Insira a idade do cidadao %d:',i);
M(1,i)=input('');
fprintf('Insira o peso do cidadao %d:',i);
M(2,i)=input('');
i=i+1;
a=input('Continuar? (1) para sim ou (0) para nao.');
end
disp(M)
52
53
acumulador = 0;
n = 0;
while n<5,
numero = input('Digite um numero: ');
n = n+1;
acumulador = acumulador + numero;
x = input('\n Continua? (1) para sim e (0) para nao: ');
if x == 0
break
end
end;
media = acumulador/n;
disp('A mdia dos nmeros : ');
disp(media);
55
56
EXEMPLO:
11. Vetorizao
O MATLAB um software desenvolvido para trabalhar com matrizes. Quando
se est construindo uma rotina de clculo e se deseja utilizar uma ferramenta de loop,
onde o objetivo calcular uma expresso diversas vezes, muito mais eficiente
trabalhar utilizando o conceito de operaes matriciais ou vetoriais.
Para demonstrar o que queremos dizer, vamos apresentar uma rotina simples,
implementada de dois modos, onde se evidencia a diferena de eficincia entre uma
implementao utilizando loops sua verso vetorial.
x=1;
for k=1:100
clc
y(k)=log10(x);
x=x+0.01;
y(k);
pause(1);
end
TEMPO COMPUTACIONAL
0.1900
57
x:1:0.01:100;
y=log10(x);
0.0600
Utilizando a forma vetorizada, para este exemplo, tem-se uma reduo de 70%
no tempo computacional.
58
i=1;
prod=1;
b={'Digite o nmero o qual deseja calcular seu fatorial'};
Numero=inputdlg(b)
n=str2num(char(Numero(1)));
if n<0
disp('ERRO: O nmero deve ser no negativo');
else
while i<=n
prod=prod*i;
i=i+1;
end
fprintf('O fatorial de %d %d',n,prod);
end
OBS: Neste programa aparecer uma janela onde o usurio ir informar o nmero o qual
deseja calcular o fatorial.
59
60
61
Algortmo:
');
');
');
if f(bo)*f(ao) > 0,
disp('No tem raiz nesse intervalo')
else
while (bo-ao) > Ep,
x=(ao+bo)/2;
if f(x)*f(ao) > 0,
ao=x;
else
bo=x;
end;
end;
y =(ao+bo)/2;
disp('A raiz
')
disp(y);
end
com 0,00001.
>> f = inline('x^2-5');
>> bissec
Digite o 1 valor do intervalo:
0.00001
A raiz
2.2361
62
inicial [0,3].
>> f = inline('x*log(x)');
>> bissec
Digite o 1 valor do intervalo:
0.01
A raiz
0.0029
63
Algortmo:
');
');
x1=xo-f(xo)/g(xo);
while (x1-xo)>E
xo=x1;
x1=xo-f(xo)/g(xo);
end
disp('A raiz
');
disp(x1)
-2
0.0001
A raiz
-0.6458
64
>> f = inline('2*x^3+log(x)-5');
>> g = inline('6*x^2+(1/x)');
>> newton
Digite o valor de xo:
0.001
A raiz
1.5227
65
Algortmo:
');
');
');
while (x1-xo)>E
x2=x1-((f(x1)*(x1-xo))/(f(x1)-f(xo)));
xo=x1;
x1=x2;
end
disp('A raiz :
');
disp(x2);
EXEMPLO 1: Considerando ( )
com 0,001.
; x0 = 1 e x1 = 2. Encontre a raiz da ( )
>> f = inline('x^2+x-6');
>> secante
Digite o valor de xo:
0.001
A raiz :
2
66
EXEMPLO 2: Considerando ( )
( ) com 5 x
.
; x0 = 0 e x1 = 1. Encontre a raiz da
>> f = inline('x^3-9*x+3');
>> secante
Digite o valor de xo:
0.0005
A raiz :
0.3750
67
REFERNCIAS BIBLIOGRFICAS
PET MATEMTICA UFSM; Noes Bsicas de Utilizao e Programao em MATLAB.
Santa Maria, 2008.
CHAPMAN, S.J.; Programao em MATLAB para engenheiros. Traduo tcnica: Flvio
Soares Correa da Silva, So Paulo, Thomson Learning, 2006.
FALCO, M. I; Iniciao ao MATLAB. Universidade do Minho, 2001, Disponvel em:
https://repositorium.sdum.uminho.pt/handle/1822/1480
HANSELMAN, D; LITTLEFIELD, B; MATLAB Verso Estudante Guia do Usurio
Verso 4. MAKRON Books do Brasil. So Paulo, 1997.
PET ENGENHARIA ELTRICA UFSM; Introduo ao MATLAB. Santa Maria, 2007.
Disponvel em: http://w3.ufsm.br/petee/
PORTUGAL, R.; MATLAB para leigos e desinteressados: uma introduo simples com
exemplos banais. Disponvel em: www.ime.unicamp.br/~cheti/intmatlab.pdf
68