Você está na página 1de 19

UFPA-CASAN

Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra

INTRODUO A LINGUAGEM DE
PROGRAMAO NO MATLAB TM

INTRODUO

Este tutorial parte integrante da disciplina "INTRODUO A PROGRAMAO


NO MATLAB". O seu propsito orientar o aluno no aprendizado das ferramentas
elementares do programa MATLAB. Para melhor aproveitamento deste tutorial, o aluno
deve ler as seguintes observaes:
A verso adequada para este tutorial o MATLAB 7.0 ou superior.
Os comandos e/ou funo digitada est em verde e a resposta do MATLAB est
em azul e/ou vermelho.
O tutorial deve ser lido em conjunto com a execuo do MATLAB e os exemplos
citados devem ser repetidos e os resultados comparados.
As caixas cor de rosa so importantes dicas e cuidados que devem ser
observados, afim otimizar o uso das funes e comando MATLAB, evitando
erros comuns.
Em cada final de captulo o aluno dever resolver os exerccios utilizando o
MATLAB.
Sempre que necessrio, o aluno deve consultar o manual do MATLAB,
disponvel no menu principal de opes (atravs da opo help).
O aluno s dever passar para o prximo captulo aps dominar os conceitos e
uso das funes e comandos mostrados no captulo atual.

1. Introduo ao MATLAB
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
Neste captulo, trabalharemos os conceitos bsicos operacionais do programa
MATLAB. Como veremos a seguir, o MATLAB pode ser utilizado atravs de dois
modos distintos, o modo iterativo por linha de comando, onde os comandos so
introduzidos e executados diretamente via teclado e o modo programado, onde um
arquivo com os comandos lido e processado pelo MATLAB. Neste captulo,
abordaremos o modo iterativo.
Ao executarmos o MATLAB uma janela do programa aparecer, mostrando diversas
reas com diversos menus e parmetros informativos.

A janela maior, i.o Comand Windows, o local onde os comandos so digitados e os


resultados mostrados logo a seguir. Na janela Launch Pad, so mostrados os pacotes
extensivos instalados junto com o MATLAB. No Command History, so mostrados os
ltimos comandos digitados nas duas ltimas vezes em que o programa foi utilizado.
MATLAB significa uma abreviao do ingls "Matrix Laboratory" (Laboratrio de
Matrizes). O MATLAB representa e armazena os dados numricos e no numricos
(strings, lgicos,...) em forma de vetores e matrizes.

a. Variveis e constantes, operaes aritmticas, matrizes e vetores


UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
No MATLAB, uma varivel simples uma matriz do tipo [nome]1x1 , onde nome um
conjunto de caracteres que representa o nome da varivel. Uma varivel s passa a
existir quando um valor lhe atribudo. Como exemplo, vamos criar a varivel "x"
atribuindo-lhe um valor qualquer, digamos "2.44" (no MATLAB, a vrgula indicando
nmero decimal representada por um ponto). Assim, da janela Comand Windows,
aps o prompt ">" digitamos:

x=2.44

x =
2.4400

O MATLAB responder com o mesmo valor digitado, indicando que a varivel foi
criada. Se agora digitarmos o valor "x" sozinho, a mesma resposta ser obtida,
indicando que "x" contm o valor numrico 2.44.

x =
2.4400

O MATLAB pode trabalhar tambm como uma calculadora comum efetuando as cinco
operaes bsicas.
Operao Sinal no MATLAB
Importante!!!!!
Soma +
O MATLAB diferencia caracteres maisculo
Subtrao - e minsculos, assim, variveis criadas na
Produto * forma "aa",a,ba,b,c no podem ser
Diviso / referenciadas como "AA","A", "BA","B",
Exponenciao ^ "C".
Parnteses ( )

Como exemplo, vamos efetuar a seguinte seqncia de clculos:


5 83

5 2 3
1
x 45
7
x3
y
x 1

