Você está na página 1de 40

Mini-curso de MATLAB e Octave para Clculo Numrico

PET - Engenharia de Computao Universidade Federal do Esprito Santo

http://www.inf.ufes.br/~pet

Sumrio
1 Introduo
1.1 1.2 Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4 4

2 Operaes simples entre escalares


2.1 2.2 2.3 2.4 2.5 2.6 Soma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subtrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multiplicao

5
5 5 5 6 6 6

Diviso Direta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diviso indireta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exponenciao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Representao de matrizes e vetores no MATLAB e Octave 4 Operaes simples entre matrizes


4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 Soma e subtrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multiplicao de uma matriz por um escalar . . . . . . . . . . . . . . . . . Multiplicao entre matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . Diviso direta de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . Diviso indireta de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . b Exponenciao A com b sendo um escalar . . . . . . . . . . . . . . . . . . Operao elemento por elemento . . . . . . . . . . . . . . . . . . . . . . . . Transposta de uma matriz . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 10
10 10 11 11 12 12 12 13

5 Razes reais 6 Resoluo de sistemas lineares 7 Interpolao polinomial


7.1 7.2 Interpolao pela resoluo de um sistema linear . . . . . . . . . . . . . . . Mtodo direto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13 14 17
17 18

8 Grcos em MATLAB e Octave


8.1 Grcos 2-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1 8.1.2 8.2 Coordenadas Cartesianas . . . . . . . . . . . . . . . . . . . . . . . . Coordenadas Polares . . . . . . . . . . . . . . . . . . . . . . . . . .

19
19 19 25 27

Grcos 3-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 Fluxo de Controle
9.1 9.2 9.3 9.4 Loop FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loop WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comando BREAK

33
33 33 34 34

Comando IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10 Arquivos-M: Scripts e Funo


10.1 Arquivo Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Arquivo Funo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35
35 39

