Você está na página 1de 56

UNIVERSIDADE FEDERAL DE SANTA MARIA

CENTRO DE CINCIAS NATURAIS E EXATAS


CURSO DE MATEMTICA
PROGRAMA DE EDUCAO TUTORIAL PET MATEMTICA

INTRODUO AO MATLAB

Edinia Filipiak
Fernanda Ronssani de Figueiredo
Fernanda Somavilla
Orientador: Prof. Dr. Antonio Carlos Lyrio Bidel

Santa Maria, 2012

SUMRIO
1.

APRESENTAO ............................................................................................................... 4

2.

INTRODUO AO SOFTWARE ....................................................................................... 5

3.

4.

5.

6.

7.

2.1.

Interface......................................................................................................................... 5

2.2.

Variveis ....................................................................................................................... 8

2.3.

Matemtica Simblica ................................................................................................... 9

MATRIZES ......................................................................................................................... 11
3.1.

Definindo matrizes ...................................................................................................... 11

3.2.

Operaes com matrizes.............................................................................................. 12

3.3.

Matrizes elementares ................................................................................................... 15

FUNES MATEMTICAS ............................................................................................ 18


4.1.

Funes Trigonomtricas ............................................................................................ 18

4.2.

Funes Exponenciais ................................................................................................. 18

4.3.

Funes de Simplificao e Arredondamento ............................................................. 18

4.4.

Funes Complexas..................................................................................................... 19

4.5.

Outras funes ............................................................................................................. 20

POLINMIOS .................................................................................................................... 21
5.1.

Funes relacionadas polinmios ............................................................................. 21

5.2.

Solucionando equaes ou sistemas ............................................................................ 23

CLCULO .......................................................................................................................... 25
6.1.

Limites......................................................................................................................... 25

6.2.

Derivadas..................................................................................................................... 25

6.3.

Integrais ....................................................................................................................... 26

6.4.

Somatrio .................................................................................................................... 27

6.5.

Srie de Taylor ............................................................................................................ 28

GRFICOS ......................................................................................................................... 29
7.1.

Grficos 2D ................................................................................................................. 29

7.2

Diagramas Bidimensionais .......................................................................................... 37

7.2.1

Grficos de Barras ............................................................................................... 37

7.2.2

Grfico de Setores ............................................................................................... 38

7.2.3

Histogramas ......................................................................................................... 39

7.3

Grficos 3D ................................................................................................................. 40

7.3.1

Meshgrid.............................................................................................................. 41

8.

PROGRAMAO .............................................................................................................. 44
8.1.

8.1.1.

Scripts .................................................................................................................. 44

8.1.2.

Funes ............................................................................................................... 44

8.2.

Controladores de fluxo ................................................................................................ 45

8.2.1.

O lao for............................................................................................................. 45

8.2.2.

O comando While ................................................................................................ 47

8.2.3.

O comando if ....................................................................................................... 48

8.2.4.

O comando break ................................................................................................ 49

8.2.5.

O comando pause ................................................................................................ 49

8.2.6.

O comando input ................................................................................................. 49

8.2.7.

O comando disp................................................................................................... 50

8.2.8.

O comando switch ............................................................................................... 50

8.2.9.

O comando fprintf ............................................................................................... 51

8.2.10.

Comandos de organizao ................................................................................... 51

8.3.
9.

Arquivos M ................................................................................................................. 44

Exemplificao ............................................................................................................ 51

BIBLIOGRAFIA ................................................................................................................. 56

Introduo ao MATLAB
1.

APRESENTAO

MATLAB (MATrix LABoratory) um software para computao numrica e


visualizao de alta performance, fcil de ser usado, onde os problemas e solues so
expressos quase que da mesma forma que no papel. uma linguagem de alto
desempenho para computao tcnica que integra computao, visualizao e
programao em um ambiente de fcil uso onde problemas e solues so expressos em
linguagem matemtica.
Seus elementos bsicos so matrizes que no requerem dimensionamento. Ele
permite implementar e resolver problemas matemticos muito mais rpida e
eficientemente que atravs de outras linguagens como C, Basic, Pascal ou Fortran.
Ainda, o MATLAB possui uma famlia de aplicativos especficos (toolboxes), que so
colees de funes usadas para resolver determinados problemas tais como:
otimizao, manipulao algbrica, redes neurais, processamento de sinais, simulao
de sistemas dinmicos, entre outros.
O objetivo deste minicurso introduzir os principais conceitos utilizados no
ambiente MATLAB. Devido grande quantidade de funes disponibilizadas pelo
MATLAB, impossvel aprender todo o seu contedo em um nico curso. Entretanto, o
aluno ser capaz de entender como o MATLAB funciona e descobrir quais funes so
teis para as suas aplicaes.
Este minicurso foi desenvolvido, pelos bolsistas do Grupo PET Matemtica
Programa de Educao Tutorial Edinia Filipiak, Fernanda Ronssani de Figueiredo e
Fernanda Somavilla, sob orientao do Professor Tutor Antonio Carlos Lyrio Bidel,
como uma proposta de qualificar a formao de bolsistas e acadmicos na utilizao de
novas tecnologias aplicadas ao ensino e aprendizagem da matemtica.

PET Matemtica UFSM

Introduo ao MATLAB
2.
2.1.

INTRODUO AO SOFTWARE

Interface

1- Janela de Comandos;
2- Histrico de Comandos Digitados (permite o comando digitado ser realizado
novamente com um duplo clique);
3- Workspace (local onde todas as variveis criadas ficam armazenadas);
4- Pasta Atual;
5- Barra de Menus;
6- Barra de Ferramentas;
7- Botes de Comando da Janela.

A janela principal do MATLAB chama-se Command Window (Janela de


Comandos), onde os dados e instrues so digitados no prompt >> pelo usurio e,
aps a tecla Enter ser pressionada, o programa os processa imediatamente e expe na
tela o resultado. Os comandos digitados so armazenados em um buffer de comandos,
no qual pode-se navegar usando as teclas seta-para-cima e seta-para-baixo . Alm
disso, teclando-se o texto str, por exemplo, e usando-se as setas e , navega-se

PET Matemtica UFSM

Introduo ao MATLAB
por todos os comandos iniciados com o texto str. A tecla Esc limpa o que estiver
escrito na linha do comando.
Comandos terminados com ponto-e-vrgula. ; no exibem as variveis de
resposta na tela. O uso do ponto-e-vrgula til quando a impresso do resultado na tela
no interessa, ou quando a impresso muito extensa como, por exemplo, para uma
matriz 1000 1000. Deve-se ressaltar que, apesar da impresso ser suspensa, o
comando executado pelo programa. Vrios comandos podem ser digitados na mesma
linha, desde que estejam separados por vrgula ou ponto-e-vrgula. Comandos muito
longos para uma linha podem ser interrompidos por trs pontos ... e continuados na
linha seguinte.

Exemplo:
>> a=1, b=...
2;c=a+b
a =
1
c =
3
importante apontar que a Janela de Comando normalmente usada para testes

de comandos e funes ou simples operaes. Quando se deseja implementar algum


programa, projeto ou trabalho, utiliza-se o M-File Editor. Neste editor, cria-se um
arquivo texto .m com os comandos desejados. Para abrir um novo arquivo-M, clique
em File > New > M-file ou simplesmente digite o comando edit. Aps escrever o
programa, pode-se execut-lo pela tecla de atalho F5.
Alm da Janela de Comando e do Editor de Arquivo-M, h ainda as janelas
Help, Command History, Current Directory e Workspace, que esto respectivamente
relacionadas com ajuda, histrico dos ltimos comandos digitados, diretrio corrente do
programa e o espao de trabalho onde se visualizam dados e variveis. Essas janelas
podem ser mantidas fechadas ou abertas, dependendo da necessidade ou gosto do
usurio.
Um comando muito importante no MATLAB o HELP, o qual fornece ajuda
online sobre qualquer outro comando. O HELP pode ser aberto atravs da Barra de

