Você está na página 1de 51

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

Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Operaes simples entre escalares

2.1

Soma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2

Subtrao

2.3

Multiplicao

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4

Diviso Direta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.5

Diviso indireta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.6

Exponenciao

2.7

Mdulo

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Representao de matrizes e vetores no MATLAB e Octave


4 Operaes simples entre matrizes

8
11

4.1

Soma e subtrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

4.2

Multiplicao de uma matriz por um escalar . . . . . . . . . . . . . . . . .

11

4.3

Multiplicao entre matrizes . . . . . . . . . . . . . . . . . . . . . . . . . .

12

4.4

Diviso direta de matrizes

. . . . . . . . . . . . . . . . . . . . . . . . . . .

12

4.5

13

4.6

Diviso indireta de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . .


b
Exponenciao A com b sendo um escalar . . . . . . . . . . . . . . . . . .

4.7

Operao elemento por elemento . . . . . . . . . . . . . . . . . . . . . . . .

13

4.8

Transposta de uma matriz . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

4.9

Posto de uma matriz

13

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

4.10 Nmero de condio de uma matriz . . . . . . . . . . . . . . . . . . . . . .

14

4.11 Maior elemento

15

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.12 Tamanho da matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

4.13 Tamanho do vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

4.14 Vetor igualmente espaado . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

4.15 Gerao de matrizes

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

4.16 Mdulo dos elementos da matriz ou vetor . . . . . . . . . . . . . . . . . . .

21

5 Resoluo de sistemas lineares

23

6 Polinmios

26

6.1

Razes reais

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

6.2

Avaliao de polinmio . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

6.3

Interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

6.3.1

27

Interpolao pela resoluo de um sistema linear . . . . . . . . . . .

6.3.2

Mtodo direto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 Grcos em MATLAB e Octave


7.1

28

30
30

Coordenadas Cartesianas . . . . . . . . . . . . . . . . . . . . . . . .

30

7.1.2
7.2

Grcos 2-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1

Coordenadas Polares

. . . . . . . . . . . . . . . . . . . . . . . . . .

36

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

38

8 Fluxo de Controle

44

8.1

Loop FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

8.2

Loop WHILE

44

8.3

Comando BREAK

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

8.4

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

45

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 Arquivos-M: Scripts e Funo

46

9.1

Arquivo Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

9.2

Arquivo Funo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

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.

Ele um Software Livre, produzido por uma

grande equipe cheada por John W. Eaton.


ocial do projeto:

Maiores informaes disponveis no site

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.

As principais

operaes entre dois escalares sero apresentadas a seguir.

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

>
> 3 + 5

ans

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

Exemplo 2: Subtrao entre dois escalares


1
2
3

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

>
> 7

ans

4
5

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

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

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

>
> 9 ^ 3

ans

729

2.7 Mdulo
A funo "abs"retorna o mdulo de um nmero. O exemplo 7 ilustra o uso da funo
abs.

1
2
3

>
>

abs ( 5)

Exemplo 7: Mdulo de escalar

ans=

4
5

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 8
mostra formas de representao de uma matriz 3x3.

Exemplo 8: Formas de declarao de matrizes


1

>
> A = [1

>
> A

3;

6;

9];

3
4

A =

5
6

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 9, tem-se um vetor-linha
de dimenso 3, ou seja uma de uma matriz 1x3:

Exemplo 9: Um vetor linha


1

>
> v = [1

3];

>
> v

3
4

v =

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

Exemplo 10: Um vetor coluna


1

>
> v =

[1;

2;

3];

>
> v

3
4

v =

5
6

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 11: Acesso a uma posio de um vetor


1

>
> v = [1

3];

>
> v(2) = 0;

>
> v

4
5

v =

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 12,


mostra o que acontece quando acessada a posio 5 do vetor do exemplo anterior.

Exemplo 12: Acesso a uma posio inexistente de um vetor


1

>
> v(5) = 8;

>
> v

3
4

v =