No prompt, digitamos a seguinte seqncia (teclando sempre <enter> no final de cada


uma).
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra

(5+8^2)/(5*2-3)

ans =
9.8571

Repare que o MATLAB respondeu com a varivel "ans". Como no se digitou nenhum
nome para varivel, o MATLAB utilizou a varivel pr-definida denominada "ans".

x=4*5-1/7
Dica Importante!!!!!
x = Quando no tivermos certeza quanto ordem
19.8571
de realizao de uma seqncia de operaes,
utilize parnteses para separar e priorizar a
Finalmente,
execuo segundo a ordem explicitada na
y=(x^3)/(x-1) expresso matemtica.

y =
415.2163

Se quisermos utilizar agora o resultado da primeira seqncia numa outra, digamos,


somando com x e y teremos que digitar :

ans+x+y

ans =
444.9306

Dica Importante!!!!!
Se no quisermos que o MATLAB mostre o
resultado do comando digitado, s colocar
ao final do comando, o caractere ";".

O MATLAB tambm trabalha com constantes. Como exemplo, A nome pi armazena o


valor de . Embora possamos utilizar pi para armazenar outros valores, o MATLAB
reserva este nome para armazenar o valor de .
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra

pi

ans =
3.1416

pi=434

pi =
434

clear pi

pi

ans =
3.1416

Na seqncia anterior digitada, apos atribuir o valor 434 a pi, o comando "clear pi"
recupera o valor original de pi. Podemos criar vetores e matrizes no MATLAB. Os
exemplos a seguir mostram com criar variveis do tipo vetores e matrizes.

A14 1 2 3 4
1
4
B41
7

8
0 1 6
C 33 1 0 1
0 1 55
1 3 24
A24
3 7 0
No MATLAB digitamos:
A=[1 2 3 4]

A =
1 2 3 4

B=[1;4;7;8]

B =
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
1
4
7
8

C=[0 1 -6;-1 0 1; 0 1 55]

C =
0 1 -6
-1 0 1
0 1 55

D=[1 3 -24;-3 7 0]

D =
1 3 -24
-3 7 0

Operaes com vetores e matrizes so permitidas, obedecendo-se as regras da lgebra


matricial. No exemplo anterior no podemos somar as matrizes C e D, uma vez que
ambas possuem dimenses diferentes. Ao tentarmos executar esta operao, o MATLAB
mostrar uma mensagem de erro. Exemplo:
E=C+D

??? Error using ==> +


Matrix dimensions must agree.

Exemplos vlidos: Importante!!!!!


O MATLAB mostrar uma mensagem de erro, sempre que
A=[1 2 3;4 5 6;7 8 9] um comando for digitado errado ou uma operao
A = matemtica no permitida for implementada.
1 2 3
4 5 6
7 8 9
B=[ -1 -3 -5;-7 -9 -11; -13 -15 -17]

B =
-1 -3 -5
-7 -9 -11
-13 -15 -17

C=[1 0 0;0 1 0;0 0 1]

C =
1 0 0
0 1 0
0 0 1
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
D=3*A-B+C-A*B

D =
59 75 92
136 172 206
214 267 321
Podemos efetuar a transposio de uma matriz atravs do operador " ' " . Exemplo:

D'

ans =
59 136 214
75 172 267
92 206 321

Se quisermos visualizar uma elemento de uma matriz j criada basta digitar o nome da
matriz com juntamente com o ndice linha e o ndice coluna. Exemplo, D(1,3),D(3,2).

D(1,3)

ans =
92
D(3,2)

ans =
267
Para mostra uma linha ou coluna inteira :

D(1,:)

ans =
59 75 92
D(:,2)

ans =
75
172
267

Podemos tambm criar matrizes atravs de operaes e funes especiais:

a=1:10

a =
1 2 3 4 5 6 7 8 9 10
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
b=(10:-2:1)'

b =
10
8
6
4
2