PET Matemtica UFSM

Introduo ao MATLAB
Menu, da tecla de atalho F1 e do boto START. Quando se deseja obter informaes
sobre uma funo basta digitar na Janela de Comandos help seguido da funo
requerida.

Exemplo:
>> help sin
SIN
Sine of argument in radians.
SIN(X) is the sine of the elements of X.
See also asin, sind.
Overloaded methods:
codistributed/sin
Reference page in Help browser
doc sin
Clicando em doc sin ir aparecer a janela do HELP da funo sin.

PET Matemtica UFSM

Introduo ao MATLAB
2.2.

Variveis

O MATLAB trabalha essencialmente com um tipo de varivel: uma matriz


contendo nmeros, complexos ou no (um escalar uma matriz 1 x 1).
No MATLAB no necessrio que sejam declaradas as variveis para inici-las,
como feito em outras linguagens de programao, elas so geradas automaticamente
ao serem utilizadas. Para criar e/ou armazenar informaes em variveis definidas pelo
usurio, basta digitar o nome da varivel seguido do sinal de igual = e da expresso
desejada. Na escolha dos nomes das variveis, devem ser obedecidos os seguintes
critrios:

os caracteres podem ser alfanumricos (letras e nmeros), desde que iniciados por
letras;

letras maisculas e minsculas definem nomes diferentes (linguagem case


sensitive);

o caractere _ (underscore, underline ou sublinhado) pode ser usado no meio do


nome;

so permitidos nomes com, no mximo, 32 caracteres.


Caso seja executada uma expresso que gere um valor como resultado e, nessa

expresso no haja uma atribuio do resultado para alguma varivel definida pelo
usurio, o resultado ser armazenado na varivel ans, pr-definida pelo ambiente.
Existem comandos prprios para manipulao de variveis. Abaixo esto
listados os mais utilizados.

who: Lista os nomes das variveis.

whos: Lista o nome e o tipo das variveis.

clear: Elimina todas as variveis da rea de trabalho. Para se apagar uma ou mais
variveis utiliza-se o comando clear seguido dos nomes das variveis separadas por
espao.

save: Salva as variveis em arquivo, podendo utiliz-las novamente na prxima vez


que o programa for inicializado ou mesmo quando executado o comando clear.

load: Recupera as variveis previamente salvas em arquivo pelo comando save.

clc: Limpa a janela de comandos.

PET Matemtica UFSM

Introduo ao MATLAB
E existem algumas variveis pr-definidas que podem ser teis ao usurio, que
esto listadas a seguir.

Varivel
ans
eps
realmax
realmin
pi
i, j
flops
NaN ou Not-aNumber ou Valor
no numrico
inf
nargin
nargout
bitmax

Descrio
Varivel padro para armazenar resultados;
Preciso de ponto flutuante, ou distncia entre o 1 e o prximo
nmero real.
Maior nmero real positivo utilizvel;
Menor nmero real positivo utilizvel;
3, 14159265358979
Unidades imaginrias;
Contador de operaes matemticas;
Indeterminao;
Infinito;
Nmero de argumentos de entrada de uma funo;
Nmero de argumentos de sada de uma funo;
Maior nmero inteiro positivo utilizvel;

Neste software no necessrio declarar o tipo de varivel que ser utilizado,


mas pode-se escolher o formato que vai ser utilizado. Observe:

Comando
format long
format short
format short e

Varivel
3.141592653589793
3.1415
3.1415e+000

format long e

3.141592653589793e+000

format +

format rat
format hex

355/113
400921fb54442d18

2.3.

Descrio
Com 16 dgitos
Com 5 dgitos
Com 5 dgitos em notao cientfica
Com 16 dgitos em notao
cientfica
Retorna + para valores positivos e
- para valores negativos
Aproximao racional
Aproximao hexadecimal

Matemtica Simblica
H, em algumas situaes, a necessidade de se trabalhar com variveis

simbolicamente, pois possibilita uma viso mais geral sobre o resultado de um

PET Matemtica UFSM

Introduo ao MATLAB
problema. Neste contexto, uma funo importante a syms, que declara as variveis
como simblica.
Vejamos como para uma varivel:
>> syms x
Ou para mais de uma varivel:
>> syms a b c
Uma outra funo a sym, que transforma uma expresso para a forma literal.
utilizada da seguinte forma:
>> S = sym(A)
>> x = sym('x')
Como exemplo, veja a diferena dessas duas funes executando os comandos a
seguir:
>> rho = sym('(1 + sqrt(5))/2')
>> syms x y
>> f = x^2*y + 5*x*sqrt(y)

Em alguns casos, quando se desejar determinar quais as variveis simblicas


numa expresso, usa-se a funo findsym, que retorna os parmetros que so simblicos.
Desse modo:
>> findsym(S)
>> findsym(S,n)
Uma outra funo a subs, que substitui a varivel declarada inicialmente
simblica por uma outra ou mesmo por um nmero.
>> R = subs(S)
>> R = subs(S, new)
>> R = subs(S,old,new)

PET Matemtica UFSM

10

Introduo ao MATLAB
3.

3.1.

MATRIZES

Definindo matrizes

Uma matriz montada linha aps linha, onde espao ou vrgula indicam
transio de coluna e ponto-e-vrgula indica transio de linha.
>> [1,2;3,4]
ans =
1
3

2
4

Outra maneira de definir matrizes consiste em criar vetores-linha com elementos


em progresso aritmtica, atravs da simples sintaxe:
valor_inicial : incremento : valor_final
onde os valores fornecidos no precisam ser necessariamente inteiros. Basicamente, o
primeiro elemento do vetor criado corresponde ao valor inicial e os elementos seguintes
so acrescidos do passo (ou incremento), de tal maneira que nunca ultrapasse o valor
final. Caso o incremento seja omitido, ele ser entendido como igual a 1.
>> 1:5:31
ans =
1

11

16

21

26

31

>> 2:6
ans =
2

Aps definirmos uma matriz, podemos selecionar um elemento, uma linha


inteira ou uma coluna inteira da seguinte forma:
>> A=[1,2,3;4,5,6;7,8,9]

PET Matemtica UFSM

11

Introduo ao MATLAB
A =
1
4
7

2
5
8

3
6
9

>> A(2,1)
ans =
4
>> A(:,2)
ans =
2
5
8
>> A(3,:)
ans =
7

3.2.

Operaes com matrizes

As operaes podem ser de dois tipos: matricial ou escalar. As operaes do tipo


matricial referem-se s operaes matemticas sobre matrizes. As operaes escalares
so tambm denominadas de operaes sobre conjuntos. Essas ltimas so realizadas
elemento a elemento de cada matriz, aplicando-se o operador em questo apenas entre
elementos de mesma posio matricial.
Definindo-se x e y, da seguinte forma, pode-se associ-los pelos seguintes
operadores:
>> x=[2,4;5,3]
x =
2
5

4
3

>> y=[10,2;4,5]

PET Matemtica UFSM

12

Introduo ao MATLAB
y =
10
4

2
5

+ : adio (matricial e escalar).


>> x+y
ans =
12
9

6
8

: subtrao (matricial e escalar).


>> x-y
ans =
-8
1

2
-2

* : multiplicao matricial.
>> x*y
ans =
36
62

24
25

/ : diviso matricial direita.


>> x/y
ans =
-0.1429
0.3095

0.8571
0.4762

\ : diviso matricial esquerda.


>> x\y

PET Matemtica UFSM

13