5
6

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
13, a matriz z composta de trs elementos, sendo que um deles uma matriz 1xn, ou
vetor linha.

Exemplo 13: Criando uma matriz com um vetor linha como elemento
1

>
> z = [4

v];

>
> z

3
4

z =

5
6

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.

10

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 14 mostra essas operaes.

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


1

>
> A = [3

2;

11

>
> B = [8

4;

>
> A B
+

4
5

ans

9;
0;

1
2

0
5

10];
12];

6
7

11

13

12

22

10
11
12
13

>
> A B

ans

14

15
16

10

17

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 15: Multiplicao de uma matriz por um escalar


1
2
3

>
> 5 A

ans

4
5

15

35

10

15

55

45

11

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

Exemplo 16: Multiplicao entre duas matrizes


1
2
3

>
> AB

ans

4
5

28

35

36

42

74

120

28

56

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 17, tem-se a diviso direta entre duas matrizes.

Exemplo 17: Diviso direta entre duas matrizes


1
2

>
> A = [9

0;

>
> B = [8

1;

10

>
> B/A

5
6

ans

4;
8

3;

9
4

2];
9

8];

7
8

0.7625

0.3792

0.2583

0.8625

0.7458

0.0083

10

0.2750

2.1583

0.3167

12

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 18: Diviso indireta entre duas matrizes


1
2

>
> B\A

ans

3
4

1.92000

0.44667

0.38667

2.88000

0.25333

1.41333

2.28000

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 19: Operao de exponenciao


1

>
> A = [1

>
> A^2

3
4

ans

10

3;

6;

4];

5
6

16

115

75

30

111

78

25

115

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

cij

aij <operao> bij .

Observe o exemplo

20.

Exemplo 20: Multiplicao entre duas matrizes, elemento por elemento


1
2
3

>
>

ans

[7

2].[8

3]

4
5

56

12

45

13

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 21, encontrada a transposta da matriz A vista no
tpico anterior.

Exemplo 21: Transposta de uma matriz


1
2
3
4

>
> A'

ans

5
6

10

4.9 Posto de uma matriz


O comando "rank"calcula o posto de uma matriz qualquer. No exemplo 22, encontrado
o posto de uma matriz.

Exemplo 22: Posto de uma matriz


1
2
3
4

>
> B = [1

ans

3;4

6;7

9]

7
8
9

>
>

ans

rank (B)
= 2

4.10 Nmero de condio de uma matriz


O comando "cond"calcula o nmero de condio de uma matriz qualquer. No exemplo
23, encontrado o nmero de condio da matriz B usada no exemplo anterior.

1
2

>
>

ans

cond (B)

Exemplo 23: Nmero de condio de uma matriz

= 6 . 0 2 6 2 e +16

14

4.11 Maior elemento


O comando "max"retorna o maior elemento de cada coluna. No exemplo 24, so encontrados os maiores elemetos de cada coluna de uma matriz.

Exemplo 24: Maior valor de cada coluna


1

>
> A=[1

10

3;16

A
=

10

16

5
8

10

9]

16

6;7

5
6
7

max(A)
ans=

>
>

8
9

Outra forma de usar o comando "max" passando dois argumentos de entrada, como
no exemplo 25.

O primeiro argumento uma matriz ou um vetor e o segundo um

escalar. O comando ir comparar os elementos da matriz ou do vetor com o escalar de


entrada e trocar pelo escalar os elementos menores que ele.

Exemplo 25: Usando a funo "max"para comparar elementos com um escalar xo
1

>
> A=[1

3;4

6;7

9]

A =

3
4

7
8
9

max(A, 5 )
ans =

>
>

10
11

12

13

14
15

>
> v =[1

16

v =

4]

17

18
19
20

>
>

max( v , 3 )
15

21

ans

22

23

Existe mais uma forma de usar esse comando. Se for usado sobre uma matriz retorna
o maior elemento da coluna e a linha que o elemeto est. Se for usado sobre um vetor
retorna o maior elemento e sua posio.

No exemplo 26 em 'x' armazenado o maior

