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 1.2 Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4 4

2 Operaes simples entre escalares


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

5
5 5 5 6 6 6 6

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

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 4.9 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . Posto de uma matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8 11
11 11 12 12 13 13 13 14 14 14 15 16 17 17 18 21

4.10 Nmero de condio de uma matriz . . . . . . . . . . . . . . . . . . . . . . 4.11 Maior elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.12 Tamanho da matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.13 Tamanho do vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.14 Vetor igualmente espaado . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.15 Gerao de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.16 Mdulo dos elementos da matriz ou vetor . . . . . . . . . . . . . . . . . . .

5 Resoluo de sistemas lineares 6 Polinmios


6.1 6.2 6.3 Razes reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Avaliao de polinmio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Interpolao pela resoluo de um sistema linear . . . . . . . . . . .

23 26
26 26 27 27

6.3.2

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

28

7 Grcos em MATLAB e Octave


7.1 Grcos 2-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1 7.1.2 7.2 Coordenadas Cartesianas . . . . . . . . . . . . . . . . . . . . . . . . Coordenadas Polares . . . . . . . . . . . . . . . . . . . . . . . . . .

30
30 30 36 38

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

8 Fluxo de Controle
8.1 8.2 8.3 8.4 Loop FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Loop WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comando BREAK

44
44 44 45 45

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

9 Arquivos-M: Scripts e Funo


9.1 9.2 Arquivo Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquivo Funo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

1 2 3 4 5

> >

abs ( 5)

Exemplo 7: Mdulo de escalar

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

Exemplo 9: Um vetor linha


1 2 3 4 5 6

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

3];

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

Exemplo 10: 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 11: 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 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 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 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 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.

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


1 2 3 4 5 6

> > 5 A

ans

= 15 15 35 55 10 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 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 17, tem-se a diviso direta entre duas matrizes.

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

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 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 19: 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 20.

cij

aij <operao> bij .

Observe o exemplo

Exemplo 20: Multiplicao entre duas matrizes, elemento por elemento


1 2 3 4 5

> >

[7 = 56

2].[8

3]

ans

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 5 6 7 8

> > A'

ans

= 1 10 3 0 9 6 5 5 4

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 5 6 7 8 9

> > B = [1

3;4

6;7

9]

ans

= 1 4 7 2 5 8 3 6 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 2 3 4 5 6 7 8 9

> > A=[1 A = 1 16 > > 7

10 10 5 8

3;16 3 6 9

6;7

9]

max(A) ans=
16

10

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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

> > A=[1 A = 1 4 7 > > 2 5 8

3;4

6;7

9]

3 6 9

max(A, 5 ) ans =
5 5 7 5 5 8 2 3 5 6 9 4]

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

max( v , 3 )
15

21 22 23

ans

= 3 3 3 4

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 2 3 4 5 6 7 8 9 10 11 12 13 14 15

> > A=[7 A = 7 4 1 > > x = 7 xi = 1 3 8 2 5 8

3;4

9;1

6]

3 9 6

[ x , x i ]=

max(A)
9

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


1 2 3 4 5 6 7 8

> > v =[1 v = 1 > > x = xi = 2

3]

[ x , x i ]= 3 3

max( v )

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 2 3 4 5 6 7 8 9

A=[1 A = 1 4 > >

3;4

6]

2 5

3 6

[ n l , nc ]=

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 2 3 4 5 6 7

> A=[1 > A = 1 > >

3]

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.

1 2 3 4

> >

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

Exemplo 30: Vetor igualmente espaado

10

17

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 3 4 5

> > ones ( 2 , 3 )

ans

= 1 1 1 1 1 1

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 2 3 4 5 6

> > ones (3)

ans

= 1 1 1 1 1 1 1 1 1

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.

1 2 3 4 5 6

> > A = A = 0 0 0

zeros ( 3 , 2 )
0 0 0

Exemplo 33: Matriz de zeros

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

1 2 3 4

> >

ans

zeros ( 2 )
= 0 0

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

18

A=eye(n):

Retorna uma a matriz identidade de ordem 'n'.

No exemplo 35,

gerada a matriz A de ordem 3.

1 2 3 4 5 6

> > A = A = 1 0 0

eye ( 3 )
0 1 0 0 0 1

Exemplo 35: Matriz identidade

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.

1 2 3 4 5

> > A = A = 1 0

eye ( 2 , 3 )
0 1 0 0

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

A=hilb(n):

Retorna a matriz de Hilb de ordem n.

No exemplo 37, gerada a

matriz de Hilb de ordem 3.

1 2 3 4 5 6

> > A = A =

hilb ( 3 )

Exemplo 37: Matriz de Hilb

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.

1 2

> > A = A =