Introduo ao MATLAB
ans =
-1.0000
3.0000

1.0000
0

: potenciao matricial.
>> x^2
ans =
24
25

20
29

: transposio matricial.
>> x'
ans =
2
4

5
3

.* : multiplicao escalar.
>> x.*y
ans =
20
20

8
15

./ : diviso escalar direita.


>> x./y
ans =
0.2000
1.2500

2.0000
0.6000

.\ : diviso escalar esquerda.

PET Matemtica UFSM

14

Introduo ao MATLAB
>> x.\y
ans =
5.0000
0.8000

0.5000
1.6667

. : potenciao escalar.
>> x.^2
ans =
4
25

16
9

Observaes:
1. Para operaes entre matriz e nmero escalar, o programa faz uma expanso
escalar do nmero, executando a operao entre o nmero e cada elemento da
matriz.
>> x+3
ans =
5
8

7
6

2. A precedncia de operaes pode ser controlada utilizando-se parnteses.


>> ((x+3)*x')'
ans =
38
46
3.3.

40
58

Matrizes elementares

Matriz com todos os elementos iguais a 1: ones(m,n)


>> ones(3,2)

PET Matemtica UFSM

15

Introduo ao MATLAB

ans =
1
1
1

1
1
1

Matriz nula: zeros(m,n)


>> zeros(2,3)
ans =
0
0

0
0

0
0

Matriz identidade: eye(n)


>> eye(3)
ans =
1
0
0

0
1
0

0
0
1

Matriz aleatria: rand(m,n)


>> rand(2,3)
ans =
0.8147
0.9058

0.1270
0.9134

0.6324
0.0975

A seguir listamos algumas funes matriciais que podem ser teis. Considere a
uma matriz.

Comando
eig(a)
chol(a)
svd(a)
inv(a)

Descrio
Autovalores e Autovetores;
Fatorao de Cholesky;
Decomposio em fator singular;
Inversa;

PET Matemtica UFSM

16

Introduo ao MATLAB
lu(a)
qr(a)
hess(a)
schur(a)
expm(a)
sqrtm(a)
poly(a)
det(a)
size(a)

Fatorao triangular LU;


Fatorao ortogonal QR;
Forma de Hessenberg;
Decomposio de Schur;
Matriz Exponencial;
Matriz de raiz quadrada;
Polinmio caracterstico;
Determinante;
Tamanho;
Retorna o comprimento do vetor ou a maior dimenso de uma
length(a)
matriz de entrada.
norm(a)
Norma 1, Norma 2, Norma F, Norma Infinita;
cond(a)
Nmero de condio na norma 2;
rank(a)
Nmero de linhas linearmente independentes;
Retorna um vetor com a soma dos elementos da diagonal
trace(a)
principal de uma matriz;
Gera uma matriz com os elementos acima da diagonal
triu(a)
principal de a e zera os elementos que esto abaixo;
Gera uma matriz com os elementos abaixo da diagonal
tril(a)
principal de a e zera os elementos que esto acima;
diag(a)
Fornece os elementos da diagonal;
Gera uma matriz com os elementos da diagonal principal de a
diag(diag(a))
e com zeros nas outras posies;
flipud(a)
Coloca a matriz a de cabea para baixo;
fliplr(a)
Coloca a matriz da esquerda para a direita;
rot90(a)
Roda a matriz em sentido anti-horrio;
Retorna uma matriz m por n, cujos elementos so tomados
reshape(a,m,n)
coluna por coluna de a.
Retornam, respectivamente, o valor mnimo e o valor mximo
min(a) e
dos elementos de cada coluna de uma matriz de entrada ou o
max(a)
valor mnimo e o valor mximo dos elementos de um vetor de
entrada.
Retorna a soma dos elementos de cada coluna de uma matriz
sum(a)
de entrada ou a soma dos elementos de um vetor de entrada.
Retorna o produto dos elementos de cada coluna de uma
prod(a)
matriz de entrada ou o produto dos elementos de um vetor de
entrada.
cross(v,u)
Produto vetorial entre os vetores v e u.
dot(v,u)
Produto escalar entre os vetores v e u.

PET Matemtica UFSM

17

Introduo ao MATLAB
4.

FUNES MATEMTICAS

O MATLAB possui diversas funes matemticas elementares, as quais podem


ser listadas pelo comando help elfun. Abaixo, esto listadas as mais comumente
utilizadas.

4.1.

Funes Trigonomtricas

As funes trigonomtricas trabalham com valores de ngulos expressos em


radianos. Quando for desejado entrar com um argumento em grau, basta utilizar o
sufixo d em cada funo. Para determinar a funo hiperblica utiliza-se o sufixo h em
cada funo e para determinar o arco de um valor emprega-se o prefixo a em cada
funo.
sin(X)
sinh(X)
asin(X)
cos(X)
cosh(X)
acos(X)
tan(X)
tanh(X)
atan(X)
4.2.

Seno
seno hiperblico
arco seno
Cosseno
cosseno hiperblico
arco cosseno
Tangente
tangente hiperblica
arco tangente

sec(X)
sech(X)
asec(X)
csc(X)
csch(X)
acsc(X)
cot(X)
coth(X)
acot(X)

secante
secante hiperblica
arco secante
cossecante
cossecante hiperblica
arco cossecante
cotangente
cotangente hiperblica
arco cotangente

Funes Exponenciais
log(X)
log10(X)
log2(X)
exp(X)
sqrt(X)

Determina o logaritmo natural ou neperiano de X.


Determina o logaritmo de X na base 10.
Calcula o logaritmo de X na base 2.
Determina a expresso de .
Retorna a raiz quadrada de X.

4.3. Funes de Simplificao e Arredondamento

Comando
collect

Descrio
Reescreve a expresso como um polinmio

PET Matemtica UFSM

18

Introduo ao MATLAB
expand

Expande a expresso em produtos e somas

horner

Determina o fator em comum da expresso

factor

Fatora o polinmio, se os coeficientes so racionais

simplify

Simplifica as expresses, de forma mais geral

compose

Calcula a composio das funes

inverse

Encontra a inversa funcional da funo

fix

Aproxima para o inteiro de menor valor absoluto, ignorando as casas


decimais.

floor

Aproxima para o inteiro antecessor.

ceil

Aproxima para o inteiro sucessor.

round

Arredonda para o inteiro mais prximo.

rem

Resto de diviso inteira, dados respectivamente o dividendo e o


divisor. Para dividendos negativos, sendo x e y inteiros positivos,
rem(-x,y)=-rem(x,y). Mais detalhes em help rem.

mod

Resto de diviso inteira, dados respectivamente dividendo e o


divisor. Para dividendos negativos, sendo x e y inteiros positivos,
mod(-x,y)=y-mod(x,y) se mod(x,y)6=0, ou mod(-x,y)=0 caso
contrrio. Mais detalhes em help mod.

sign

Retorna +1 para nmeros positivos, 1 para nmeros negativos e 0


para nmeros iguais a zero.

4.4.

Funes Complexas

No MATLAB para definirmos um nmero complexo utilizamos os operadores i


e j ou a funo complex. Utilizando a funo complex obtemos:
>> complex(2,3)
ans =
2.0000 + 3.0000i

Quando se deseja trabalhar com mdulo, ngulo de fase, conjugado, ou entre


outros, tornam-se fceis de serem calculados quando se utiliza a funo adequada. A
prxima tabela denota funes que possibilitam isso.

PET Matemtica UFSM

19

Introduo ao MATLAB
Funo
abs(X)
angle(X)
conj(X)
imag(X)
real(X)

Descrio
Retorna o mdulo do nmero complexo X
Retorna a fase do complexo X
Calcula o conjugado do nmero complexo X
Determina a parte imaginria de X
Determina a parte real de X

4.5. Outras funes

Funo
gcd(X,Y)
lcm(X,Y)
factorial(N)
primes(N)
rem(X,Y)
perms(V)

Descrio
Determina o mximo divisor comum entre dois parmetros.
Determina o mnimo mltiplo comum entre dois parmetros.
Retorna o fatorial de um argumento.
Devolve uma lista com uma quantidade desejada de nmeros
primos.
Determina o resto da diviso de dois argumentos.
Devolve todas as permutaes possveis dos argumentos dados.

PET Matemtica UFSM

20

Introduo ao MATLAB
5.

POLINMIOS

No MATLAB representamos polinmios como uma matriz linha, contendo os


coeficientes em ordem decrescente. Por exemplo, o polinmio 4x3 -5x2 +3x -28
representado da forma:
>> p=[4,-5, 3, -28]
p =
4

5.1.

-5

-28

Funes relacionadas polinmios

As principais funes relacionadas polinmios so descritas a seguir:

poly: Determina os coeficientes do polinmio a partir de suas razes. Caso a


entrada seja uma matriz, este calcula o polinmio caracterstico da matriz.
>> A=[2,1]

% Declara um vetor linha [2,1]

A =
2

>> S=poly(A)

% S o polinmio (x-2)(x-1)=x-3x+2,

que tem como razes 2 e 1


S =
1

-3

>> B=[1 5 3; 0 -2 9; 2 11 -1] % Declara matriz


B =
1

-2

11

-1

>> poly(B) % Calcula o seu polinmio caracterstico


ans =
1.0000

2.0000 -106.0000

PET Matemtica UFSM

-5.0000

21

Introduo ao MATLAB

roots: Retorna um vetor coluna com a(s) raiz(es) do polinmio fornecido.


>> C=[1 -3 2]

% Declara um vetor correspondente ao

polinmio x-3x+2
C =
1

-3

>> X=roots(C)

% Calcula as razes desse polinmio,

que so 2 e 1
X =
2
1

polyval: Determina o valor do polinmio para uma determinada entrada. Se a


entrada for uma matriz, a funo retorna o valor do polinmio para cada elemento.
>> polinomio=[3 -4 7 -3.2]

% polinmio 3x -4x +7x -

3.2
polinomio =
3.0000

-4.0000

7.0000

-3.2000

>> a=[1 -1; 0 1.5]


a =
1.0000

-1.0000

1.5000

>> valores=polyval(polinomio,a)
valores =
2.8000

-17.2000

-3.2000

8.4250

PET Matemtica UFSM

22

Introduo ao MATLAB
5.2.

Solucionando equaes ou sistemas

Para resolver sistemas no MATLAB utiliza-se a funo solve, a qual determina o


valor do polinmio para uma determinada entrada. Mas primeiro devemos definir a
varivel atravs do comendo syms.

Comando
solve(eq)

Descrio
Resolve a equao eq=0.
Determina as solues de eq=0, em funo da
solve(eq,var)
varivel var.
solve(eq1,eq2,...,eqn) Resolve um sistema de equaes definidas.
g =
Calcula as solues de um sistema de solues em
solve(eq1,eq2,...,eqn,
funo das variveis pr-definidas.
var1,var2,...,varn)

Exemplo:
>> syms x
>> solve(x^2-5*x+6,x)
ans =
2
3
>> syms x y z
>> g=solve(x^2-2*x+1,y^2+4*y+4,z^2+6*z+9,x,y,z)
g =
x: [1x1 sym]
y: [1x1 sym]
z: [1x1 sym]
>> gx=g.x
gx =
1
>> gy=g.y
gy =
-2
>> gz=g.z

PET Matemtica UFSM

23

Introduo ao MATLAB
gz =
-3

Quando se trata de equaes diferenciais, a funo destinada para este caso a


dsolve, que soluciona simbolicamente uma equao ou sistema de equaes diferenciais
ordinrias.
r = dsolve('eq1,eq2,...', 'cond1,cond2,...','v')
r = dsolve('eq1','eq2',...,' cond1','cond2',...,'v')
r= dsolve('eq1,eq2,...','cond1,cond2,...', 'v')

PET Matemtica UFSM

24

Introduo ao MATLAB
6.

CLCULO

O MATLAB disponibiliza funes que facilitam a operao de certos clculos,


por exemplo, as funes limit, diff, int so algumas delas, as quais calculam o limite de
uma funo, diferenciam e integram, respectivamente. Vejamos essas e outras funes a
seguir:

6.1.

Limites

Para determinar o limite de uma expresso simblica utilizamos a funo limit.

Comando

Descrio
Calcula o limite de uma expresso simblica F com x
limit(F,x,a)
tendendo a a.
Determina o limite de F com uma varivel simblica
limit(F,a)
tendendo a a.
limit(F)
Determina o limite com a = 0 como default.
limit(F,x,a,'right') Calcula o limite com x tendendo a a pela direita.
limit(F,x,a,'left')
Calcula o limite com x tendendo a a pela esquerda.

Exemplo:

| |

>> syms x
>> limit('(abs(x^2)-1)/(x^2-1)',x,1,'right')
ans =
1

6.2.

Derivadas

Derivamos uma funo ou matriz utilizando a funo diff.

Comando
diff(S)
diff(S,'v')
diff(S,n)

Descrio
Diferencia a expresso simblica S em funo de uma varivel
simblica.
Diferencia S em torno de uma varivel simblica v.
Diferencia, para um n inteiro positivo, S por n vezes.

PET Matemtica UFSM

25

Introduo ao MATLAB
diff(S,'v',n) Diferencia em torno de uma varivel v, S por n vezes.

Exemplo: Determinar a derivada de 1 ordem de ( )

( )

>> syms x
>> S=sqrt(log(x)+exp(x));
>> diff(S)
ans =
(exp(x) + 1/x)/(2*(exp(x) + log(x))^(1/2))
>> pretty(ans)
1
exp(x) + x
---------------------1/2
2(exp(x) + log(x))

Obs.: A funo pretty utilizada para transformar a sada de acordo com a


representao matemtica.

6.3.

Integrais

Calculamos a integral de uma funo simblica dada com a funo int.

Comando

Descrio
Integrao indefinida a funo S em respeito a uma varivel
int(S)
simblica j definida.
int(S,a,b)
Integra de forma definida a funo S de a a b.
int(S,v,a,b) Integra de a a b em funo de uma varivel v.

Exemplo: Dado a funo ( )

, calcule a integral:

Indefinida:
>> syms x
>> S=sqrt(x^2+5);
>> f=int(S,x)
f =

PET Matemtica UFSM

26

Introduo ao MATLAB
(5*asinh((5^(1/2)*x)/5))/2 + (x*(x^2 + 5)^(1/2))/2

Definida de 2 a 5:
>> g=int(S,x,2,5)
g =
(5*log(5^(1/2) + 6^(1/2)))/2 - (5*log(5))/4 +
(5*30^(1/2))/2 - 3

A integral da funo g foi calculada de forma simblica, para obter o valor


numrico da funo basta utilizar a funo eval. Assim a integral de g :
>> eval(g)
ans =
12.5425

6.4.

Somatrio

Uma funo muito utilizada em Sries Numricas a symsum, que encontra o


somatrio simblico de uma expresso.

Comando
r = symsum(s)
r = symsum(s,v)
r = symsum(s,a,b)
r = symsum(s,v,a,b)

Descrio
Encontra o somatrio da funo s em funo de uma
varivel simblica pr-definida.
Fornece o somatrio em funo da varivel v.
Determina o somatrio de s variando a incgnita de a
at b.
Determina o somatrio de s variando a incgnita v de a
at b.

Exemplo: Determine o somatrio de


>> syms x
>> S=x^2
S =
x^2
>> r=symsum(S,x,0,x-1)
r =

PET Matemtica UFSM

27

Introduo ao MATLAB
(x*(2*x - 1)*(x - 1))/6

6.5.

Srie de Taylor

A Srie de Taylor definida como sendo:


( )

( )

( )

Considerando P(x) como sendo o polinmio de Taylor, de ordem n, em torno do


ponto

, ento P(x) o nico polinmio de grau no mximo n que aproxima

localmente f em volta de
(

de modo que o erro E(x) tenda a zero mais rapidamente que

) , quando x .
O MATLAB dispe da funo taylor que expande em srie de Taylor uma

funo.

Comando

Descrio
Faz a aproximao pelo polinmio de Taylor at a quinta
taylor(f)
ordem para a funo simblica f.
Retorna o polinmio de Taylor para a funo simblica f at
taylor(f,n,v)
o grau n-1 para a varivel especificada por v.
Retorna a aproximao de Taylor de f em torno do ponto a,
taylor(f,n,v,a)
que pode ser simblica ou um valor numrico.

Exemplo: Calcular o polinmio de Taylor para a funo ( )

( )

>> syms x
>> f=1/(5+4*cos(x))
f =
1/(4*cos(x) + 5)
>> T=taylor(f,8)
T =
(49*x^6)/131220 + (5*x^4)/1458 + (2*x^2)/81 + 1/9
>> pretty(T)
6
49 x

4
5 x

2
2 x

------ + ---- + ---- + 131220

1458

PET Matemtica UFSM

81

28

Introduo ao MATLAB
7.

GRFICOS

Grficos constituem um recurso visual poderoso para a interpretao de dados.


O MATLAB dispe de um grande nmero de facilidades grficas, usadas para plotar
(gerar desenho de grficos) atravs de funes e comandos. possvel obter grficos
bidimensionais ou tridimensionais.

7.1.

Grficos 2D

Basicamente, os grficos so construdos conforme os passos abaixo:


1. Cria-se um vetor X com as coordenadas do eixo das abscissas;
2. Escreve-se a funo desejada, a partir do vetor X, a qual criar um novo vetor Y
das ordenadas;
3. Desenha-se o grfico, o que ser ensinado mais adiante.

Os pares ordenados (x,y) assim criados so marcados no grfico e ligados por


segmentos retas (interpolao linear). Observa-se, portanto, que, quanto menor for o
incremento do vetor X, mais pares ordenados sero criados e, consequentemente,
melhor ser a preciso do grfico. Em compensao, uma maior quantidade de memria
utilizada.
A funo bsica para desenhar grficos em duas dimenses a funo plot.
>> x = -10:0.5:10;
>> y = x.^2+1;
>> plot(x,y);
120

100

80

60

40

20

0
-10

PET Matemtica UFSM

-5

10

29

Introduo ao MATLAB
Estes so os comandos para plotar grficos bidimensionais:
Comando
plot
loglog
semilogx
semilogy
fill
polar
stem
stairs
compass
feather
fplot
comet
ezplot

Descrio
Plotar linear
Grfico em escala logartmica
Grfico em escala semi-logartmica (eixo x)
Grfico em escala semi-logartmica (eixo y)
Desenhar polgono 2D
Grfico em coordenadas polar
Grfico de sequncia discreta
Grfico em degrau
Grfico em forma de bssola
Grfico em forma de pena
Grfico da funo
Grfico com trajetria de cometa
Plota grficos no domnio padro -2 < x < 2

Nos grficos podemos utilizar os comandos title (inclui um ttulo ao grfico),


xlabel (permite que o eixo das abscissas do grfico seja identificado), ylabel (permite
que o eixo das ordenadas do grfico seja identificado). No exemplo utilizando a funo
plot podemos inserir os seguintes comandos para obter um grfico com ttulo e com os
eixos das abscissas e das ordenadas identificados.
>> x = -10:0.5:10;
>> y = x.^2+1;
>> plot(x,y);
>> title('Grfico da funo x^2+1')
>> xlabel('x')
>> ylabel('y')
2

Grfico da funo x +1
120

100

80

60

40

20

0
-10

PET Matemtica UFSM

-5

0
x

10

30

Introduo ao MATLAB
Obs.: Para que todos os comandos apaream no mesmo grfico imprescindvel
que a nova janela aberta pelo MATLAB no seja fechada.

possvel desenhar mais que uma funo no mesmo grfico.


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 sen(x),cos(x),sen(2x)')
>> xlabel('x')
>> ylabel('y')
Grafico das funes sen(x),cos(x),sen(2x)
1
0.8
0.6
0.4
0.2

0
-0.2
-0.4
-0.6
-0.8
-1

10
x

12

14

16

18

20

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 e incluir grade. Na tabela a seguir vemos os principais valores para os
atributos cores, marcadores e estilos de linha.

y
m
c
r

Cor
Amarelo
Rosa(magenta)
Azul(ciano)
Vermelho

.
o
x
+

PET Matemtica UFSM

Marcadores
Ponto
Crculo
X
Mais

Estilo de Linha
Slido
:
Pontilhado
-.
Ponto-trao
-Tracejado

31

Introduo ao MATLAB
g
b
w
k

*
s
v
^
p

Verde
Azul
Branco
preto

Asterisco
Quadrado
Tringulo para baixo
Tringulo para cima
Pentgono

>> x=-10:0.5:10;
>> y=x.^2+1;
>> plot(x,y,'m*-.');
120

100

80

60

40

20

0
-10

-5

10

Com o comando grid podemos adicionar linhas de grade no desenho do grfico:


grid on (para incluir) e grid off ( para remover).
Legendas podem ser criadas por meio da funo legend, utilizando a seguinte
estrutura:
legend('texto1','texto2,...,posio)
Onde na posio podem ser atribudos os seguintes valores de posicionamento
da legenda:

Valor
0
1
2
3
4
-1

Significado
Escolha automtica da melhor posio (mnimo conflito com os dados)
Canto superior direito
Canto superior esquerdo
Canto inferior esquerdo
Canto superior direito
direita do desenho

Alm do ttulo, possvel adicionar qualquer outro texto em algum lugar


especfico do grfico plotado atravs do comando text, com a seguinte sntese:

PET Matemtica UFSM

32

Introduo ao MATLAB
text (x,y, 'texto desejado')
Onde x, y so as coordenadas nas quais desejamos que o texto aparea.
Obs.: \pi faz aparecer o smbolo .
>> plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))
>> text(pi,0,' sin(\pi)')
1
0.8
0.6
0.4
0.2
0