Nos dois exemplos anteriores, o operador " : " criou duas matrizes,uma linha e outra
coluna, a primeira com 10 elementos, variando de 1 a 10 com incremento de 1, e na
segunda com 5 elementos variando de 10 a 1 com incremento negativo de -2. A forma
geral do comando i:k:j, onde i e j so os extremos da matriz e k o incremento.

Importante!!!!!
se i=j, a matriz ter apenas uma posio igual a i.
se i<j, o incremento k deve ser positivo caso contrrio a matriz no ser criada.
se i>j, o incremento k deve ser negativo caso contrrio a matriz no ser criada.

Podemos tambm criar matrizes preenchidas s com elementos zeros ou um, Exemplo:

zeros(2,4)

ans =
0 0 0 0
0 0 0 0

ones(3,3)

ans =
1 1 1
1 1 1
1 1 1

A forma geral para criar estas matizes dada pelas funes zeros(i,j) e ones(i,j) onde i e j
so os nmeros de linhas e colunas.

b. Comandos bsicos

O MATLAB possui uma srie de comandos bsicos que nos permite administrar e
controlar as operaes digitadas, as variveis, as janelas e figuras, dentre outras. Nesta
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
seo veremos apenas alguns relacionados com as variveis. No desenvolver das outras
sees e captulos, sempre que se fizer necessrio, outros comandos sero citados. Os
comandos devem ser obrigatoriamente digitados com letras minsculas.
Para visualizramos as variveis que foram criadas no ambiente MATLAB, digitamos
o comando "who" ou "whos".

who

Your variables are:

A B C D a ans b x y

Como se pode observar, o comando "who" mostra as variveis criadas nos exemplos
anteriores. Para uma descrio mais detalhada destas variveis, utilizamos o comando
"whos".

whos

Name Size Bytes Class

A 1x4 32 double array


B 4x1 32 double array
C 3x3 72 double array
D 2x3 48 double array
a 1x10 80 double array
ans 3x3 72 double array
b 5x1 40 double array
x 1x1 8 double array
y 1x1 8 double array

Grand total is 49 elements using 392 bytes

No detalhe, o comando "whos" mostra a dimenso das variveis, o tipo a quantidade de


memria utilizada por cada uma delas.
Freqentemente necessrio apagar ou extinguir uma ou mais variveis. Para esta
operao, utilizamos o comando "clear" seguido dos nomes das variveis, exemplo:

clear b
who

Your variables are:

A B C D a ans x y

No exemplo anterior, apagamos a varivel "b", como se pode observar aps aplicar o
comando "who". Para apagarmos "A" e "B" :
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
clear A B

who

Your variables are:

C D a ans x y

Finalmente, para apagarmos todas as variveis criadas, basta digitar "clear" sozinho.

clear
who

Aps um "clear " sozinho, o comando "who" no mostrar absolutamente nada,


indicando que todas as variveis foram apagadas.

Cuidado!!!!!
O comando "clear" irreversvel, i., uma vez apagada uma varivel, seu
contedo no pode ser mais recuperado.

Um comando bastante til o "help". Ao digitarmos "help" seguido pelo nome de um


comando ou funo MATLAB vlido, o MATLAB mostrar uma pequena referncia de
definio e uso deste comando, exemplo:
help who

WHO List current variables.


WHO lists the variables in the current workspace.
WHOS lists more information about each variable.
WHO GLOBAL and WHOS GLOBAL list the variables in the global
workspace.
WHO -FILE FILENAME lists the variables in the specified .MAT file.

WHO ... VAR1 VAR2 restricts the display to the variables specified.
The wildcard character '*' can be used to display variables that
match a pattern. For instance, WHO A* finds all variables in the
current workspace that start with A.

Use the functional form of WHO, such as WHO('-file',FILE,V1,V2),


when the filename or variable names are stored in strings.

S = WHO(...) returns a cell array containing the names of the


variables in the workspace or file. You must use the functional
form of WHO when there is an output argument.