rand ( 2 , 3 )

Exemplo 38: Matriz aleatria

19

3 4 5

0.085231 0.681140

0.134837 0.634245

0.307846 0.658524

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

1 2 3 4 5

> >

ans

rand ( 2 )
=

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

0.14584 0.87865

0.39775 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 2 3 4 5 6 7 8 9 10 11

> A=[1 > A = 1 4 7 V = 4 8 > > V =

3;4

6;7

9]

2 5 8

3 6 9

diag (A, 1 )

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 2

> > A=[1 A =

3;4

6;7

9]

20

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

1 4 7 > > v= v = 1 5 9 > >

2 5 8

3 6 9

diag (A)

ans

diag ( v )
= 1 0 0 0 5 0 0 0 9

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 2 3 4 5 6 7 8 9 10 11 12 13 14

> > A=[1 A =

2; 3 4]

1 3
> >

2 4

ans

abs (A)
= 1 3 2 4

> > v=[1 v =

2]

21

15 16 17 18 19 20 21

1
> >

ans

abs ( v )
= 1 2

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
\
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 43: 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.
23

1 Uma

1 2 3 4 5 6 7

> >

eig (
=

Exemplo 44: 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 45: 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 46: Clculo do determinante de uma matriz > > det ( A ) ans
= 27

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


24

1 2 3 4 5 6 7

> >

fliplr (
= 3 6 0

Exemplo 47: 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 48: 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

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 3 4 5 6 7 8 9

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

1]

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

0]

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 4 5 6

> >

roots (
=

Exemplo 50: Razes de polinmio


[1 , 3,

4]

ans

4
1

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 3

> > p o l =[1 p o l=

1]

26

4 5 6 7 8 9 10 11 12 13 14

1 2

1 3]

> > p t o =[1 p t o= 1 > > 2

ans=

polyval ( p o l , p t o )
3 7 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 funo num ponto no tabelado.

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

n pontos e obter-se

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:

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 52 mostra como utilizar o comando.

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

> >

vander

Exemplo 52: Transposta da matriz de Vandermonde espelhada


( [2 , 3, 4] )

27

2 3 4 5 6 7

ans

= 4 9 16 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:

1 2 3 4 5 6 7

> >

f l i p l r ( vander (
= 1 2 4 1 3 9 1 4 16

Exemplo 53: Matriz de Vandermonde


[2 , 3, 4] ) )'

ans

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 O MATLAB apresenta polinmios como vetores-linha com os

os elementos de r.

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

1 2 3 4 5

> >

poly (
= 1

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

28

1 2 3 4 5

> >

polyfit (
= 1.0000

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

29

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] , [1 , 2, 3] , [5 , 7, 6] )

30

Figura 4:

Grco gerado no exemplo 56

semilogx( x, y ):

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

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

2 Ter

Figura 5:

Grco gerado no exemplo 57

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 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' ):

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;

33

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

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 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' ):


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

1 2 3

> > > > > >

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.

1 2 3 4

> > > > > > > >

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 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 62 gera o grco referente funo f(x,y) =

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

O comando

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

por zero na linha 3.

1 2 3 4

> > > > > > > >

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


Figura 12:

Grco gerado no exemplo 63 - Octave


Figura 12:

40

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

O exemplo 64 o comando pra

> >

contour3 ( x ,

Exemplo 64: Contorno em 3D


y, z, 40)

Grco gerado no exemplo 64 - Matlab


Figura 13:

Grco gerado no exemplo 64 - Octave


Figura 13:

41

surf( x, y, z ): surf (

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

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

Exemplo 65: Superfcie 3D


x, y, z )

> >

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, z )

Grco gerado no exemplo 66 - Matlab


Figura 15:

Grco gerado no exemplo 66 - Matlab


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 comando

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

parada, uma seqncia de instrues deve ser executada. O exemplo 67 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 68: Comando for com decremento


i =5: 1:1 i ;

end

v(

) =

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 Exemplo 69: Comando while

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

1 2 3 4

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

while

x<3

44

5 6

end

x = x +1;

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 execuif e break. Exemplo 70: 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.

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

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

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 72: Arquivo-M comentado

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.

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 73: 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 74: Sada do Exemplo 73


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

1 2 3

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


48

echo

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

+ + + + +

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % F u n o 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 76: Sada da execuo do script do Exemplo 75

+ 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 78. No Exemplo 77 mostrado o uso do disp e podemos ver sua sada no

1 2 3 4 5 6 7

disp disp

Exemplo 77: 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];

49

Exemplo 78: Sada da execuo do script do Exemplo 77


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 >

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.

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 79: 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 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 2 3 4 5 6

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

4]; v )

shift (

51

Você também pode gostar