sin()

-0.2
-0.4
-0.6
-0.8
-1

Com a mesma finalidade pode ser utilizado o comando gtext, com a diferena de
com este a posio do texto escolhida atravs do mouse. Tem a sntese:
gtext('texto desejado')

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:

Comando
axis([xmin xmax
ymin ymax])
axis square
axis equal
axis normal
axis off
axis on

Descrio
Define os valores mximos e mnimos dos eixos usando os
valores dados no vetor de linha.
Torna quadrado o quadro dos eixos.
Ajusta os incrementos de eixos para que sejam iguais nos
dois eixos.
Cancela o efeito dos dois comandos anteriores.
Desliga todos os nomes de eixos, grades e marcadores. No
altera o ttulo nem os nomes colocados pelos comandos text e
gtext.
Liga nomes de eixos, marcadores e grade.

PET Matemtica UFSM

33

Introduo ao MATLAB
>> t = -6*pi:pi/100:6*pi;
>> x = cos(t);
>> y = sin(t);
>> plot(x,y);
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

>> axis off

possvel colocar mais de um conjunto de eixos em uma mesma figura, criando


assim mltiplos diagramas. Os subdiagramas so criados pelo comando subplot:
subplot(m,n,p)
Onde m denota o nmero linhas e n o nmero de colunas que se deseja dividir a
janela grfica; p indica qual das subdivises vai receber o grfico desejado.