valor de cada coluna da matriz e em 'xi' a linha de cada elemento. No exemplo 27 em 'x'
armazenado o maior elemento do vetor e em 'xi' a sua posio.

Exemplo 26: Outra forma de usar a funo "max"sobre matriz


1

>
> A=[7

A =

3;4

9;1

6]

3
4

max(A)

>
>

[ x , x i ]=

x =

10

11

12
13

xi =

14

15

Exemplo 27: Outra forma de usar a funo "max"sobre vetor


1

>
> v =[1

3]

v =

5
6

>
>

x =

xi =

max( v )

[ x , x i ]=
3
3

4.12 Tamanho da matriz


O comando "size"retorna a quantidade de linha e de colunas de uma matriz. No exemplo
28, so encontrados a quantidade de linhas e colunas de uma matriz.

16

Exemplo 28: Quantidade de linhas e colunas


1

A=[1

3;4

6]

A
=

3
4

6
7

>
>

[ n l , nc ]=

8
9

size (A)

n l =2
nc=3

4.13 Tamanho do vetor


O comando "length"retorna a quantidade de elementos de um vetor. No exemplo 29,
encontrado a quantidade de elementos de um vetor.

Exemplo 29: Quandade de elementos


1

> A=[1
>

A
=

3]

4
5
6
7

length (A)
ans=3

>
>

4.14 Vetor igualmente espaado


O comando "linspace"gera um vetor igualmente espaado tendo uma base e um limite
e a quantidade de elementos desejados. No exemplo 30, gerado um vetor igualmente
espaado.

Exemplo 30: Vetor igualmente espaado

1
2

linspace ( 1 , 1 0 , 1 0 )
ans=

>
>

3
4

17

10

4.15 Gerao de matrizes

A=ones(n,m):

Retorna uma matriz n por m com todos os elementos sendo '1'.

No exemplo 31, gerada a matriz A 2 por 3.

Exemplo 31: Matriz de uns


1
2

>
> ones ( 2 , 3 )

ans

3
4

Essa funo pode ser usada s com um parmetro gerando uma matriz quadrada
como no exemplo 32.

Exemplo 32: Outra de forma de usar a funo "ones"


1

>
> ones (3)

ans

3
4

A=zeros(n,m):

Retorna uma matriz n por m com todos os elementos sendo '0'.

No exemplo 33, gerada a matriz A 3 por 2.

zeros ( 3 , 2 )

>
> A
=

Exemplo 33: Matriz de zeros

A
=

3
4

Essa funo pode ser usada s com um parmetro gerando uma matriz quadrada
como no exemplo 34.

Exemplo 34: Outra forma de usar a funo "zeros"

1
2

>
>

ans

zeros ( 2 )
=

3
4

18

A=eye(n):

Retorna uma a matriz identidade de ordem 'n'.

No exemplo 35,

gerada a matriz A de ordem 3.

Exemplo 35: Matriz identidade

eye ( 3 )

>
> A
=

A =

3
4

Essa funo pode ser usada com dois parmetros, indicando o nmero de linhas e
colunas. No exemplo 36, gerada uma matriz A 3 por 2.

Exemplo 36: Outra forma de usar a funo "eye"

eye ( 2 , 3 )

>
> A
=

A =

3
4

A=hilb(n):

Retorna a matriz de Hilb de ordem n.

No exemplo 37, gerada a

matriz de Hilb de ordem 3.

>
> A
=

Exemplo 37: Matriz de Hilb

hilb ( 3 )

A
=

3
4

1.00000

0.50000

0.33333

0.50000

0.33333

0.25000

0.33333

0.25000

0.20000

A=rand(n,m):

Retorna a matriz n por m com seus elementos gerados aleatoria-

mente entre 0 e 1. No exemplo 38, gerada a matriz A 2 por 3.

rand ( 2 , 3 )

>
> A
=

Exemplo 38: Matriz aleatria

A
=

19

3
4

0.085231

0.134837

0.307846

0.681140