See also WHOS.


UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra

c. Funes pr-definidas

O MATLAB trabalha com funes pr-definidas (funes matemticas, por exemplo)


e as funes que podem ser construdas pelo usurio. Abaixo, segue uma tabela com
alguns exemplos:

Funo Funo equivalente no MATLAB


SENO de um ngulo sin()
COS-SENO de cos()
TANGENTE de tan()
Exponencial de EULER x exp(x)
Mdulo de um nmero real x abs(x)
xy x^y
x sqrt(x)
Logaritmo natural de um nmero real log(x)
Determinante de uma matriz quadrada det(m)
Inversa de uma matriz no singular Inv(m)
n sum(x), x um vetor com n elementos
Somatrio em uma varivel x
i 1
i

Ateno!!!!!
As funes no MATLAB devem ser digitadas com letras minsculas. Qualquer dvida,
digite "help" e o nome da funo ou clique na opo help no menu principal.

Exemplos:

x=7*pi/3

x =
7.3304
sin(x)

ans =
0.8660
y=ans+log(x)

y =
2.8581

Neste prximo exemplo, use o MATLAB para calcular a seqncia de expresses abaixo:
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
11
x
7
38
y
11
1 x2
A
cos( x )
tan( A y )
B
log(2 y )
B
C
A
1
58 A A B
C
150 C
B

No MATLAB:

x=(11*pi)/7

x =
4.9368
y=(-38*pi)/11

y =
-10.8528
A=abs(1-x^2)/cos(x)

A =
105.0323
B=tan(A-y)/log(2-y)

B =
-0.1447
C=B/A

C =
-0.0014
inv([58*A A*B;C/B 150*C])

ans =
0.0002 -0.0121
0.0000 -4.8406
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
Uma caracterstica bastante til no MATLAB a possibilidade de construo de grficos
com relativa facilidade, vejamos alguns exemplos:

Trace o grfico de y x 2 2 x 19 no intervalo [-5,5]

x=-5:0.2:5

x =
Columns 1 through 9
-5.0000 -4.8000 -4.6000 -4.4000 -4.2000 -4.0000 -3.8000
-3.6000 -3.4000
Columns 10 through 18
-3.2000 -3.0000 -2.8000 -2.6000 -2.4000 -2.2000 -2.0000
-1.8000 -1.6000
Columns 19 through 27
-1.4000 -1.2000 -1.0000 -0.8000 -0.6000 -0.4000 -0.2000
0 0.2000
Columns 28 through 36
0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000
1.8000 2.0000
Columns 37 through 45
2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000
3.6000 3.8000
Columns 46 through 51
4.0000 4.2000 4.4000 4.6000 4.8000 5.0000
y=x.^2-2*x+19

y =
Columns 1 through 9
54.0000 51.6400 49.3600 47.1600 45.0400 43.0000 41.0400
39.1600 37.3600
Columns 10 through 18
35.6400 34.0000 32.4400 30.9600 29.5600 28.2400 27.0000
25.8400 24.7600
Columns 19 through 27
23.7600 22.8400 22.0000 21.2400 20.5600 19.9600 19.4400
19.0000 18.6400
Columns 28 through 36
18.3600 18.1600 18.0400 18.0000 18.0400 18.1600 18.3600
18.6400 19.0000
Columns 37 through 45
19.4400 19.9600 20.5600 21.2400 22.0000 22.8400 23.7600
24.7600 25.8400
Columns 46 through 51
27.0000 28.2400 29.5600 30.9600 32.4400 34.0000

plot(x,y)
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra

55

50

45

40

35

30

25

20

15
-5 -4 -3 -2 -1 0 1 2 3 4 5