Exemplos:
Plotar as funes sen(x) e cos(x), com x= -pi: pi/20 : pi, na mesma janela mas

em grficos separados, utilizando o comando subplot para dividir a janela em dois


subgrficos.

PET Matemtica UFSM

34

Introduo ao MATLAB
>> 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');
Subdiagrama 1
1
0.5
0
-0.5
-1
-4

-3

-2

-1

Subdiagrama 2
1
0.5
0
-0.5
-1
-4

-3

-2

-1

Alm do comando plot, podemos plotar uma funo atravs do comando fplot.
Basicamente, voc deve fornecer como primeiro argumento a funo que pretende usar
entre apstrofes e como segundo, o intervalo sobre o qual a funo ser plotada.
>> fplot('x^2+3', [ -1, 2])
5
4.5
4
3.5
3
2.5
2
1.5
1
-1

PET Matemtica UFSM

-0.5

0.5

1.5

35

Introduo ao MATLAB
O MATLAB tem uma funo chamada polar que se destina ao desenho de dados
usando coordenadas polares. Sua forma bsica :
polar(theta,r)

Exemplo:
A Cardiide pode ser expressa atravs de coordenadas polares por:
r=2(1+cos)
Utilizando o comando polar, vamos plotar a Cardiide.
>> theta = 0:pi/50:2*pi;
>> r=2*(1+cos(theta));
>> polar(theta,r,'r-');
>> title('Cardioide em Coordenadas Polares');
Cardioide em Coordenadas Polares
90