0.634245

0.658524

Essa funo pode ser usada s com um parmetro gerando uma matriz quadrada
como no exemplo 39.

Exemplo 39: Outra forma de usar a funo "rand"

1
2

>
>

ans

rand ( 2 )
=

3
4

0.14584

0.39775

0.87865

0.82461

V=diag(A,n):

Retorna um vetor coluna com os elementos da diagonal 'n' da

matriz B. Se a diagonal desejada for a diagonal principal, o 'n' ser indicado por '0'.
Caso seja uma diagonal abaixo da diagonal principal o 'n' ser um nmero negativo,
sendo a diagonal logo abaixo da principal indicada por '-1', e se for acima, o 'n' ser
um nmero positivo, sendo a diagonal logo acima da principal indicada por '1'. No
exemplo 40, gerado o vetor V com os elementos da diagonal '-1' da matriz A.

Exemplo 40: Vetor com a diagonal


1

> A=[1
>

A
=

3;4

6;7

9]

3
4

>
> V
=

V
=

diag (A, 1 )

9
10

11

Essa funo pode ser usada s com um parmetro, gerando um vetor coluna contendo a diagonal principal, ou sobre vetores, gerando uma matriz diagonal, como
no exemplo 41.

Exemplo 41: Outras formas de usar a funo "diag"


1

>
> A=[1

A =

3;4

6;7

9]

20

3
4

diag (A)

>
> v=

v =

10
11

12

13

14

>
>

15

ans

16

diag ( v )
=

17
18

19

20

4.16 Mdulo dos elementos da matriz ou vetor


O comando "abs"que usado para determinar o mdulo de um escalar tambm pode ser
usado sobre matrizes e vetores como no exemplo 42.

Quando usado sobre matrizes ou

vetores ele retornando uma matriz ou vetor com o mdulo de todos os elementos.

Exemplo 42: Mdulo dos elementos de uma matriz ou vetor


1

>
> A=[1

2; 3 4]

A =

3
4
5

1
3

6
7
8

>
>

ans

2
4

abs (A)
=

9
10

11

12
13

>
> v=[1

14

v =

2]

21

15
16

17
18
19

>
>

ans

abs ( v )
=

20
21

22

5 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

Pode-se calcular a soluo do sistema diretamente, usando os comandos x = A

ou x = inv(A)*b. Ambos os comandos fazem a diviso de b por A ou a multiplicao da


inversa de A por b.
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];

1
2
3

inv( A ): Calcula a inversa da matriz quadrada A; 1


Exemplo 43: Clculo da inversa de uma matriz
>
> inv ( A )
ans

4
5

1.7778

0.8889

0.1111

1.5556

0.7778

0.2222

0.1111

0.2222

0.1111

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

1 Uma

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


23

Nos prximos

1
2
3

>
>

ans

eig (

Exemplo 44: Clculo de autovalores de uma matriz


A )

4
5

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;

>
>

Exemplo 45: Clculo de auto-vetores e autovalores de uma matriz


[ V, D ] = eig ( A )

2
3

V =

0.2998
0.7075
0.6400

5
6
7

0.7471
0.6582

0.2763
0.3884

0.0931

0.8791

8
9

D =

10
11

12.1229

12

0.3884

13

5.7345

1
2
3

det( A ): Calcula o determinante da matriz A;


Exemplo 46: Clculo do determinante de uma matriz
>
> det ( A )
ans

4
5

27

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


24

1
2
3

>
>

ans

fliplr (

Exemplo 47: Troca de colunas de uma matriz


A )

4
5

[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).

>
>

[L,

Exemplo 48: Decomposio LU de uma matriz


P ] = lu ( A )

U,

2
3

L =

4
5

1.0000

0.1429

1.0000

0.5714

0.5000

1.0000

12

7.0000

8.0000

13

0.8571

3.0000

14

4.5000

8
9
10

U =

11

15
16
17

P =

18
19

20

21

25

