Académique Documents
Professionnel Documents
Culture Documents
Colegiado de Matemtica-LASERS
Prof. Dr. Carlos Eduardo Guerra
INTRODUO A LINGUAGEM DE
PROGRAMAO NO MATLAB TM
INTRODUO
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.
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 ( )
(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
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 ";".
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
D=[1 3 -24;-3 7 0]
D =
1 3 -24
-3 7 0
B =
-1 -3 -5
-7 -9 -11
-13 -15 -17
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
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
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
clear b
who
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
C D a ans x y
Finalmente, para apagarmos todas as variveis criadas, basta digitar "clear" sozinho.
clear
who
Cuidado!!!!!
O comando "clear" irreversvel, i., uma vez apagada uma varivel, seu
contedo no pode ser mais recuperado.
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.
c. Funes pr-definidas
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:
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.
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
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!
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