120

60
3
2

150

30

180

210

330

240

300
270

A forma paramtrica de uma curva plana pode ser descrita atravs do seguinte
par de funes:
x = f(t)
y = g(t)
Onde t um parmetro real que assume valores em um intervalo [a,b] e f(t) e
g(t) so funes quaisquer. Quando t = a, o ponto (xa,ya) =(f(a),g(a)) o incio da curva
e quando t=b, o ponto (xb,yb)=(f(b),g(b)) o final da curva.

Exemplo:
>> t = -6*pi:pi/100:6*pi;
>> x = cos(t);

PET Matemtica UFSM

36

Introduo ao MATLAB
>> y = sin(t);
>> plot(x,y);
>> axis square
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1

7.2

-0.5

0.5

Diagramas Bidimensionais

Alm dos grficos bidimensionais o MATLAB possui comandos que


possibilitam outras formas de representao de dados tais como: grficos de barras,
grficos do tipo pizza, grficos de haste, diagramas de radar, entre outros.
Abaixo listamos alguns dos mais utilizados, sua sntese e descrio:

7.2.1 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.
>> x = [1 2 3 4 5 6];
>> y = [5 4 6 7 2 5];
>> barh(x,y);
>> axis([0 10 0 7]);

PET Matemtica UFSM

37

Introduo ao MATLAB
>> title('Grafico de barras horizontais');
Grafico de barras horizontais

10

>> x = [1 2 3 4 5 6];
>> y = [5 4 6 7 2 5];
>> bar(x,y);
>> axis([0 7 0 8]);
>> title('Grafico de barras verticais');
Grafico de barras verticais
8
7
6
5
4
3
2
1
0

7.2.2 Grfico de Setores


um grfico representado por fatias de pizza de tamanhos variados. Cria-se
um vetor x com os dados a serem representados. Podemos ainda acrescentar o vetor
explode, que um vetor lgico que recebe 1 ou 0, e cada elemento associado a um
elemento do vetor x. Sendo que 1 significa que a fatia da pizza correspondente
desenhada um pouco separada da pizza, e 0 a fatia permanece em sua posio normal.
>> x=[32 16 12 20 20];
>> explode=[1 0 0 0 0];

PET Matemtica UFSM

38

Introduo ao MATLAB
>> pie(x,explode);
>> title('Grfico de Setores');
>> legend('Um','Dois','Tres','Quatro','Cinco',-1);
Grfico de Setores
Um
Dois
Tres
Quatro
Cinco

20%
32%

20%

16%
12%

7.2.3 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.
hist(y), cria um histograma com 10 grupos igualmente espaados.
hist(y,n), cria um histograma com n grupos igualmente espaados.
>> y=randn(50,2);
>> hist(y,6);
18
16
14
12
10
8
6
4
2
0
-3

PET Matemtica UFSM

-2

-1

39

Introduo ao MATLAB
7.3

Grficos 3D

O MATLAB cria uma variedade de funes para grficos em 3 dimenses. Entre


elas:

Comando
plot3
fill3
comet3
contour
contour3
clabel
quiver
mesh
meshc
surf
surfc
surfil
slice
cylinder
sphere
ezplot3
ezsurf

Descrio
Plotar em espao 3D.
Desenhar polgono 3D.
Plotar em 3D com trajetria de cometa.
Plotar contorno 2D.
Plotar contorno 3D.
Plotar contorno com valores.
Plotar gradiente.
Plotar malha 3D.
Combinao mesh/contour.
Plotar superfcie 3D.
Combinao surf/contour.
Plotar superfcie 3D com iluminao.
Plot visualizao volumtrica.
Gerar cilindro.
Gerar esfera.
Plotar uma curva espacial de trs equaes paramtricas no
domnio padro 0 < t < 2.
Plotar a superfcie de um grfico de uma funo de duas
variveis no domnio padro -2 < x < 2 e -2 < y < 2 .

Exemplos:
>> ezplot3('sin(t)','cos(t)','t')
x = sin(t), y =cos(t), z =t

2
0
1
0.5

1
0.5

-0.5
y

PET Matemtica UFSM

-0.5
-1

-1

40

Introduo ao MATLAB
>> ezsurf('1/sqrt(x^2 + y^2)')
1/sqrt(x 2 + y 2)

0
5
5
0

0
-5

-5

>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t);
40

30

20

10

0
1
0.5

1
0.5

-0.5

-0.5
-1

-1

Obs.: Todos os comandos de grficos 2D, de escala, ttulo, nome aos eixos continuam
valendo ( nome ao eixo z: zlabel).
Para estipular os limites dos eixos x, y e z utilizam-se os seguintes comandos:
xlim([xmin xmax]) define o eixo X de xmin a xmax.
ylim([ymin ymax]) define o eixo Y de ymin a ymax.
zlim([zmin zmax]) define o eixo Z de zmin a zmax.

7.3.1 Meshgrid

O MATLAB define uma superfcie do tipo mesh (rede) pelas coordenadas Z


sobre um plano x-y. Superfcies tipo mesh so teis para visualizar matrizes
demasiadamente grandes para serem mostradas na forma numrica, ou para plotar
funes de duas variveis.

PET Matemtica UFSM

41