Ateno!!!!!
Quando calculamos valores de expresses e funes utilizamos vetores de forma a
construir subdomnios. Exemplo o comando x=-5:0.2:5, que faz com o intervalo [-
5,5] seja dividido em 51 pontos. Desta forma utilizaremos 51 pontos em x para calcular
51 valores de y. Desta forma no estamos utilizando clculo matricial e sim um artifcio
numrico. Operaes do tipo x2 no seriam permitidos por incompatibilidade
dimensional, mas o MATLAB possui um operador que permite clculos entre
elementos de vetores e matrizes com mesma dimenso. O operador " ." que deve ser
colocado antes do operador tradicional. Assim:
x.^2= [ (-5)^2 (-4.8)^2 ......0......(4.8)^2 (5)^2]
o comando acima equivalente a
x.*x
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra

1
trace o grfico dx ln( x ) c para c=0,1,2, no intervalo [1,10]
x

x=1:0.2:10;
c=0:2;
y=ones(length(c),length(x));
y(1,1:length(x))=log(abs(x))+c(1);
y(2,1:length(x))=log(abs(x))+c(2);
y(3,1:length(x))=log(abs(x))+c(3);
plot(x,y(1,:),x,y(2,:),x,y(3,:));

4.5

3.5

2.5

1.5

0.5

0
1 2 3 4 5 6 7 8 9 10

Ateno!!!!!
O comando length(x) retorna o nmero de elementos do vetor x.

Trace o grfico de z x 2 2 y 2 no intervalo x [2,2], y [2,2]


UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra

x=-2:0.1:2;
y=x;
[xx,yy]=meshgrid(x,y);
zz=xx.^2+2*yy.^2;
surf(x,y,zz);

Ateno!!!!!
O comando surf(x,y,z) traa uma superfcie, onde x o vetor das abscissas, y o vetor
das ordenadas e z o valor da funo em todos os pontos (x,y) possveis, dados os
elementos nos vetores x e y. O comando meshgrid gera todas as combinaes possveis
de pontos (x,y) dados os vetores x e y.

O grfico do exemplo anterior do tipo 3D. Frequentemente, mais fcil estudar uma
funo de duas variveis atravs de suas curvas de nveis. O comando contour(z,n) traa
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
as n curvas de nveis, dado os valores z de uma funo de duas variveis. Do exemplo
anterior:

[c h]=contour(zz,5);

clabel(c,h);

8 8 10
40
10
6
6
8
8
35
4 4
6
6
2
30
2
4

4
25
2

20
2
4

15
2
4
2
10 6
6
4
4
8
8
5 6
6
10
8 8 10
5 10 15 20 25 30 35 40

Ateno!!!!!
O comando clabel(c,h), calcula os valores de cada curva de nvel e os coloca como
rtulos nogrfico de contorno.

d. Exerccios

Trace os grficos das seguintes funes abaixo:


UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
y (t ) t e t c , c=0,1,2,3
z ( x, y ) ln( x y ), x[-15,-1] e y[-15,-1]
p3 4
w( p ) , p[1.234,3]
sin( p )
f ( x) x 2 2 , x[2,12]
1
w(x,y)= x 3 y 2 , x[1,10], y[1,8]
Trace as curvas de nveis das funes abaixo
z ( x, y ) ln( x y ), x[-15,-1] e y[-15,-1]
1
w(x,y)= x 3 y 2 , x[1,10], y[1,8]
Resolva as seguintes expresses
2
A ,B
3



100 A A2 A3
C B 25B 2 B3
A
A ln( A) B ln( A)
B
D (C 1 ) det(C )

det(C ) x Ay B

Bx det(D) y A
Calcule
100
1 n
2
n 1 n

n
xi
1
i
yn , x=2 e n=4,6,12,18,36
i 1 i!

Neste exerccio, utlize a funo sum(x) do MATLAB, onde x um vetor qualquer.


Ex.:
10
s n 1 2 ... 10
n 1

No Matlab:
UFPA-CASAN
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra

n=1:10

n =
1 2 3 4 5 6 7 8 9 10
sum(n)

ans =
55

Você também pode gostar