6 Polinmios
Os polinmios no Octave/MatLab so representados por um vetor, cujos coecientes das
potncias em ordem decrescente so os elementos do vetor. No exemplo 49 temos a
2
2
representao do polinmio x + x + 1 e do polinmio 2x 5x.

Exemplo 49: Representao de polinmios


1
2

>
> p o l i n o m i o 1 =[1

1]

polinomio1 =

5
6
7

>
> p o l i n o m i o 2 =[2

0]

polinomio2 =

6.1 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. No exemplo 50, as razes do


2
polinmio x + 3x 4 so -4 e 1.

1
2
3

>
>

ans

roots (

Exemplo 50: Razes de polinmio


[1 ,

3,

4]

4
5

6.2 Avaliao de polinmio


Para avaliar um polmio em vrios pontos pode-se usar a funo polyval. Como entrada
temos o vetor com os coecientes e um vetor com os pontos a serem avaliados.

Exemplo 51: Avaliao do polinmio


1
2

>
> p o l =[1

1]

p o l=

26

5
6
7

>
> p t o =[1

3]

p t o=

9
10
11
12

>
>

polyval ( p o l , p t o )

ans=

13

14

13

6.3 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

n pontos e obter-se

n-1, para aproximar uma funo em estudo ou calcular o valor da

funo num ponto no tabelado.

6.3.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:

No MATLAB,

Sistema Ax = b

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

em que os elementos so potncias do vetor v, de forma que, A(i,j) = v(i)(n-j). O exemplo


52 mostra como utilizar o comando.

>
>

vander

Exemplo 52: Transposta da matriz de Vandermonde espelhada


(

[2 ,

3,

4]

27

2
3

ans

4
5

16

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:

1
2
3

f l i p l r ( vander (

>
>

ans

Exemplo 53: Matriz de Vandermonde


[2 ,

3,

4]

)'

4
5

16

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

os elementos de r.

O MATLAB apresenta polinmios como vetores-linha com os

coecientes em ordem decrescente de potncias. Assim, no exemplo 54 o polinmio


4
3
2
encontrado x 10x + 35x 50x + 24;

1
2
3

>
>

ans

poly (

Exemplo 54: Polinmio interpolador


[1 ,

2,

3,

4]

4
5

10

35

p = polyt( x, y, n ):

50

24

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
o prximo exemplo.

28

Exemplo 55: Polinmio interpolador de grau n

1
2
3

>
>

ans

polyfit (

[1 ,

2,

3]

[0 ,

6,

14]

4
5

1.0000

3.0000

4.0000

O polinmio de grau 2 obtido no exemplo 55

29

x2 + 3x 4.

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

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

7.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 56, 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 56: Dois grcos em uma s gura


[1 ,

2,

3] ,

[4 ,

3,

6] ,

30

[1 ,

2,

3] ,

[5 ,

7,

6]

Figura 4:

semilogx( x, y ):

Grco gerado no exemplo 56

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

No exemplo 57 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 57: Grco com x na escala logartmica


semilogx ( [ 1 , 2 , 3 ] , [ 5 , 4 , 6 ] )

2 Ter

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

Figura 5:

semilogy( x, y ):

loglog( x, y ):

Grco gerado no exemplo 57

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 58 o comando utilizado para gerar tal grco.

>
>

Exemplo 58: Grco com x e y na escala logartmica


loglog ( [ 1 , 2 , 3 ] , [ 5 , 4 , 6 ] )

32

Figura 6:

Grco gerado no exemplo 58

Comandos auxiliares

title( 'texto' ):

xlabel( 'texto' ):

Escreve uma legenda no eixo x;

ylabel( 'texto' ):

Escreve uma legenda no eixo x;

text( x, y, 'texto' ):

Comando para adicionar um ttulo (texto) ao topo do grco;

Escreve um texto no ponto (x,y). Se x e y so vetores, o

texto escrito a cada ponto;

gtext( 'texto' ):

Escreve um texto no ponto determinado pela posio do mouse

no grco;

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

Coloca legendas nos grcos, na ordem em que

eles foram plotados, no canto superior direito da gura;

33

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

Coloca as legendas na posio

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

grid on:

Adiciona grades no grco plotado;

grid o :

Retira as grades do grco corrente;

hold on e hold o :

Usa-se para plotar outro grco na mesma gura.

Este

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

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

Tabela 1: Opes do plot para MATLAB

Linhas

Marcador

amarelo

slida

ponto

azul

tracejada

quadrado

azul claro

trao-ponto

-.

crculo

branco

ponteada

cruz

vermelho

preto

estrela

roxo

tringulo

verde

3 Para

tringulo invertido

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

Tabela 2: Opes do plot para Octave

Cores

Linhas

Marcador

azul

slida

cruz

branco

apenas pontos

quadrado

ciano

crculo

preto

tringulo invertido

roxo

verde

estrela

vermelho

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 .

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

e o ttulo do grco.

>
>

>
>

>
>

>
>

>
>

>
>

>
>

Exemplo 59: 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

35

Figura 7:

Grco gerado no exemplo 59 - Octave

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

36

Figura 8:

Coordenadas polares no Matlab

Para gerar grcos em coordenadas polares:

polar( ngulo, r, 'parmetros' ):

Gera grcos polares com ngulo em radianos,

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


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

>
>

>
>

>
>

Exemplo 60: 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 60 - Matlab

9:
Grco gerado no
exemplo 60 - Octave
Figura

37

7.2 Grcos 3-D

plot3( x, y, z ):

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

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

>
>

>
>

>
>

>
>

Exemplo 61: 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 61 - Matlab

Grco gerado no exemplo 61 - Octave


Figura 10:

38

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

meshgrid transforma o domnio especicado por

dois vetores em duas matrizes x e y. Essas matrizes ento so usadas para avaliar
a funo de 2 variveis.

O exemplo 62 gera o grco referente funo f(x,y) =

sen(x2 +y 2 ) 2
1

(x2 +y 2 ) 2

O comando

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

por zero na linha 3.

>
>

>
>

>
>

>
>

Exemplo 62: 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 62 - Matlab

Grco gerado no exemplo 62 - Octave


Figura 11:

39

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 63 gera a gura 12, que o contorno em 2D
da funo do exemplo anterior.

>
>

contour (

Exemplo 63: Contorno em 2D


z,

10

Grco gerado no
exemplo 63 - Matlab

Grco gerado no exemplo 63 - Octave

Figura 12:

Figura 12:

40

contour3( x, y, z, n ):

Plota contorno em 3D com n iso-linhas.

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

Na gura 13

O exemplo 64 o comando pra

gerar tal contorno.

>
>

contour3 ( x ,

Exemplo 64: Contorno em 3D


y,

z,

40)

Grco gerado no
exemplo 64 - Matlab

Grco gerado no exemplo 64 - Octave

Figura 13:

Figura 13:

41

surf( x, y, z ):

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

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

>
>

surf (

Exemplo 65: Superfcie 3D


x,

y,

Figura 14:
Grco gerado no
exemplo 65 - Matlab

Grco gerado no exemplo 65 - Octave


Figura 14:

42

surface( x, y, z ):

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

66 gera a gura 15, que o contorno 2D do grco 3D da funo do exemplo 62.


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 66: Superfcie 2D


x,

y,

Grco gerado no
exemplo 66 - Matlab

Grco gerado no exemplo 66 - Matlab

Figura 15:

Figura 15:

43

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

8.1 Loop FOR


No comando

for, a partir de uma condio inicial, enquanto no atingida a condio de

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

for.

Exemplo 67: Comando for

>
>

for

v(

) =

w(

) = 2 v (

end

i =1:5
i ;
i

);

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

for com um comando

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

v(

end

Exemplo 68: Comando for com decremento


i =5: 1:1

) =

i ;

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


do exemplo 67.

8.2 Loop WHILE


O loop

while permite que uma ou mais linhas de comando sejam executadas um nmero

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

Exemplo 69: Comando while


1

>
> x = 1;

>
> y = 5;

>
>

y = yx ;

while

x<3

44

5
6

x = x +1;

end

No exemplo 69, as linhas de comando so executadas repetidamente at que x seja


igual a 3. Assim, o valor nal obtido para y 10.

8.3 Comando BREAK


O comando
um

while.

break serve para interromper a execuo de um loop,

tal como um

for ou

8.4 Comando IF
No comando

if, se uma expresso lgica satisfeita uma seqncia de comandos execu-

tada, caso contrrio uma outra seqncia ser executada.


O exemplo abaixo ilustra a utilizao dos comandos

if e break.

Exemplo 70: Comandos if e break


1

>
> v = [1

>
>

>
>

6
7
8

v(
=

end
ans

5];

= 1;

while

if

1
)<0

break , else

v(

),

end

i +1;

10
11
12
13

ans

14

15
16
17
18

ans

19
20

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

45

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

9.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).

x =

y =

3
4
5
6
7
8

Exemplo 71: Arquivo-M para gerar o grco seno(x)


0 : pi / 8 : 2 pi ;
sin ( x ) ;

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

' 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 71, 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.

46

Figura 16:

Grco gerado pelo exemplo 71

A segunda maneira de executar um arquivo .m passando-o como parmetro ao abrir

octave seno.m, o octave ser aberto j executar o


houvesse o comando pause na ltima linha do script, o

o octave. Por exemplo, digitando-se


script seno.m. Note que se no

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
72, 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

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

Exemplo 72: Arquivo-M comentado

x = 0:
y =

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

plot (

' r :+ '

47

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 73, 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.

Exemplo 73: Arquivo-M

%matriz A

A = [1

6;

9];

%matriz B

3;

B = [1

7;

8;

9];

%m u l t i p l i c a

C = AB

o de A por B

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

Exemplo 74: Sada do Exemplo 73

%matriz A

+ A = [1

+ B = [1

+ C = AB

C =

3;

6;

9];

7;

8;

9];

%matriz B

%m u l t i p l i c a

o de A por B

8
9

14

32

50

10

32

77

122

11

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 75, a sada seria a mostrada no Exemplo 76.

1
2
3

echo

Exemplo 75: Usando o echo on e o echo o


on

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% F u n o para c a l c u l a r as r a i z e s de uma equacao
48

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

y = [1

6
7
8

roots

echo

9
10

A =

(y)
off

sqrt

(5820);

Exemplo 76: Sada da execuo do script do Exemplo 75

echo

+ y = [1

8];

on

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% F u n o para c a l c u l a r as r a i z e s de uma equacao
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

roots
ans =

8];

(y)

0.12391 +
0.12391
1.75217 +

9
10
11

2.13317 i
2.13317 i
0.00000 i

12
13

14

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.

No Exemplo 77 mostrado o uso do disp e podemos ver sua sada no

Exemplo 78.

1
2
3

disp
disp

Exemplo 77: Usando o disp


( 'O V a l o r
(

pi )

disp ( ' A p e r t e
pause

x =

y =

de

pi

alguma

' );

tecla

para

continuar

[0:0.01:10];

cos ( x ) ;

49

... ')

Exemplo 78: Sada da execuo do script do Exemplo 77


1

o c t a v e :1 >

O Valor

script

de

pi

3.1416

Aperte

o c t a v e :2 >

alguma

tecla

para

continuar

...

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

function

Exemplo 79: Arquivo-M que cria a funo shift


novo_vetor =

shift (

velho_vetor

% 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 =

2
3

6
7

for

length (

velho_vetor

);

i =1:N1

novo_vetor (

end

novo_vetor

i +1
) = 0

) = velho_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 79 dene uma nova funo chamada shift, que
usada como qualquer outra funo do MATLAB. Veja o prximo exemplo.

50

Exemplo 80: Uso da funo shift


1

>
> v = [1

>
> v =

4];

shift (

3
4

v =

5
6

51

Você também pode gostar