Introduo ao MATLAB
O primeiro passo para plotar uma funo de 2 variveis z=f(x,y) gerar matrizes
X e Y contendo linhas e colunas repetidas, respectivamente, para funcionarem como o
domnio da funo. A funo meshgrid transforma o domnio especificado por dois
vetores x y em duas matrizes X e Y. Essas matrizes ento so usadas para avaliar a
funo de 2 variveis. Por exemplo, seja a funo:
f(x,y) = sen(x2+y2)1/2 / (x2+y2)1/2
>> [X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
>> r=sqrt(X.^2+Y.^2);
>> Z=sin(r)./r;
>> mesh(X,Y,Z)

0.5

-0.5
10
5

10
5

-5

-5
-10

-10

e o comando contour(Z,10) mostra a projeo da superfcie acima no plano xy com 10


iso-linhas:
>> contour(Z,10)
30

25

20

15

10

PET Matemtica UFSM

10

15

20

25

30

42

Introduo ao MATLAB
>> subplot(221)
>> mesh(X,Y,Z)
>> title('sombrero')
>> subplot(222)
>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> title('Hlice')
>> subplot(223)
>> mesh(X,Y,X.^2-Y.^2)
>> title('Sela')
>> subplot(224)
>> mesh(X,Y,3*sqrt(X.^2+Y.^2))
>> title('cone')
sombrero

Hlice

40

20

-1
10

10

0
1

-10 -10

cone

100

40

20

-100
10

10
0
-10 -10

PET Matemtica UFSM

0
-1 -1

Sela

0
10

10

0
-10 -10

43

Introduo ao MATLAB
8.
8.1.

PROGRAMAO

Arquivos M

Quando uma linha de comandos digitada no MATLAB, ele imediatamente


processa e devolve o resultado. Porm, possvel executar sequncias de comandos,
que podem ser guardados em arquivos. Arquivos que contm comandos do MATLAB
so chamados arquivos M porque possuem extenso .m.
Um arquivo M formado por uma sequncia de comandos ou de referncia para
outros arquivos. Eles podem ser criados a partir de qualquer editor de texto e so
arquivos de texto comuns. Existem dois tipos distintos de arquivos: Scripts e Funes.
Existe ainda uma classe especial de funes chamada funes funo.

8.1.1. Scripts

Um arquivo texto contendo uma lista de comandos chamado script (roteiro) e


toda vez que for chamado efetua a lista de comandos como se eles fossem entrados
sequencialmente via teclado. No necessitam de declaraes ou delimitadores de
comeo e fim. o tipo de programao mais simples. So muito teis para
automatizao de comandos, como cdigos que necessitam ser executados
repetidamente. Estes arquivos se utilizam dos dados presentes na memria (workspace espao destinado s variveis que esto salvas na memria) para efetuar os comandos.
Existem duas opes para executar o arquivo, sendo a primeira o boto Run no centro
da barra de ferramentas, ou utilizando o atalho F5. Scripts so capazes de utilizar dados
existentes no workspace, bem como criar novos dados. Qualquer varivel utilizada
gravada no workspace, possibilitando utilizaes futuras.

8.1.2. Funes

Para criarmos funes necessitamos trabalhar na janela de M-Files, para tanto,


como voc j sabe, v em File > New > M > File. Antes de apresentarmos vamos
dar as 3 regras principais para a criao de funes no MATLAB:

Deve-se ter ao menos o nome da funo, a varivel de entrada e a funo f.

PET Matemtica UFSM

44

Introduo ao MATLAB

O arquivo .m deve ser salvo com o mesmo nome da funo.

A funo f deve ser igualada a funo operacional.

Vamos tornar mais claro esses pontos com um exemplo:


function [ f ] = hema( x )
f = x/24/30/12
end

Abrimos o M-File e digitamos function f e aps isso igualamos a uma funo


que criaremos, no caso hema, que significa horas em ano sendo uma transformao. Na
linha abaixo igualamos a funo f ao corpo da funo hema. E por ltimo temos a nossa
varivel de entrada que o x, que representa as horas. Pronto, agora basta salvar esse
arquivo com o nome idntico da funo hema, aps isso vamos janela de comando
principal e chamamos pela nova funo:

>> hema(8640)
f=
1

ans =
1

8.2.

Controladores de fluxo

Os comandos que controlam o fluxo especificam a ordem em que a computao


feita. No MATLAB estes comandos so semelhantes aos usados na Linguagem C,
mas com uma estrutura diferente.

8.2.1. O lao for

um dos comandos mais simples utilizados em MATLAB. Tem como sintaxe

for <condio>
[Comandos];

PET Matemtica UFSM

45

Introduo ao MATLAB
end

dividido em trs partes:


A primeira parte realizada uma vez, antes de o lao ser iniciado. A
<condio> especificada da forma m:n ou m:i:n, sendo m o valor inicial,
i o valor incremental e n o valor final da varivel.
A segunda parte o teste ou condio que controla o lao. Esta condio
avaliada; se verdadeira, o corpo do lao especificada em Comandos
executado.
A terceira parte acontece quando a condio se torna falsa e o lao termina.
O comando end usado como limite inferior do corpo do lao. Pode ocorrer de
serem utilizados conjuntos de laos for, principalmente na construo de matrizes.

Exemplo:
for i=1:5,
x(i)=i^2;
end
x

x =
1

16

25

Exemplo:
for i = 1:8
for j = 1:8,
A(i,j) = i + j;
B(i,j) = i - j;
end
end
C= A + B

A =
2
3
4
5
6
7
8
9

3
4
5
6
7
8
9
10

4
5
6
7
8
9
10
11

5
6
7
8
9
10
11
12

6
7
8
9
10
11
12
13

7
8
9
10
11
12
13
14

8
9
10
11
12
13
14
15

9
10
11
12
13
14
15
16

0
1

-1
0

-2
-1

-3
-2

-4
-3

-5
-4

-6
-5

-7
-6

B =

PET Matemtica UFSM

46

Introduo ao MATLAB
2
3
4
5
6
7

1
2
3
4
5
6

0
1
2
3
4
5

-1
0
1
2
3
4

-2
-1
0
1
2
3

-3
-2
-1
0
1
2

-4
-3
-2
-1
0
1

-5
-4
-3
-2
-1
0

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

2
4
6
8
10
12
14
16

C =

8.2.2. O comando While

Este comando testa a expresso de controle para execuo de outras sentenas.

while <condio>
[Comandos]
end

onde <condio> uma expresso de relao da forma e1-R-e2, sendo e1 e e2


expresses aritmticas e R um dos seguintes operadores de relao:
= = igual
< = menor ou igual
> = maior ou igual
= diferente
< menor
> maior

Adicionalmente podem ainda formar-se expresses lgicas mais complicadas


combinando elementos lgicos e expresses de relao, com os seguintes operadores
lgicos:
& operador e
| operador ou

PET Matemtica UFSM

47

Introduo ao MATLAB
operador de negao

Exemplo: Calcular o primeiro inteiro tal que n! tem quatro dgitos.


n=1;
while prod(1:n)<1.e100
n=n+1;
end
n

n =
70

8.2.3. O comando if

Utilizamos para testar condies e determinar sentenas a serem executadas.


Tem como sintaxe:

if <condio1>
[Comandos1]
elseif <condio2>
[Comandos2]
else
[Comandos3]
end

Testa condio1. Se condio1 for verdadeira executa as sentenas determinadas em


Comandos1 e passa para end; caso contrrio, testa condio2. Se condio2 for
verdadeira executa as sentenas em Comandos2 e passa para end; caso contrrio executa
Comandos3 e finaliza o programa. Nestes casos, as condies 1 e 2 so do tipo
expresso operador expresso conforme definido anteriormente. Por exemplo:
for i = 1:5,
for j = 1:5,
if (i == j)
A(i,j)=2;
else if (abs(i-j) == 1)
A(i,j) = -1;
else

PET Matemtica UFSM

48

Introduo ao MATLAB
A(i,j) = 0;
end
end
end
end
A

A =
2

-1

-1

-1

-1

-1

-1

-1

-1

8.2.4. O comando break

Termina um lao. Encerra a execuo de comandos for ou while quando so


encontrados.

8.2.5. O comando pause

Fornece uma pausa na execuo do programa, at que qualquer tecla ser


digitada. Pause(n) d uma pausa de n segundos.

8.2.6. O comando input

Exibe mensagem na tela e d ao usurio um prompt para entrada de dados.

input(texto);
input(texto,s)
O comando input(texto) exibe o texto na tela da linha de comando e retorna o valor
digitado at que seja pressionado enter. J input(texto,s) utilizado para entrada de
strings. Por exemplo:
id=input(Digite sua idade) guarda o nmero digitado em id;

PET Matemtica UFSM

49

Introduo ao MATLAB
nom=input(Digite o seu nome, s) guarda a string digitada em nom.

8.2.7. O comando disp

Esse comando exibe texto na tela de comando. Para escrever uma frase deve
rodear-se essa frase do smbolo . Quando se pretender escrever um conjunto de vrias
frases, devem separar-se as frases por vrgulas e rodear o conjunto com os smbolos [ e
]. Por exemplo,
disp([ Estou a escrever esta frase h , minutos ] )

Para combinar texto e valores numricos devem converter-se estes ltimos a


texto atravs da funo num2str. O comando
disp(['Estou a escrever esta frase h ',num2str(n),' minutos'] )

Estou a escrever esta frase h 10 minutos


escrever, no caso de n = 10, a frase Estou a escrever esta frase h 10 minutos.

8.2.8. O comando switch

Esse comando testa expresso de controle e seleciona um caso para executar.

switch switch_expr
case case_expr,
stat1, ..., stat1n
case {case_expr1, case_expr2, case_expr3,...}
stat2, ..., stat2n
...
otherwise,
stat3, ..., stat3n
end

PET Matemtica UFSM

50

Introduo ao MATLAB
Se switch_expr for igual a case_expr, ento as sentenas stat1 at stat1n sero
executadas, e terminado o comando. Se switch_expr for igual a case_expr1 ou
case_expr2 ou case_expr3 ..., ento as sentenas stat2 at stat2n sero executadas, e
terminado o comando. Se switch_expr for diferente de todos as case_exprs anteriores,
ento as sentenas stat3 at stat3n sero executadas, e terminado o comando.

8.2.9. O comando fprintf

um comando de sada de dados. O fprintf um mtodo em que possvel


combinar frases com variveis numricas de dimenso 1, ou seja, um escalar ou um
elemento da matriz. Assim, o que for digitado entre aspas aparecer para o usurio, os
itens onde aparece %d sero substitudos pelas variveis, respeitando-se a ordem em
que aparecem. Alm disso, %d significa que s aparecer a parte inteira de x e y, e toda
vez que for utilizado \n ocorrer uma troca de linha. Existem, ainda, os seguintes
comandos:

%d
%e
%f
%g

Exibe o valor como inteiro


Exibe o valor no formato exponencial
Exibe o valor em ponto flutuante
Escolhe o mais curto entre ponto flutuante e exponencial

8.2.10. Comandos de organizao


Podemos fazer um comentrio utilizando o smbolo %, ou selecionando o
texto todo e clicando Ctrl+R, ou ainda utilizando %{ para abrir o comentrio por
blocos e %} para fech-lo.
O uso de %%, faz com que o usurio possa rodar apenas algumas partes do
programa. Para rodar apenas a parte selecionada, tecle Ctrl+Enter e para rodar o
programa todo, clique em F5.

8.3. Exemplificao

1) Crie um programa que calcula as razes de uma equao do segundo grau. Caso o
coeficiente de x igual a zero, o programa deve retornar ao usurio que est equao