1 Introduo
1.1 Matlab
O MATLAB (de MATrix LABoratory) um programa produzido pela Mathworks, Inc. (maiores informaes em

http://www.mathworks.com), e a grosso modo serve para traba-

lhar com matrizes e nmeros complexos da mesma forma como uma calculadora trabalha com nmeros reais. Alm disso, ele possui recursos de programao, agindo como uma linguagem procedural, semelhante a C, porm voltada para processamento numrico intensivo. Ele possui tambm programas de projeto de controle e recursos grcos. O MATLAB fornece tambm um conjunto de aproximadamente 200 subprogramas que solucionam problemas diversos tais como: lgebra matricial, aritmtica com complexos, sistemas de equaes lineares, determinao de autovalores e autovetores, soluo de equaes diferenciais, soluo de equaes no lineares, alm de representar e de dar subsdios (sub-mdulo) para a anlise e para sntese de sistemas lineares e no lineares. A interface do MATLAB composta basicamente por uma janela de comandos, com um prompt caracterstico (>>).

1.2 Octave
O Octave uma linguagem de programao de alto nvel, destinada ao tratamento de problemas para computao numrica. ocial do projeto: Ele um Software Livre, produzido por uma Maiores informaes disponveis no site grande equipe cheada por John W. Eaton.

http://www.gnu.org/software/octave/.

O Octave pode efetuar clculos aritmticos com nmeros reais, escalares complexos e matrizes; resolver sistemas de equaes algbricas; integrar funes sobre intervalos nitos e innitos e integrar sistemas de equaes diferenciais ordinrias e diferenciais algbricas. A interface com o programador basicamente atravs de uma linha de comando. Ele ainda gera grcos 2D e 3D, utilizando o Gnuplot. O Octave em grande parte compatvel com o MatLab. Os comandos apresentados nessa apostila servem tanto para Matlab quanto para o Octave. Para iniciar o Octave, apenas digite

octave

no termnial do Linux.

2 Operaes simples entre escalares


Conforme dito, um escalar uma matriz 1x1 em MATLAB e Octave. operaes entre dois escalares sero apresentadas a seguir. As principais

2.1 Soma
A operao "a + b"realiza a soma entre dois escalares. O exemplo 1 exibe sua execuo.

Exemplo 1: Soma entre dois escalares


1 2 3 4 5

> > 3 + 5

ans

= 8

2.2 Subtrao
O operador - responsvel pela subtrao. O prximo exemplo mostra esta operao.

Exemplo 2: Subtrao entre dois escalares


1 2 3 4 5

> > 4

ans

2.3 Multiplicao
Para realizar a multiplicao de dois escalares utiliza-se o operador "* ", conforme o exemplo abaixo.

Exemplo 3: Multiplicao entre dois escalares


1 2 3 4 5

> > 7

ans

= 14

2.4 Diviso Direta


A diviso direta realizada com uso da barra "/ ". Veja o exemplo a seguir.

Exemplo 4: Diviso direta entre dois escalares


1 2 3 4 5

> > 18

ans

= 3.6000

2.5 Diviso indireta


A diviso indireta a diviso realizada da direita para esquerda, ou seja, o divisor primeiro elemento. Nesse caso, utiliza-se o operador "\ ". O exemplo 5 mostra a diviso indireta de dois escalares.

Exemplo 5: Diviso indireta entre dois escalares


1 2 3 4 5

> > 10

ans

= 0.5000

2.6 Exponenciao
Para efetuar

ab

utiliza-se " "entre a base e o expoente. O exemplo 6 ilustra como realizar

a exponenciao de escalares.

Exemplo 6: Exponenciao entre dois escalares


1 2 3 4 5

> > 9 ^ 3

ans

= 729

3 Representao de matrizes e vetores no MATLAB e Octave


MATLAB trabalha essencialmente com um tipo de objeto, uma matriz retangular numrica (real ou complexa). Em algumas situaes, denominaes especcas so atribudas a matrizes 1 por 1, que so os escalares, e a matrizes com somente uma linha ou coluna, que so os vetores. A maneira mais fcil de se declarar matrizes fazendo a explicitao da lista de elementos na linha de comando. Uma matriz pode ser criada, atribuindo a uma varivel, valores representados entre colchetes, seguidos de ponto-e-vrgula. Os elementos das linhas so separados por espaos ou vrgulas, e as colunas, com ponto-e-vrgula. O exemplo 7 mostra formas de representao de uma matriz 3x3.

Exemplo 7: Formas de declarao de matrizes


1 2 3 4 5 6 7 8

> > A = [1 > > A A = 1 4 7

3;

6;

9];

2 5 8

3 6 9

Um vetor nada mais que uma matriz com uma de suas dimenses igual a 1, assim ele pode ser criado da mesma forma que uma matriz. No exemplo 8, tem-se um vetor-linha de dimenso 3, ou seja uma de uma matriz 1x3:

Exemplo 8: Um vetor linha


1 2 3 4 5 6

> > v = [1 > > v v = 1

3];

O exemplo 9 de um vetor-coluna de dimenso 3, ou matriz 3x1.

Exemplo 9: Um vetor coluna


1 2 3 4

> > v = > > v v =

[1;

2;

3];

5 6 7 8

1 2 3 Vale destacar que, da forma como foram apresentados a matriz ou o vetor, eles so armazenados na memria do programa, mas se quisermos que eles apaream na tela, ou seja, visualizar o contedo da varivel, devemos omitir o ponto-e-vrgula depois dos colchetes. Depois que o vetor criado, pode-se alterar um elemento acessando diretamente a sua posio. Observe o exemplo a seguir:

Exemplo 10: Acesso a uma posio de um vetor


1 2 3 4 5 6 7

> > v = [1 > > v v = 1

3];

> > v(2) = 0;

No comando v(2) = 0, v o nome da varivel vetor e 2 a posio cujo valor deve ser alterado, no caso para 0. Pode-se tambm acessar uma posio inexistente no vetor. Nesse caso, as posies que no existiam at a posio acessada so automaticamente anuladas. O exemplo 11, mostra o que acontece quando acessada a posio 5 do vetor do exemplo anterior.

Exemplo 11: Acesso a uma posio inexistente de um vetor


1 2 3 4 5 6

> > v(5) = 8; > > v v = 1 0 3 0 8

Repare que a nova dimenso do vetor agora 5, exatamente a posio que no existia antes do acesso, e que a posio 4 foi preenchida com 0, pois no existia antes do acesso a uma posio inexistente do vetor. Uma operao interessante criar uma matriz usando uma j denida. No exemplo 12, a matriz z composta de trs elementos, sendo que um deles uma matriz 1xn, ou vetor linha.

Exemplo 12: Criando uma matriz com um vetor linha como elemento
1 2 3 4 5 6

> > z = [4 > > z z = 4

v];

A matriz resultante uma matriz coma a dimenso 7, que devido aos dois elementos no pertencentes ao vetor v mais a dimenso deste, que 5.

4 Operaes simples entre matrizes


4.1 Soma e subtrao
A soma e a subtrao de duas matrizes seguem a mesma lgica para os escalares, ou seja, efetuada elemento por elemento. O exemplo 13 mostra essas operaes.

Exemplo 13: Adio e subtrao de entre duas matrizes 3x3


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

> > A = [3 > > B = [8 > > A B +

7 6

2; 4;

3 0

11 1

9; 0; 2

1 5

10]; 12];

ans

= 11 3 3 13 12 5 6 9 22

> > A B

ans

5
3

1 10

2
9

Vale lembrar que, caso as matrizes envolvidas sejam de dimenses diferentes, o programa acusar erro.

4.2 Multiplicao de uma matriz por um escalar


Na multiplicao de uma matriz por um escalar, cada um dos elementos da matriz multiplicado por este. O operador utilizado no comando mesmo que na multiplicao entre escalares. Veja o prximo exemplo, no qual A a mesma matriz do tpico anterior.

Exemplo 14: Multiplicao de uma matriz por um escalar


1 2 3 4 5 6

> > 5 A

ans

= 15 15 35 55 10 45

10

50

4.3 Multiplicao entre matrizes


Na multiplicao entre duas matrizes, A*B, o elemento i x j da matriz resultante o somatrio dos produtos entre os elementos das linhas i da primeira matriz pelos elementos das colunas j da segunda matriz. necessrio que o nmero de colunas da matriz A seja igual ao nmero de linhas de B, caso contrrio o programa acusar erro. A multiplicao entre duas matrizes pode ser vista no exemplo 15.

Exemplo 15: Multiplicao entre duas matrizes


1 2 3 4 5 6 7

> > AB

ans

= 28 42 28 35 74 56 36 120 124

As matrizes A e B so as mesmas do exemplo 4.1.

4.4 Diviso direta de matrizes


A diviso direta (A/B) entre duas matrizes equivalente a multiplicar a matriz A pela inversa de B. No exemplo 16, tem-se a diviso direta entre duas matrizes.

Exemplo 16: Diviso direta entre duas matrizes


1 2 3 4 5 6 7 8 9 10

> > A = [9 > > B = [8 > > B/A

4 3

0; 1;

3 10

6 8

4; 3;

0 4

9 9

2]; 8];

ans

= 0.7625 0.8625 0.3792 0.7458 2.1583

0.2583
0.0083

0.2750

0.3167

11

4.5 Diviso indireta de matrizes


A diviso indireta entre duas matrizes (A\B) equivalente a multiplicar a matriz B pela inversa de A. O exemplo abaixo mostra o resultado dessa operao entre as mesmas matrizes do exemplo anterior.

Exemplo 17: Diviso indireta entre duas matrizes


1 2 3 4 5 6

> > B\A

ans

= 1.92000 0.44667

0.38667
1.41333

2.88000
2.28000

0.25333
1.18667

1.14667

4.6 Exponenciao Ab com b sendo um escalar


Ab
representa a multiplicao com b fatores iguais matriz A. No exemplo abaixo, 2 efetuado o comando A .

Exemplo 18: Operao de exponenciao


1 2 3 4 5 6 7 8

> > A = [1 > > A^2

10

3;

6;

4];

ans

= 16 30 25 115 111 115 75 78 61

4.7 Operao elemento por elemento


O operador "."realiza uma dada operao, entre duas matrizes n x m, elemento por elemento. Se C = A.<operao>B, ento 19.

cij

aij <operao> bij .

Observe o exemplo

Exemplo 19: Multiplicao entre duas matrizes, elemento por elemento


1 2 3 4 5

> >

[7 = 56

2].[8

3]

ans

12

45

12

4.8 Transposta de uma matriz


O comando "'"calcula a transposta de uma matriz qualquer, ou seja, transforma as linhas em colunas, e vice-versa. No exemplo 20, encontrada a transposta da matriz A vista no tpico anterior.

Exemplo 20: Transposta de uma matriz


1 2 3 4 5 6 7 8

> > A'

ans

= 1 10 3 0 9 6 5 5 4

5 Razes reais
Para se encontrar as razes reais de um polinmio, basta utilizar a funo

roots( v ), que

retorna em um vetor coluna, as razes de um polinmio, cujos coecientes das potncias em ordem decrescente so os elementos do vetor v. No exemplo 21, as razes do polinmio x2 + 3x 4 so -4 e 1.

1 2 3 4 5 6

> >

roots (
=

Exemplo 21: Razes de polinmio


[1 , 3,

4]

ans

4
1

13

6 Resoluo de sistemas lineares


Considere o sistema linear abaixo:

. . .

a11 x1 + a12 x2 + ... + a1n xn = b1 a21 x1 + a22 x2 + ... + a2n xn = b2

an1 x1 + an2 x2 + ... + ann xn = bn


Esse sistema pode ser escrito, na forma de matrizes, como A*x = b, tal que:

Figura 1:

Sistema Ax = b
\
b

Pode-se calcular a soluo do sistema diretamente, usando os comandos x = A inversa de A por b.

ou x = inv(A)*b. Ambos os comandos fazem a diviso de b por A ou a multiplicao da Na resoluo de sistemas lineares por mtodos iterativos, interessante determinar se a soluo converge. Nesse caso, deve-se considerar os autovalores da matriz A. A seguir, alguns comandos teis na resoluo de sistemas lineares. exemplos, considere a seguinte matriz: A = [1 2 3; 4 5 6; 7 8 0]; Nos prximos

1 2 3 4 5 6 7

inv( A ): Calcula a inversa da matriz quadrada A; 1 Exemplo 22: Clculo da inversa de uma matriz > > inv ( A ) ans
=

1.7778
1.5556

0.8889

0.1111
0.2222

0.7778
0.2222

0.1111

0.1111

eig( A ): Retorna um vetor com os autovalores da matriz A;


matriz quadrada aquela que possui o mesmo nmero de linhas e de colunas.
14

1 Uma

1 2 3 4 5 6 7

> >

eig (
=

Exemplo 23: Clculo de autovalores de uma matriz


A )

ans

12.1229

0.3884 5.7345

[V, D] = eig( A ):

Produz matrizes de autovalores (D) e auto-vetores (V) da

matriz A, de forma que A*V = V*D. A matriz D a forma cannica de A menos uma matriz diagonal com os autovalores de A na diagonal principal. As colunas da matriz V so os auto-vetores de A;

1 2 3 4 5 6 7 8 9 10 11 12 13

> > V =

Exemplo 24: Clculo de auto-vetores e autovalores de uma matriz [ V, D ] = eig ( A )

0.2998 0.7075 0.6400


D = 12.1229 0 0

0.7471
0.6582

0.2763 0.3884
0.8791

0.0931

0 0

0.3884
0

5.7345

1 2 3 4 5

det( A ): Calcula o determinante da matriz A; Exemplo 25: Clculo do determinante de uma matriz > > det ( A ) ans
= 27

iplr( A ): Troca o lado esquerdo pelo lado direito de uma matriz;


15

1 2 3 4 5 6 7

> >

fliplr (
= 3 6 0

Exemplo 26: Troca de colunas de uma matriz


A )

ans

2 5 8

1 4 7

[L, U, P] = lu( A ): Na resoluo de um sistema linear pelo mtodo LU, pode-se


usar esse comando, que decompe A nas matrizes L (triangular inferior com os elementos da diagonal iguais a 1), U (triangular superior) e P (matriz da permutao).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

> > L =

[L,

U,

Exemplo 27: Decomposio LU de uma matriz P ] = lu ( A )

1.0000 0.1429 0.5714

0 1.0000 0.5000

0 0 1.0000

U = 7.0000 0 0 8.0000 0.8571 0 0 3.0000 4.5000

P = 0 1 0 0 0 1 1 0 0

16

7 Interpolao polinomial
Em muitas situaes, deseja-se extrair informaes de uma tabela ou derivar/integrar uma funo complexa. Nesse caso, pode-se fazer uma interpolao de um polinmio de grau funo num ponto no tabelado.

n pontos e obter-se n-1, para aproximar uma funo em estudo ou calcular o valor da

7.1 Interpolao pela resoluo de um sistema linear


Um dos mtodos de interpolao resolver um sistema linear A*x = b, em que A a matriz de Vandermonde dos pontos xi, em que x o vetor de coecientes do polinmio integrador e b o vetor de valores yi da funo em estudo nos pontos xi. Em notao de matrizes, o sistema linear ca:

Figura 2:

Sistema Ax = b

No MATLAB,

em que os elementos so potncias do vetor v, de forma que, A(i,j) = v(i)(n-j). O exemplo 28 mostra como utilizar o comando.

vander( v ) retorna a transposta da matriz de Vandermonde espelhada,

1 2 3 4 5 6 7

> >

vander
= 4 9 16

Exemplo 28: Transposta da matriz de Vandermonde espelhada


( [2 , 3, 4] )

ans

2 3 4

1 1 1

Assim, tem-se que realizar o comando

iplr( vander( v ) )', para que se encontre a

matriz de Vandermonde no formato correto. O prximo exemplo mostra como encontrar a matriz de Vandermonde do vetor [2; 3; 4], no formato conhecido:

> >

f l i p l r ( vander (

Exemplo 29: Matriz de Vandermonde


[2 , 3, 4] ) )'

17

2 3 4 5 6 7

ans

= 1 2 4 1 3 9 1 4 16

7.2 Mtodo direto


Pode-se tambm usar uma funo que retorne, de maneira direta, os coecientes do polinmio interpolador. Por exemplo:

p = poly( r ):

Retorna um vetor p de coecientes do polinmio cujas razes so O MATLAB apresenta polinmios como vetores-linha com os

os elementos de r.

coecientes em ordem decrescente de potncias. Assim, no exemplo 30 o polinmio 4 3 2 encontrado x 10x + 35x 50x + 24;

1 2 3 4 5

> >

poly (
= 1

Exemplo 30: Polinmio interpolador


[1 , 2, 3, 4] )

ans

10

35

50

24

p = polyt( x, y, n ):
o prximo exemplo.

Encontra os coecientes do polinmio p de grau n que se

aproxima da funo que se ajusta aos pontos (xi, yi), dado pelos vetores x e y. Veja

1 2 3 4 5

> >

polyfit (
= 1.0000

Exemplo 31: Polinmio interpolador de grau n


[1 , 2, 3] , [0 , 6, 14] , 2 )

ans

3.0000

4.0000 x2 + 3x 4.

O polinmio de grau 2 obtido no exemplo 31

18

8 Grcos em MATLAB e Octave


Em disciplinas como Clculo Numrico, Clculo II e Clculo III, os grcos podem ser muito teis para comparar mtodos computacionais de resoluo de problemas.

8.1 Grcos 2-D


Os grcos em duas dimenses so os mais comuns por serem de simples entendimento e representao. Tais grcos podem ser de coordenadas cartesianas ou polares.

8.1.1 Coordenadas Cartesianas

Figura 3:

Eixos cartesianos

Comandos para gerar grcos


plot( x, y ):

Gera grcos lineares com x sendo a varivel independente e y a

varivel dependente;

plot( x, y, z, w ):

Plota dois grcos (ou mais, dependendo do nmero de argu-

mentos). O MATLAB seleciona linhas diferentes para cada grco; No exemplo 32, so gerados dois grcos. Um deles referente ao par de vetores [1, 2, 3] e [4, 3, 6] e outro, ao par [1, 2, 3] e [5, 7, 6]. Os grcos podem ser vistos na gura 4.

> >

plot (

Exemplo 32: Dois grcos em uma s gura


[1 , 2, 3] , [4 , 3, 6] , [1 , 2, 3] , [5 , 7, 6] )

19

Figura 4:

Grco gerado no exemplo 32

semilogx( x, y ):

Gera grcos com y na escala linear e x na escala logartmica.

No exemplo 33 gerado um grco no qual o vetor [1, 2, 3] est na escala logartmica e [5, 4, 6] na linear. O grco gerado est na gura 5.

> >

Exemplo 33: Grco com x na escala logartmica semilogx ( [ 1 , 2 , 3 ] , [ 5 , 4 , 6 ] )

um eixo na escala logartima signica que o grco apresenta o log10 dos valores fornecidos para aquele eixo.
20

2 Ter

Figura 5:

Grco gerado no exemplo 33

semilogy( x, y ): loglog( x, y ):

Gera grcos com x na escala linear e y na escala logartmica.

Gera grcos com x e y nas escalas logartmicas.

Um grco no qual os vetores [1, 2, 3] e [5, 4 6] esto na escala logartmica est na gura 6. O exemplo 34 o comando utilizado para gerar tal grco.

> >

Exemplo 34: Grco com x e y na escala logartmica loglog ( [ 1 , 2 , 3 ] , [ 5 , 4 , 6 ] )

21

Figura 6:

Grco gerado no exemplo 34

Comandos auxiliares

title( 'texto' ):

Comando para adicionar um ttulo (texto) ao topo do grco; Escreve uma legenda no eixo x; Escreve uma legenda no eixo x; Escreve um texto no ponto (x,y). Se x e y so vetores, o

xlabel( 'texto' ): ylabel( 'texto' ):

text( x, y, 'texto' ): gtext( 'texto' ):


no grco;

texto escrito a cada ponto; Escreve um texto no ponto determinado pela posio do mouse

legend( 'texto1', 'texto2', ... ):

Coloca legendas nos grcos, na ordem em que

eles foram plotados, no canto superior direito da gura;

22

legend( 'texto1', 'texto2', 'location', 'pos' ):


southeast, southwest.

Coloca as legendas na posio

indicada por pos, que podem ser: north, south, east, weast, northeast, northwest,

grid on: grid o :

Adiciona grades no grco plotado; Retira as grades do grco corrente; Usa-se para plotar outro grco na mesma gura. Este

hold on e hold o :
sobrepor os grcos.

comando mantm o grco antigo at que o hold o seja usado. Assim, consegue-se

axis(v):

Este comando utilizado para representar o grco em uma determinada

faixa de valores determinada pelo vetor v. O vetor tem como elementos os valores mnimo e mximo dos eixos x e y ([xmin xmax ymin ymax]).

axis 'parmetro':

Se o parmetro for 'square', a funo transforma a regio do

grco em quadrada ou cbica. Se for 'tight', ela ajusta a regio de acordo com os dados. E se for 'normal', ela remove qualquer ajuste denido e ajusta o grco da melhor forma possvel.

plot ( x, y, 'parmetro' ):

'Parmetro' uma combinao de caractersticas,

tipo de linha, de marcador e de cor, que se deseja aplicar ao grco. No h ordem especca para a combinao dos parmetros nem necessrio determinar os trs. A tabela 1 exibe os tipos de parmetros que podem ser utilizados no comando plot para o MATLAB. J os parmetros para o comando plot no Octave so mostrados na tabela 2.

Cores
amarelo azul

Tabela 1: Opes do plot para MATLAB

Linhas
slida

Marcador
ponto quadrado crculo cruz X estrela tringulo

y b c w r k m g

 -. :

. S 0

tracejada trao-ponto ponteada

azul claro branco vermelho preto roxo verde

+
X *

tringulo invertido

3 Para

maiores informaes sobre os tipos de parmetros aceitos por axis, digite help axis no terminal.
23

Cores
azul branco ciano preto roxo verde vermelho

Tabela 2: Opes do plot para Octave

Linhas
slida

Marcador
cruz quadrado crculo

b w c k m g r

3 6 5 0 4 2 1

+
s o V X *

apenas pontos

tringulo invertido X estrela tringulo

No prximo exemplo, so criados dois grcos numa mesma gura, um para o seno (linha ponteada vermelha e com pontos marcados com

+)

e outro para o cosseno (linha

trao-ponto azul e com pontos marcados com quadrado). Os valores de x utilizados so 0,

/4, /2 e 3 /4 e .
e o ttulo do grco.

So tambm criados o nome dos eixos, uma legenda para os grcos

1 2 3 4 5 6 7

> > > > > > > > > > > > > >

Exemplo 35: Grcos do seno e do cosseno em uma mesma gura x = 0 : pi / 4 : pi ; plot ( x , sin ( x ) , ' r ' , x , cos ( x ) , ' b ' ) legend ( ' s e n o ' , ' c o s s e n o ' , ' l o c a t i o n ' , ' s o u t h w e s t ' ) t i t l e ( ' seno e cosseno ' ) xlabel ( ' e i x o x ' ) ylabel ( ' e i x o y ' ) grid on

24

Figura 7:

Grco gerado no exemplo 35 - Octave

8.1.2 Coordenadas Polares


Para representar um ponto em coordenadas polares necessitamos somente de uma semireta com origem em O e o ponto a ser representado. Dessa forma, o ponto descrito pelo ngulo entre o segmento OP e a semi-reta O e a magnitude desse segmento. Assim, P pode ser escrito como (,r).

25

Figura 8:

Coordenadas polares no Matlab

Para gerar grcos em coordenadas polares:

polar( ngulo, r, 'parmetros' ):


ponto.

Gera grcos polares com ngulo em radianos,

r uma funo do ngulo e parmetros so combinaes do tipo de linha, da cor e do

No exemplo 36, esto os comandos para gerar o grco, em coordenadas polares, r = sin(2*t)*cos(2*t). O grco obtido est na gura 9.

1 2 3

> > > > > >

Exemplo 36: Grco em coordenadas polares t = 0 : . 0 1 : 2 pi ; polar ( t , sin ( 2 t ) . cos ( 2 t ) , 'r ' ) t i t l e ( ' coordenadas p o l a r e s ' )

Figura 9: Grco gerado no exemplo 36 - Matlab

9: Grco gerado no exemplo 36 - Octave Figura

26

8.2 Grcos 3-D

plot3( x, y, z ):

Plota grcos no espao 3D. Observe, no exemplo 37, o comando

para gerar o grco (x, y, z)=(sen(t), cos(t), t). A gura 10 o grco obtido.

1 2 3 4

> > > > > > > >

Exemplo 37: Grco 3-D t = 0 : pi / 5 0 : 1 0 pi ; plot3 ( sin ( t ) , cos ( t ) , t ) grid on axis n o r m a l

Figura 10: Grco gerado no exemplo 37 - Matlab

Grco gerado no exemplo 37 - Octave


Figura 10:

27

mesh( x, y, z ):

Plota uma malha em 3D. Superfcies tipo do mesh so teis para

gerar grcos de funes de duas variveis. 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 a funo de 2 variveis.

meshgrid transforma o domnio especicado por

dois vetores em duas matrizes x e y. Essas matrizes ento so usadas para avaliar O exemplo 38 gera o grco referente funo f(x,y) =

sen(x2 +y 2 ) 2 (x2 +y 2 ) 2
1

O comando

eps no exemplo 38 representa a preciso da mquina e evita uma diviso

por zero na linha 3.

1 2 3 4

> > > > > > > >

Exemplo 38: Malha em 3D [ x , y ] = meshgrid ( 8 : . 5 : 8 , 8 : . 5 : 8 ) ; r = sqrt ( x . ^ 2 + y . ^ 2 ) + eps ; z = sin ( r ) . / r ; mesh ( x , y , z )

A gura 11 o grco gerado no exemplo anterior. A m de serem visualizadas as grades, a gura foi editada para um marcador do tipo ponto.

Figura 11: Grco gerado no exemplo 38 - Matlab

Grco gerado no exemplo 38 - Octave


Figura 11:

28

contour( z, w ):

Plota linhas de contorno em duas dimenses. Se z depender de

x e y, e w for uma constante, o resultado a projeo de um grco 3D no plano xy com w curvas de nvel. O exemplo 39 gera a gura 12, que o contorno em 2D da funo do exemplo anterior.

> >

contour (

Exemplo 39: Contorno em 2D


z, 10 )

Grco gerado no exemplo 39 - Matlab


Figura 12:

Grco gerado no exemplo 39 - Octave


Figura 12:

29

contour3( x, y, z, n ):
gerar tal contorno.

Plota contorno em 3D com n iso-linhas.

Na gura 13

tem-se o contorno 3D da funo do exemplo 38.

O exemplo 40 o comando pra

> >

contour3 ( x ,

Exemplo 40: Contorno em 3D


y, z, 40)

Grco gerado no exemplo 40 - Matlab


Figura 13:

Grco gerado no exemplo 40 - Octave


Figura 13:

30

surf( x, y, z ): surf (

Plota superfcie 3D. A superfcie 3D da funo do exemplo 38

gerada pelo comando do exemplo 41. O grco obtido est na gura 14.

Exemplo 41: Superfcie 3D


x, y, z )

> >

Figura 14: Grco gerado no exemplo 41 - Matlab

Grco gerado no exemplo 41 - Octave


Figura 14:

31

surface( x, y, z ):

Plota a superfcie de contorno 2D de um grco 3D. O exemplo

42 gera a gura 15, que o contorno 2D do grco 3D da funo do exemplo 38. A cor de cada ponto do grco proporcional ao valor que ele possui. Isso feito distribuindo-se cores para as faixas de valores assumidos pela funo.

> >

surface (

Exemplo 42: Superfcie 2D


x, y, z )

Grco gerado no exemplo 42 - Matlab


Figura 15:

Grco gerado no exemplo 42 - Matlab


Figura 15:

32

9 Fluxo de Controle
O MATLAB possui comandos de programao parecidos com os encontrados na maioria das linguagens de programao, tais como C, C++ e JAVA.

9.1 Loop FOR


No comando comando

for, a partir de uma condio inicial, enquanto no atingida a condio de Exemplo 43: Comando for

parada, uma seqncia de instrues deve ser executada. O exemplo 43 mostra o uso do

for.

1 2 3 4

> > v( w(

for
i i

i =1:5 i ; i );

) =

end

) = 2 v (

No exemplo anterior, o vetor v obtido [1, 2, 3, 4, 5] e w igual a 2*v. Uma importante observar que se deve sempre nalizar um loop

end. Pode-se utilizar mais de um loop dentro de um loop, mas deve-se lembrar que cada for deve ter seu prprio end.
Pode-se, tambm, fazer com que o incremento seja um valor diferente do unitrio, conforme o prximo exemplo.

for com um comando

1 2 3

> >

for
i

Exemplo 44: Comando for com decremento


i =5: 1:1 i ;

end

v(

) =

No exemplo 44 h um decremento unitrio no valor de i. O vetor v obtido o mesmo do exemplo 43.

9.2 Loop WHILE


O loop

while permite que uma ou mais linhas de comando sejam executadas um nmero Exemplo 45: Comando while

indenido de vezes, atravs do controle de uma condio lgica. Veja o exemplo 45.

1 2 3 4

> > x = 1; > > y = 5; > > y = yx ;

while

x<3

33

5 6

end

x = x +1;

No exemplo 45, as linhas de comando so executadas repetidamente at que x seja igual a 3. Assim, o valor nal obtido para y 10.

9.3 Comando BREAK


O comando um

while.

break serve para interromper a execuo de um loop,

tal como um

for ou

9.4 Comando IF
No comando

if, se uma expresso lgica satisfeita uma seqncia de comandos execuif e break. Exemplo 46: Comandos if e break

tada, caso contrrio uma outra seqncia ser executada. O exemplo abaixo ilustra a utilizao dos comandos

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

> > v = [1 > > > >

6 1

5];

if

while
v( i

= 1; )<0

break , else

v(

),

end

end ans

i +1;

= 1

ans

= 6

ans

= 3

No exemplo anterior, so impressos os elementos do vetor v at que seja encontrado um elemento negativo.

34

10 Arquivos-M: Scripts e Funo


O MATLAB e o Octave tambm podem executar uma seqncia de comandos que est armazenada em arquivos. Tais arquivos de disco so chamados arquivos-M em virtude de sua extenso ser do tipo .m. Um arquivo-M consiste de uma seqncia normal de linhas de comando do MATLAB/Octave, as quais podem conter chamadas ao prprio ou outros arquivos .m. Existem dois tipos de arquivo .m: scripts e funes. Os scripts so arquivos contendo seqncia de comandos, enquanto que os arquivos de funo permitem criar novas funes para serem utilizadas futuramente.

10.1 Arquivo Script


Quando um script chamado, MATLAB simplesmente executa os comandos encontrados no arquivo. Os scripts so teis quando a anlise de um problema exige longas seqncias de comando, o que cansativo para ser feito interativamente. Considere o arquivo seno.m, que contm os comandos para gerar o grco seno(x).

1 2 3 4 5 6 7 8

x = y =

plot ( x , y , t i t l e ( ' seno ' xlabel ( ' e i x o ylabel ( ' e i x o grid on pause

Exemplo 47: Arquivo-M para gerar o grco seno(x) 0 : pi / 8 : 2 pi ; sin ( x ) ;


' r :+ ' ) x' y' ) ) )

Na ltima linha existe o comando pause. Ele responsvel por parar a execuo dos comandos at que alguma tecla seja pressionada. Existem duas maneiras de executar um arquivo .m. A primeira , j no Octave / Matlab, escrever o nome do arquivo, sem necessidade de escrever a extenso .m, porm, necessrio que voc j esteja na pasta onde se encontra o script a ser executado. No exemplo 47, ao ser digitado

seno na linha de comando, ser gerado o grco seno(x),

que pode ser visto na gura 16, e as variveis x e y cam mantidas no espao de trabalho.

35

Figura 16:

Grco gerado pelo exemplo 47

A segunda maneira de executar um arquivo .m passando-o como parmetro ao abrir o octave. Por exemplo, digitando-se script seno.m. Note que se no

octave seno.m, o octave ser aberto j executar o houvesse o comando pause na ltima linha do script, o

octave seria aberto, as instrues do script seriam executadas e logo em seguida o octave seria fechado, juntamente com o grco gerado, no dando tempo para ver os resultados. Para fazer comentrios em um script, coloque % no comeo da linha. No exemplo 48, os textos %gera o graco de seno de x, % O titulo do graco seno e % usado para conseguir visualizar o grco so ignorados pelo interpretador.

1 2 3 4

x = 0: y =

%gera o g r a f i c o de seno de x

pi / 8 : 2 pi ; sin ( x ) ;
x , y ,

Exemplo 48: Arquivo-M comentado

plot (

' r :+ '

36

5 6 7 8 9

t i t l e ( ' s e n o ' ) % O t i t u l o do g r a f i c o seno xlabel ( ' e i x o x ' ) ylabel ( ' e i x o y ' ) grid on pause % usado para c o n s e g u i r v i s u a l i z a r o g r f i c o
Outros dois comandos muito usados em scripts so o

echo

e o

disp.

O echo serve para denir se as linhas digitadas no script devem ser exibidas ou no. No Exemplo 49, o echo no usado, fazendo com que somente a matriz C seja exibida na tela, por no conter o ponto e vrgula no nal do comando de multiplicao.

1 2 3 4 5 6

%matriz A %matriz B
B = [1 4 C = AB A = [1 2 3; 7; 4 2 5 5 6; 8; 7 3 8 6

Exemplo 49: Arquivo-M


9]; 9];

%m u l t i p l i c a o de A por B

Mas, colocando o comando echo on no incio do cdigo, a sada seria:

1 2 3 4 5 6 7 8 9 10 11

+ + +

%matriz A %matriz B
4 2 3; 7; 4 2 5 5

Exemplo 50: Sada do Exemplo 49


6; 8; 7 3 8 6 9]; 9];