PET Matemtica UFSM

51

Introduo ao MATLAB
no do segundo grau. Alm disso, deve informar, baseado no valor de delta, como
sero as razes desta equao.
>> disp(' ==== Entre com a, b e c ==== ');
a = input(' Coeficiente de x^2 ');
b = input(' Coeficiente de x ');
c = input(' Termo independente de x ');
if a == 0.
disp(' ==== A equacao nao e do segundo grau
==== ');
a = input(' Coeficiente de x^2 - a <> 0 ');
end
break
delta = b^2-4.*a*c;
delta
if delta == 0.
ch = 0;
end
if delta < 0.
ch = -1;
end
if delta > 0.
ch = 1;
end
x(1) = (-b + sqrt(delta))/(2.*a);
x(2) = (-b - sqrt(delta))/(2.*a);
x
switch ch

PET Matemtica UFSM

52

Introduo ao MATLAB
case 0,
disp(' Raizes reais e iguais.')
case -1,
disp(' Raizes complexas conjugadas.')
otherwise,
disp(' Raizes reais e desiguais.')
end

Alternativamente, para encontrar as razes de uma funo do segundo grau, podemos


criar um arquivo do tipo function:
function [x1,x2]= raizes(a,b,c)
a = input(' Coeficiente de x^2 ');
b = input(' Coeficiente de x ');
c = input(' Termo independente de x ');
delta = sqrt(b*b - 4*a*c)
x1=(-b + delta)/2*a;
x2=(-b - delta)/2*a;
end

2) Criar um programa que avalie o IMC de indivduos. O programa deve se utilizar


dos comandos menu e inputdlg.
function imc
k = menu('AVALIAO FSICA - IMC','QUER VER SUA SITUAO
FSICA', ...
'FIM - PROGRAMA');
if k==1
dados = {'ENTRE COM O SEU PESO (kg):','ENTRE COM A
SUA ALTURA (m):'};
titulo = 'NDICE DE MASSA CORPREA IMC';
linhas=1;
resposta=inputdlg(dados,titulo,linhas);
peso=str2num(char(resposta(1)));
altura=str2num(char(resposta(2)));
format bank
indice = peso/(altura*altura);
disp(' ---------------------------------------------------------')
disp(' |PESO (kg) | ALTURA (m) | NDICE DE MASSA
CORPREA - IMC |')
disp(' ---------------------------------------------------------')

PET Matemtica UFSM

53

Introduo ao MATLAB

saida=[peso altura indice];


disp(sprintf('%10.2f %11.2f %17.2f',saida'))
disp(' ')
if indice < 20
disp(' ')
disp(' VOC DEVE ALIMENTAR-SE MELHOR, REDUZIR O
STRESS, ENGORDAR ')
disp(' ')
end
if indice >=
disp('
disp('
disp('
end

20 & indice <=25


')
TUDO OK!, MANTENHA A FORMA')
')

if indice > 25 & indice < 30


disp(' ')
disp(' VOC DEVE ALIMENTAR-SE MELHOR, REDUZIR O
PESO ')
disp(' ')
end
if indice >=
disp('
disp('
disp('
end
pause
imc

30
')
REPENSE O SEU MODO DE VIVER, OU ...')
')

else
disp('
disp('
disp('
disp('
disp('

')
-------------------------')
|OBRIGADO POR USAR: IMC |')
-------------------------')
')

end

3) Criar um programa que verifique se o nmero dado positivo, se sim determinar se


o mesmo par ou mpar.
function par_impar(n)
n = input('Entre com o nmero ')
if n<0 % se n negativo
disp ('O nmero dado negativo')
elseif rem(n,2)==0 % se nmero positivo e par
disp ('O nmero dado positivo e par')
else
disp('O nmero dado positivo e mpar')
end

PET Matemtica UFSM

54

Introduo ao MATLAB
4) 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.
l=input('Digite um valor para o numero de linhas da matriz A:');
c=input('Digite um valor para o numero de colunas da matriz
A:');
A=zeros(l,c);
b=0;
for i=1:l
for j=1:c
fprintf('Insira o numero (%d,%d):',i,j);
A(i,j)=input('');
if A(i,j)<0
b=b+1;
end
end
end
disp(A);
fprintf('A matriz A possui %d nmeros(s) menor(es) que
zero.',b);

PET Matemtica UFSM

55

Introduo ao MATLAB
9.

BIBLIOGRAFIA

PET MATEMTICA UFSM; Noes Bsicas de Programao em MATLAB. Santa


Maria, 2010.

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,


2010. 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

PET Matemtica UFSM

56