+ A = [1

+ B = [1

%m u l t i p l i c a o de A por B

+ C = AB C = 14 32 50 32 77 122 50 122 194

Note que at mesmo os comentrios so impressos. O comando at que o comando

echo o

echo on continua ativo

seja seja executado. Assim, executando o script mostrado no

Exemplo 51, a sada seria a mostrada no Exemplo 52.

1 2 3

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Funo para c a l c u l a r as r a i z e s de uma equacao


37

echo

Exemplo 51: Usando o echo on e o echo o


on

4 5 6 7 8 9 10

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
y = [1

roots

2 (y)

8];

echo
A =

off

sqrt
on

(5820);

1 2 3 4 5 6 7 8 9 10 11 12 13 14

+ + + + +

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Funo para c a l c u l a r as r a i z e s de uma equacao % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


2 (y) 5 8];

echo

Exemplo 52: Sada da execuo do script do Exemplo 51

+ y = [1

roots ans =

0.12391 + 0.12391 1.75217 +


+ +

2.13317 i 2.13317 i 0.00000 i

echo

off

Como o comando

A = sqrt (5820);

est aps o echo o e possui um ponto e vrgula

no nal da linha, ele no foi exibido quando executou-se o script. O comando disp ('texto') serve para imprimir na tela a string que passada como parmetro. Tambm podemos passar como parmetro alguma varivel ou constante usada no programa. Exemplo 54. No Exemplo 53 mostrado o uso do disp e podemos ver sua sada no

1 2 3 4 5 6 7

disp disp

Exemplo 53: Usando o disp


( 'O V a l o r (

pi )

de

pi

' );

disp ( ' A p e r t e pause


x = y =

alguma

tecla

para

continuar

... ')

cos ( x ) ;

[0:0.01:10];

38

Exemplo 54: Sada da execuo do script do Exemplo 53


1 2 3 4 5

o c t a v e :1 > O Valor 3.1416 Aperte de

script

pi

: tecla para continuar ...

alguma

o c t a v e :2 >

10.2 Arquivo Funo


Um arquivo-M que contm a palavra "function"no incio da primeira linha ser interpretado como um arquivo funo. Uma funo difere de um script pelos argumentos que devem ser passados e pelas variveis que so denidas e manipuladas, que so locais funo e que no podem ser operadas globalmente no espao de trabalho. Como exemplo de uma funo criada no MATLAB, considere o arquivo shift.m, que desloca os elementos de um vetor uma casa direita.

1 2 3 4 5 6 7 8 9

% s h i f t d e s l o c a os elementos de um v e t o r uma casa a d i r e i t a . % s h i f t r e t o r n a o novo v e t o r . % velho_vetor eh um v e t o r l i n h a .


N =

function

Exemplo 55: Arquivo-M que cria a funo shift


novo_vetor = shift ( velho_vetor )

for

length (

velho_vetor i +1 ) = 0

); ( i );

i =1:N1 ) = velho_vetor ;

end

novo_vetor ( ( 1

novo_vetor

Alguns comentrios sobre arquivos do tipo funo: - A primeira linha declara o nome da funo e os parmetros de entrada e a varivel de sada. - necessrio que o arquivo .m tenha o mesmo nome da funo criada. - O smbolo % indica que o restante de uma linha um comentrio e deve ser ignorado. - As primeiras linhas comentadas descrevem o arquivo-M e so mostradas quando voc digita help

<nome

da funo>. Criar tais comentrios opcional.

- As variveis criadas dentro do escopo da funo no aparecem no espao de trabalho. A existncia do arquivo do exemplo 55 dene uma nova funo chamada shift, que usada como qualquer outra funo do MATLAB. Veja o prximo exemplo.

39

Exemplo 56: Uso da funo shift


1 2 3 4 5 6

> > v = [1 > > v = v = 0

4]; v )

shift (

40

Você também pode gostar

  • Bdii Tads 2013 01
    Bdii Tads 2013 01
    Documento18 páginas
    Bdii Tads 2013 01
    Cristiane Santos
    Ainda não há avaliações
  • Bdii Tads 2013 01
    Bdii Tads 2013 01
    Documento28 páginas
    Bdii Tads 2013 01
    Cristiane Santos
    Ainda não há avaliações
  • Aula 17
    Aula 17
    Documento41 páginas
    Aula 17
    Cristiane Santos
    Ainda não há avaliações
  • Aula2 PDF
    Aula2 PDF
    Documento46 páginas
    Aula2 PDF
    Cristiane Santos
    Ainda não há avaliações
  • Aula3 PDF
    Aula3 PDF
    Documento41 páginas
    Aula3 PDF
    Cristiane Santos
    Ainda não há avaliações
  • Aula1 PDF
    Aula1 PDF
    Documento47 páginas
    Aula1 PDF
    Cristiane Santos
    Ainda não há avaliações
  • Manual ABNT Latex
    Manual ABNT Latex
    Documento21 páginas
    Manual ABNT Latex
    Kurgan76
    Ainda não há avaliações
  • Algumas Coisas Sobre Latex
    Algumas Coisas Sobre Latex
    Documento75 páginas
    Algumas Coisas Sobre Latex
    Cristiane Santos
    Ainda não há avaliações
  • Bdii Tads 2011 01
    Bdii Tads 2011 01
    Documento36 páginas
    Bdii Tads 2011 01
    Cristiane Santos
    Ainda não há avaliações